Commit graph

8169 commits

Author SHA1 Message Date
Vadim Petrochenkov
52acc05f63 Rework stability annotation pass 2015-11-18 01:24:20 +03:00
bors
b31cc644d1 Auto merge of #29766 - oli-obk:impl_item, r=nikomatsakis
[breaking change]

I'm not sure if those renames are ok. [TokenType::Tt* to TokenType::*](https://github.com/rust-lang/rust/pull/29582) was obvious, but for all those Item-enums it's less obvious to me what the right way forward is due to the underscore.
2015-11-17 18:24:19 +00:00
Vadim Petrochenkov
4a850159cd Remove TyParen from HIR 2015-11-16 22:49:47 +03:00
Oliver Schneider
d09220de13 rename ast::ImplItem_::*ImplItem to ast::ImplItemKind::* 2015-11-16 10:35:30 +01:00
Oliver Schneider
e36872da5b ImplItem_ -> ImplItemKind rename 2015-11-16 10:35:30 +01:00
Oliver Schneider
eaaa60dbea rename ImplItem_::*ImplItem to ImplItem_::*
[breaking change]
2015-11-16 10:34:45 +01:00
bors
531b0539b7 Auto merge of #29788 - mitaa:module_name, r=arielb1
f357d55 caused a regression by retrieving item names from metadata, while previously using the last element of its absolute path (which in the case of a root module is the prefixed crate name since the stored path in metadata is empty)

fixes #28927
2015-11-15 23:58:26 +00:00
Ariel Ben-Yehuda
5982594c7e address review comments 2015-11-15 20:11:42 +02:00
Ariel Ben-Yehuda
4a16b562a8 fix remaining bugs 2015-11-15 19:22:32 +02:00
Ariel Ben-Yehuda
c998057770 add a global evaluation cache 2015-11-15 19:22:32 +02:00
Ariel Ben-Yehuda
8943d5a4a4 introduce evaluate_obligation_conservatively and use it 2015-11-15 19:22:32 +02:00
Ariel Ben-Yehuda
9c6d35d037 evaluate projections outside the outer probe in recursive evaluation 2015-11-15 19:22:32 +02:00
Ariel Ben-Yehuda
f37b4fe84f put projections in RFC447 order 2015-11-15 19:22:32 +02:00
Ariel Ben-Yehuda
a43533a1f5 simplify and reduce the size of EvaluationResult 2015-11-15 19:22:32 +02:00
Niko Matsakis
37795baf5f simplify HIR folder so that it only maps 1 item to 1 item,
removing a bunch of asserts
2015-11-13 20:22:07 -05:00
mitaa
02f9a49131 Store a valid name for the root module in metadata 2015-11-13 09:05:38 +01:00
bors
3bd622f94c Auto merge of #29764 - nrc:stats, r=nikomatsakis
Emits loc, and node count - before and after expansion.

E.g.,

```
rustc: x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore
Lines of code:             32060
Pre-expansion node count:  120205
Post-expansion node count: 482749
```

r? @nikomatsakis
2015-11-12 04:06:48 +00:00
Vadim Petrochenkov
fba1926a2f Fix hygiene regression in patterns 2015-11-12 01:49:23 +03:00
Nick Cameron
f7dc917ba4 Add -Zinput-stats
Emits loc, and node count - before and after expansion.

E.g.,

