Commit graph

17717 commits

Author SHA1 Message Date
bors
0142781ad1 Auto merge of #46708 - pnkfelix:fix-issue-46112, r=arielb1
Fix visible_parent_map to choose globally minimal paths

Fix #46112: visible_parent_map construction needs a BFS over whole crate forest to get globally minimal paths.

(There are other latent bugs that were e.g. causing this test case to have weirdness like `<unnamed>` in the diagnostic output. Those bugs are not fixed here, since they are issues long-standing in the stable channel.)
2017-12-13 23:43:56 +00:00
bors
3dfbc88a62 Auto merge of #46550 - jseyfried:cleanup_builtin_hygiene, r=nrc
macros: hygienize use of `core`/`std` in builtin macros

Today, if a builtin macro wants to access an item from `core` or `std` (depending `#![no_std]`), it generates `::core::path::to::item` or `::std::path::to::item` respectively (c.f. `fn std_path()` in `libsyntax/ext/base.rs`).

This PR refactors the builtin macros to instead always emit `$crate::path::to::item` here. That is, the def site of builtin macros is taken to be in `extern crate core;` or `extern crate std;`. Since builtin macros are macros 1.0 (i.e. mostly unhygienic), changing the def site can only effect the resolution of `$crate`.

r? @nrc
2017-12-13 11:09:55 +00:00
bors
61100840e5 Auto merge of #46419 - jseyfried:all_imports_in_metadata, r=nrc
Record all imports (`use`, `extern crate`) in the crate metadata

This PR adds non-`pub` `use` and `extern crate` imports in the crate metadata since hygienic macros invoked in other crates may use them. We already include all other non-`pub` items in the crate metadata. This improves import suggestions in some cases.

Fixes #42337.

r? @nrc
2017-12-13 08:32:25 +00:00
Felix S. Klock II
35bcd9913e Regression test for issue #46112. 2017-12-12 23:18:53 -06:00
bors
dcf3db47c7 Auto merge of #46616 - cramertj:impl-trait-elision, r=nikomatsakis
Implement impl Trait lifetime elision

Fixes #43396.

There's one weird ICE in the interaction with argument-position `impl Trait`. I'm still debugging it-- I've left a test for it commented out with a FIXME.

Also included a FIXME to ensure that `impl Trait` traits are caught under the lint in https://github.com/rust-lang/rust/issues/45992.

r? @nikomatsakis
2017-12-13 04:19:26 +00:00
bors
691f022767 Auto merge of #46613 - petrochenkov:absext, r=nikomatsakis
Resolve absolute paths as extern under a feature flag

cc https://github.com/rust-lang/rust/issues/44660
r? @nikomatsakis
2017-12-13 01:44:36 +00:00
bors
442b7bd10a Auto merge of #46570 - AgustinCB:issue-46553, r=oli-obk
Ignore `unsopported constant expr` error

Fixes #46553
2017-12-12 23:08:56 +00:00
Jeffrey Seyfried
8dbe79ae5e Fix fallout in tests. 2017-12-12 13:15:03 -08:00
Vadim Petrochenkov
b07e26e36e Resolve absolute paths as extern under a feature flag 2017-12-13 00:02:23 +03:00
Taylor Cramer
018c4038c7 Implement impl Trait lifetime elision 2017-12-12 10:56:09 -08:00
bors
724500626b Auto merge of #46598 - davidtwco:issue-46471, r=arielb1
MIR borrowck: error message confuses locals and temporaries

Fixes #46471 and fixes #46472 (see [this Gitter comment](https://gitter.im/rust-impl-period/WG-compiler-nll?at=5a2d5cb53ae2aa6b3facf0c2)).

r? @arielb1
2017-12-12 06:11:33 +00:00
bors
5951f8d1ba Auto merge of #46657 - nikomatsakis:resolve-lifetimes-query, r=arielb1
move `resolve_lifetimes` into a proper query

Now that we made `resolve_lifetimes` into a query, elision errors no
longer abort compilation, which affects some tests.

Also, remove `dep_graph_crosscontaminate_tables` -- there is no a path in
the dep-graph, though red-green handles it. The same scenario
is (correctly) tested by issue-42602.rs in any case.

r? @michaelwoerister
2017-12-12 00:52:20 +00:00
David Wood
3dbc11bc63
Updated existing tests with new error messages. 2017-12-11 22:20:15 +00:00
bors
9fe7aa353f Auto merge of #46608 - estebank:resolve-return, r=nikomatsakis
Resolve type on return type suggestion

Partially address #45871.
2017-12-11 21:14:13 +00:00
David Wood
baf68d3a37
Fixed case where borrowed value lives until after scope 2017-12-11 20:41:27 +00:00
David Wood
15b8fbdfb3
Added test for #46472 2017-12-11 20:26:06 +00:00
David Wood
4651d1e3cf
Added test for #46471 2017-12-11 19:46:01 +00:00
bors
ddbb27a241 Auto merge of #46558 - arielb1:union-borrow-refactor, r=nikomatsakis
Clean up the MIR borrowck code