```
rustc: x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore
Lines of code:             32060
Pre-expansion node count:  120205
Post-expansion node count: 482749
```
2015-11-12 09:23:37 +13:00
bors
19bdf87e8c Auto merge of #29741 - Manishearth:fix-flowgraph, r=alexcrichton
None
2015-11-11 09:15:24 +00:00
Manish Goregaokar
0c327a7859 Fix help text for flowgraph debug options 2015-11-10 14:49:36 +05:30
Alex Crichton
3d28b8b98e std: Migrate to the new libc
* Delete `sys::unix::{c, sync}` as these are now all folded into libc itself
* Update all references to use `libc` as a result.
* Update all references to the new flat namespace.
* Moves all windows bindings into sys::c
2015-11-09 22:55:50 -08:00
Kevin Butler
c0a3538315 librustc: dont warn for inside of items when the parent is dead 2015-11-08 02:04:34 +00:00
bors
bb9b5f5ede Auto merge of #29666 - Manishearth:rollup, r=Manishearth
- Successful merges: #29617, #29622, #29656, #29659, #29660
- Failed merges:
2015-11-07 02:26:45 +00:00
Manish Goregaokar
29c32cae2a Rollup merge of #29656 - arcnmx:static-extern, r=alexcrichton
This is currently done for functions but not public static symbols.
2015-11-07 06:44:45 +05:30
bors
1e3e7e73c6 Auto merge of #29551 - arcnmx:target-family, r=alexcrichton
Allow the changing of `target_family` through flexible configuration. The whole computing world isn't just a binary of *nix and Windows! Makes porting `libstd` and co to new platforms a lot less painful.
2015-11-07 00:42:10 +00:00
bors
7cd8f69a4f Auto merge of #29620 - petrochenkov:reachable2, r=alexcrichton
Handle them in `middle::reachable` instead (no optimizations so far, just drop all trait impl items into the reachable set, as before). Addresses the concerns from https://github.com/rust-lang/rust/pull/29291#discussion_r43672413
\+ In `middle::reachable` don't treat impls of `Drop` specially, they are subsumed by the general impl treatment.
\+ Add some tests checking reachability of trait methods written in UFCS form
\+ Minor refactoring in the second commit

r? @alexcrichton
2015-11-06 13:13:08 +00:00
bors
2f59977d96 Auto merge of #29615 - steveklabnik:lol_strings, r=alexcrichton
&format!("...") is the same as "" if we're not doing any interpolation,
and doesn't allocate an intermediate String.
2015-11-06 11:28:07 +00:00
arcnmx
892b50ba74 Preserve public static items across LTO 2015-11-06 05:04:43 -05:00
bors
98fa2ac1bc Auto merge of #29588 - nikomatsakis:mir-switch, r=aatch
Introduce a `SwitchInt` and restructure pattern matching to collect integers and characters into one master switch. This is aimed at #29227, but is not a complete fix. Whereas before we generated an if-else-if chain and, at least on my machine, just failed to compile, we now spend ~9sec compiling `rustc_abuse`. AFAICT this is basically just due to a need for more micro-optimization of the matching process: perf shows a fair amount of time just spent iterating over the candidate list. Still, it seemed worth opening a PR with this step alone, since it's a big step forward.
2015-11-06 06:13:59 +00:00
Vadim Petrochenkov
5092b09648 rustc_privacy: Do not export items needed solely for the reachability analysis
Process them in middle::reachable instead
Add tests for reachability of trait methods written in UFCS form
2015-11-05 18:17:33 +03:00
Steve Klabnik
63576c23e4 remove excess string allocation
&format!("...") is the same as "" if we're not doing any interpolation,
and doesn't allocate an intermediate String.
2015-11-05 15:30:34 +01:00
Jonathan S
b1788ef8e1 Remove use of RefCell<DefMap> in the simpler parts of pat_util 2015-11-04 20:38:03 -06:00
Jonathan S
1ca1874986 Remove use of RefCell<DefMap> in resolve_lifetime 2015-11-04 20:38:03 -06:00
Jonathan S
f5781f143c Remove use of RefCell<DefMap> in check_static_recursion 2015-11-04 20:38:03 -06:00
Jonathan S
8a69a00941 Unwrap the RefCell around DefMap 2015-11-04 20:38:03 -06:00
Niko Matsakis
3e6b4545f9 Introduce a SwitchInt and restructure pattern matching to collect
integers and characters into one master switch.
2015-11-04 15:38:43 -05:00
bors
4ee11cd210 Auto merge of #29536 - sanxiyn:unused-assign-arg, r=alexcrichton
Fix #29136.
2015-11-04 18:52:07 +00:00
bors
11e55e4de1 Auto merge of #29564 - gereeter:no-freevar-refcell, r=sanxiyn 2015-11-04 15:13:49 +00:00
arcnmx
efdf9aa52f target_family configuration 2015-11-04 09:33:09 -05:00
Jonathan S
fb2129e043 Remove the RefCell around freevars and freevars_seen in librustc_resolve 2015-11-03 23:45:47 -06:00
bors
a216e84727 Auto merge of #29217 - nikomatsakis:mir-trans, r=dotdash
This branch implements a variant of trans that is based on MIR. It is very incomplete (intentionally), and had only the goal of laying out enough work to enable more incremental follow-on patches. Currently, only fns tagged with `#[rustc_mir]` use the new trans code. I plan to build up a meta-issue as well that tracks the various "not-yet-implemented" points. The only fn that has been tested so far is this amazingly complex "spike" fn:

```rust
#[rustc_mir]
fn sum(x: i32, y: i32) -> i32 {
    x + y
}
```

In general, the most interesting commit is the last one. There are some points on which I would like feedback from @rust-lang/compiler:

- I did not use `Datum`. Originally, I thought that maybe just a `ValueRef` would be enough but I wound up with two very simple structures, `LvalueRef` and `OperandRef`, that just package up a `ValueRef` and a type. Because of MIR's structure, you don't wind up mixing by-ref and by-value so much, and I tend to think that a thinner abstraction layer is better here, but I'm not sure.
- Related to the above, I expect that sooner or later we will analyze temps (and maybe variables too) to find those whose address is never taken and which are word-sized and which perhaps meet a few other criteria. For those, we'll probably want to avoid the alloca, just because it means prettier code.
- I generally tried to re-use data structures from elsewhere in trans, though I'm sure we can trim these down.
- I didn't do any debuginfo primarily because it seems to want node-ids and we have only spans. I haven't really read into that code so I don't know what's going on there.

r? @nrc
2015-11-04 02:13:05 +00:00
bors
4aa1f59e1e Auto merge of #29515 - Manishearth:ice-itembody, r=eddyb
r? @eddyb or @nrc
2015-11-03 15:19:07 +00:00
Manish Goregaokar
6468292c35 Fix ICE with unresolved associated items in closures (fixes #28971) 2015-11-03 20:09:20 +05:30
Seo Sanghyeon
61e5b6dfdb Warn unused_assignments for arguments 2015-11-03 19:04:36 +09:00
Niko Matsakis
15c1da4e27 Convert from using named fields to always using indices 2015-11-03 04:34:59 -05:00
Niko Matsakis
6d7c66e6e8 Introduce a "liberated fn sigs" map so that we have easy access to this
information when constructing MIR.
2015-11-03 04:34:59 -05:00
bors
b7fbfb658e Auto merge of #29285 - eefriedman:libsyntax-panic, r=nrc
A set of commits which pushes some panics out of core parser methods, and into users of those parser methods.
2015-11-03 03:06:03 +00:00
bors
749625ad6d Auto merge of #29500 - vadimcn:rustlib, r=alexcrichton
According to a recent [discussion on IRC](https://botbot.me/mozilla/rust-tools/2015-10-27/?msg=52887517&page=2), there's no good reason for Windows builds to store target libraries under `bin`, when on every other platform they are under `lib`.

This might be a [breaking-change] for some users.  I am pretty sure VisualRust has that path hard-coded somewhere.

r? @brson
2015-11-03 01:23:10 +00:00
bors
e2bb53ca52 Auto merge of #29291 - petrochenkov:privacy, r=alexcrichton
The public set is expanded with trait items, impls and their items, foreign items, exported macros, variant fields, i.e. all the missing parts. Now it's a subset of the exported set.
This is needed for https://github.com/rust-lang/rust/pull/29083 because stability annotation pass uses the public set and all things listed above need to be annotated.
Rustdoc can now be migrated to the public set as well, I guess.

Exported set is now slightly more correct with regard to exported items in blocks - 1) blocks in foreign items are considered and 2) publicity is not inherited from the block's parent - if a function is public it doesn't mean structures defined in its body are public.

r? @alexcrichton or maybe someone else
2015-11-02 23:38:49 +00:00