I want to avoid the new code to start with so much technical debt.

r? @nikomatsakis
2017-12-11 16:43:40 +00:00
Niko Matsakis
b7794c0d3f move resolve_lifetimes into a proper query
Now that we made `resolve_lifetimes` into a query, elision errors no
longer abort compilation, which affects some tests.

Also, remove `dep_graph_crosscontaminate_tables` -- there is no a path in
the dep-graph, though red-green handles it. The same scenario
is (correctly) tested by issue-42602.rs in any case.
2017-12-11 10:11:13 -05:00
bors
33245fe682 Auto merge of #46640 - tommyip:ui_tests, r=estebank
Enforce successful ui tests to have must-compile-successfully flag.

r? @nikomatsakis
cc @oli-obk

Fixes #46587
2017-12-11 06:54:24 +00:00
bors
ea16814761 Auto merge of #46248 - zackmdavis:one_time_private_enum_variant_reexport_error, r=estebank
one-time diagnostics for private enum variants glob reëxport

![private_enum_reexport](https://user-images.githubusercontent.com/1076988/33224719-4e5805f0-d121-11e7-8bc0-a708a277a5db.png)

r? @estebank
2017-12-10 23:32:09 +00:00
Tommy Ip
2ad5bf056c Update ui tests' line numbers. 2017-12-10 21:14:57 +00:00
Tommy Ip
76d9b309ae Add must-compile-successfully comment to appropriate ui tests. 2017-12-10 21:14:57 +00:00
Ariel Ben-Yehuda
e798cb0e52 centralize does_not_live_long_enough error reporting 2017-12-10 17:46:32 +02:00
Ariel Ben-Yehuda
b64ddecae8 use places_conflict to handle reassignment
This fixes the handling of reassignment of struct fields.
2017-12-10 17:46:31 +02:00
bors
02b4d3ddfb Auto merge of #46611 - GuillaumeGomez:type-mismatch, r=petrochenkov
Fix switched types in type mismatch

Fixes #46609.
2017-12-10 04:01:00 +00:00
Zack M. Davis
4fb57e0796 one-time diagnostic and suggestion for reëxporting private variant error
We issue just one message for an erroneous glob private variant reëxport
(using the Session's one-time-diagnostics capability), but individual
(non-glob) such erroneous reëxports still get their own messages. The
suggestion to make the enum public is also one-time.

The enum variant reëxport error didn't have an associated error code
(and remedying this here is deemed out of the scope of this commit), so
we resort to the expediency of using 0 as the `DiagnosticMessageId`
value.

Adding Debug to NameResolution was helpful in development.

This resolves #46209.
2017-12-09 16:33:32 -08:00
Guillaume Gomez
484729478b Fix switched types in type mismatch 2017-12-10 01:20:40 +01:00
Esteban Küber
95a0458358 Resolve type on return type suggestion 2017-12-09 15:19:39 -08:00
bors
8db163e53d Auto merge of #46572 - vramana:fix-45638, r=estebank
Fix bad error message for cannot_reborrow_already_uniquely_borrowed
2017-12-09 22:32:34 +00:00
bors
69ae2b7e12 Auto merge of #46573 - jseyfried:add_decl_macro_test, r=nrc
macros: add test for #44128

Closes #44128.
r? @nrc
2017-12-09 01:20:16 +00:00
Ramana Venkata
90f7c31d86 Fix bad error message for cannot_reborrow_already_uniquely_borrowed
Fixes #45638
2017-12-08 23:42:13 +05:30
bors
88fc3bc271 Auto merge of #46556 - michaelwoerister:enable-query-caching, r=nmatsakis
incr.comp.: Enable query result caching for many more queries

Newly cached queries are:
* const_is_rvalue_promotable_to_static
* trans_fulfill_obligation
* optimized_mir
* unsafety_check_result
* borrowck
* mir_borrowck
* mir_const_qualif
* contains_extern_indicator
* def_symbol_name
* symbol_name

This also includes the stricter `Span` hashing first mentioned in #46490, which will lead to more false positives in release builds but overall is more correct -- and necessary for caching MIR. Hopefully we will soon be able to reduce the rate of false positives again by factoring `Span` out of MIR.

r? @nikomatsakis
2017-12-08 11:34:23 +00:00
Michael Woerister
1c0e611dff Remove some svh-tests from run-pass.
These were already broken for debug builds.
2017-12-08 10:02:26 +01:00
Michael Woerister
c5dd9f5301 incr.comp.: Hash spans unconditionally for full accuracy. 2017-12-08 10:02:26 +01:00
bors
58a05eed54 Auto merge of #46549 - alexcrichton:thinlto-weak, r=michaelwoerister
rustc: Further tweak linkage in ThinLTO

In #46382 the logic around linkage preservation with ThinLTO ws tweaked but the
loop that registered all otherwise exported GUID values as "don't internalize
me please" was erroneously too conservative and only asking "external" linkage
items to not be internalized. Instead we actually want the inversion of that
condition, everything *without* "local" linkage to be internalized.

This commit updates the condition there, adds a test, and...

Closes #46543
2017-12-08 08:48:02 +00:00
Agustin Chiappe Berrini
cbd25ed8f4 deny instead of warn 2017-12-08 03:13:13 -05:00
Jeffrey Seyfried
a3517bbeda Add test for #44128. 2017-12-07 14:15:55 -08:00
bors
c8ddf28527 Auto merge of #46497 - AgustinCB:issue-46311, r=petrochenkov
Modify message for keyword as identifier name

This is a temporary solution to #46311.

The message is generic enough to cover both cases and is probably a fine enough solution to the specific problem described in the task. However, the underlying reason for this to be wrong is that `next_token_inner` returns `Lifetime` even if the token is a label. That's not simple, as the syntax for both can be quite similar and it may need to take a look to the next token to make a decision. I'm not sure I have enough knowledge about the project to be able to solve that (yet!), so I thought I'll fix the immediate problem first.
2017-12-07 21:05:49 +00:00
Agustin Chiappe Berrini
75fc11806d Ignore unsopported constant expr error 2017-12-07 14:33:28 -05:00
bors
9c49f401fe Auto merge of #46532 - est31:master, r=est31
Allow feature-gate tests to live in ui/ and migrate most of the tests from compile-fail

The PR consists of three commits:

1. change tidy to allow feature-gate tests to live in ui/
2. migrate some feature gate tests to ui/ with renaming only
3. migrate some feature gate tests to ui/ with also removing `// gate-test-...` lines and renaming them to the standard `feature-gate-<feat-name>.rs` format.
2017-12-07 18:13:10 +00:00
bors
a8437a0acc Auto merge of #46509 - nikomatsakis:nll-master-to-rust-master-3, r=arielb1
closure handling for NLL

This branch overhauls how we handle closures and universally quantified regions in the NLL code. The goal is to lay the groundwork for "region erasure" by the HIR-based type checker, as well as to avoid "crazy hacks" when it comes to closures. This means that when we type-check a closure, we cannot make use of *any* of the precise values of free regions in its signature, since those are inferred by the HIR type-checker. Therefore, the new code handles closures by:

- Creating fresh regions for every free region that appears in the closure's type, which now includes both its signature and the types of all upvars.
    - This means that the closure is type-checked without knowing about the connections.
- When we encounter some region relationship that we can't locally verify, we propagate it to the closure's creator.
- During MIR typeck, the closure creators then validates those relationships.

For a good example and explanation, see e.g. the test `src/test/nll/closure-requirements/propagate-despite-same-free-region.rs`.

Upcoming changes in the next NLL PR (not included in this PR in order to keep it manageable):

- Improvements to the MIR type checker so that it handles a lot of stuff presently overlooked
- Refactor how we store region values to make it more efficient, better encapsulated
- Propagate "type-outlives" relationships like `T: 'a` in a similar fashion to the one covered in this PR (still in the works, but close)
- Improvements to error reporting (still in the works)

r? @arielb1 or @pnkfelix
2017-12-07 14:59:24 +00:00
Alex Crichton
17fb43bdc6 rustc: Further tweak linkage in ThinLTO
In #46382 the logic around linkage preservation with ThinLTO ws tweaked but the
loop that registered all otherwise exported GUID values as "don't internalize
me please" was erroneously too conservative and only asking "external" linkage
items to not be internalized. Instead we actually want the inversion of that
condition, everything *without* "local" linkage to be internalized.

This commit updates the condition there, adds a test, and...

Closes #46543
2017-12-07 06:53:49 -08:00
bors
ee25791df5 Auto merge of #46523 - CrockAgile:update-fingerprint-tests-macros, r=michaelwoerister
Update fingerprint tests macros

Part of #44924

r? @michaelwoerister
2017-12-07 12:21:28 +00:00
Niko Matsakis
47037705dc add test comparing free region to bound region
suggested by arielb1
2017-12-07 05:28:04 -05:00
Niko Matsakis
86e7b5c12a use -Znll -Zborrowck=mir -Zverbose consistently 2017-12-07 05:28:04 -05:00
Niko Matsakis
75cf482651 region-ebr-does-not-outlive-static: reuse old test instead 2017-12-07 05:28:04 -05:00
Niko Matsakis
b8e9eaf3ae propagate-approximated-ref: include FIXME comment 2017-12-07 05:28:03 -05:00
Niko Matsakis
2a17b9390b test more failure cases for approximating the "longer" side
as suggested by arielb1
2017-12-07 05:28:03 -05:00
Niko Matsakis
ca60826110 test approximations of the "shorter side" that resort to 'static
This includes the additional case suggested by arielb1.
2017-12-07 05:28:03 -05:00