Commit graph

3776 commits

Author SHA1 Message Date
Oliver Schneider
ec74d3533a Stabilize min_const_fn 2018-10-05 10:36:14 +02:00
Vadim Petrochenkov
0d8e9cd4df Reapply the macro_rules disambiguation changes from master 2018-10-05 11:46:12 +04:00
Vadim Petrochenkov
050bd32958 resolve: Merge resolution for macro_rules into the common early in-scope resolution function
`fn resolve_legacy_scope`/`fn resolve_lexical_macro_path_segment` -> `fn early_resolve_ident_in_lexical_scope`
2018-10-05 11:40:40 +04:00
bors
61f5ca7d64 Auto merge of #54703 - davidtwco:issue-52086, r=nikomatsakis
error message when trying to move from an Rc or Arc is ungreat

Fixes #52086.

r? @nikomatsakis
2018-10-05 07:40:36 +00:00
Vadim Petrochenkov
a7cce470b6 Fix two UI tests with locale-dependent output 2018-10-05 11:37:48 +04:00
Havvy (Ryan Scheel)
9568ec6bef Move conditional configuration related UI tests into their own directory 2018-10-05 00:13:23 -07:00
Andy Russell
0501ee23d5
add test for #29743 2018-10-04 15:50:23 -04:00
Andy Russell
e15e86b843
add test for #24338 2018-10-04 15:50:01 -04:00
Andy Russell
1ab1b1e6f8
add test for #28134 2018-10-04 15:49:29 -04:00
bors
a57f1c9c95 Auto merge of #54666 - matthewjasper:mir-function-spans, r=pnkfelix
[NLL] Improve "borrow later used here" messages

* In the case of two conflicting borrows, the later used message says which borrow it's referring to
* If the later use is a function call (from the users point of view) say that the later use is for the call. Point just to the function.

r? @pnkfelix
Closes #48643
2018-10-04 16:34:27 +00:00
Oliver Schneider
8b097c4ce9 Don't try to promote already promoted out temporaries 2018-10-04 17:07:06 +02:00
Jonas Schievink
e24f4d57b0 Convert conservative_impl_trait.rs to compile-pass 2018-10-04 14:57:31 +02:00
Jonas Schievink
31d5878a05 Convert issue-49556.rs to compile-pass 2018-10-04 14:55:40 +02:00
Jonas Schievink
7e5a13163e Convert issue-49376.rs to compile-pass 2018-10-04 14:53:16 +02:00
Jonas Schievink
12cabc824b Convert existential-minimal.rs to compile-pass 2018-10-04 14:51:26 +02:00
Jonas Schievink
62e9a09cfb Convert impl-trait/issue-42479.rs to compile-pass 2018-10-04 14:47:46 +02:00
Jonas Schievink
3c46da8c82 Fix dead code lint for functions using impl Trait 2018-10-04 14:14:14 +02:00
Felix S. Klock II
594655bafa Regression test for #32382. 2018-10-04 13:03:24 +02:00
Pietro Albini
71aded852f
Rollup merge of #54795 - euclio:ifmt-bad-arg, r=estebank
remove padding from multiline format string label

Fixes #53836.
2018-10-04 12:20:17 +02:00
Pietro Albini
cbc9477bda
Rollup merge of #54780 - scalexm:dup-predicates, r=nikomatsakis
Remove duplicate predicates in `explicit_predicates_of`

I took a more brutal approach than described in #52187. I could have used the `linked_hash_map` crate but this seems overkill, especially as we need a vec storage in the end.

r? @nikomatsakis
2018-10-04 12:20:13 +02:00
bors
088fc7384c Auto merge of #53851 - oli-obk:local_promotion, r=eddyb
Limit the promotion of const fns to the libstd and the `rustc_promotable` attribute

There are so many questions around promoting const fn calls... it seems saner to try to limit automatic promotion to const fns which were explicitly opted in for promotion.

I added the attribute to all public stable const fns that were already promotable (e.g. not Cell::new) in order to not cause any breakage

r? @eddyb

cc @nikomatsakis
2018-10-04 06:48:13 +00:00
bors
c67ea54d44 Auto merge of #54624 - arielb1:evaluate-outlives, r=nikomatsakis
handle outlives predicates in trait evaluation

This handles higher-ranked outlives predicates in trait evaluation the same way they are handled in projection.

Fixes #54302. I think this is a more correct fix than #54401 because it fixes the root case in evaluation instead of making evaluation used in less cases. However, we might want to go to a direction closer to @nikomatsakis's solution with Chalk.

r? @nikomatsakis
2018-10-04 03:08:22 +00:00
Wesley Wiser
f81d1dd294 Rewrite the UnconditionalRecursion lint to use MIR
Part of #51002
2018-10-03 21:29:07 -04:00
bors
d0787284da Auto merge of #54447 - KiChjang:issue-54331, r=nikomatsakis
Lower type ascriptions to HAIR and MIR

Fixes #54331.

r? @nikomatsakis
2018-10-04 00:26:00 +00:00
bors
4bf883b5e7 Auto merge of #54391 - davidtwco:issue-54230, r=petrochenkov
suggest `crate::...` for "local" paths in 2018

Fixes #54230.

This commit adds suggestions for unresolved imports in the cases where
there could be a missing `crate::`, `super::`, `self::` or a missing
external crate name before an import.

r? @nikomatsakis
2018-10-03 21:46:21 +00:00
Matthew Jasper
bc4f9b848d Clearer later use messages for calls
Give a special message when the later use is from a call. Use the span
of the callee instead of the whole expression. For conflicting borrow
messages say that the later use is of the first borrow.
2018-10-03 20:32:38 +01:00
Andy Russell
b14dc69ee8
remove padding from multiline format string label
Fixes #53836.
2018-10-03 14:29:39 -04:00
bors
5597ee8a64 Auto merge of #54605 - petrochenkov:mambig, r=alexcrichton
resolve: Disambiguate a subset of conflicts "macro_rules" vs "macro name in module"

Currently if macro name may refer to both a `macro_rules` macro definition and a macro defined/imported into module we conservatively report an ambiguity error.
Unfortunately, these errors became a source of regressions when macro modularization was enabled - see issue https://github.com/rust-lang/rust/issues/54472.

This PR disambiguates such conflicts in favor of `macro_rules` if both the `macro_rules` item and in-module macro name are defined in the same normal (named) module and `macro_rules` is closer in scope to the point of use (see the tests for examples).
This is a subset of more general approach described in https://github.com/rust-lang/rust/issues/54472#issuecomment-424666659.
The subset is enough to fix all the regressions from https://github.com/rust-lang/rust/issues/54472, but it can be extended to apply to all "macro_rules" vs "macro name in module" conflicts in the future.

To give an analogy, this is equivalent to scoping rules for `let` variables and items defined in blocks (`macro_rules` behaves like "`let` at module level" in general).
```rust
{ // beginning of the block
    use xxx::m; // (1)

    // Starting from the beginning of the block and until here m!() refers to (1)
    macro_rules! m { ... } // (2)
    // Starting from here and until the end of the block m!() refers to (2)
} // end of the block
```
More complex examples with `use` and `macro_rules` from different modules still report ambiguity errors, even if equivalent examples with `let` are legal.

Fixes https://github.com/rust-lang/rust/issues/54472 (stable-to-beta regression)
2018-10-03 18:12:22 +00:00
varkor
113141b6f5 Only warn about unused mut in user-written code 2018-10-03 14:14:11 +01:00
David Wood
9d408e0511
Update tests to demonstrate 2015 behaviour.
Adds a test to demonstrate behaviour of suggestions in the
2015 edition.
2018-10-03 14:43:58 +02:00
David Wood
29e2376ac7
Add suggestions for unresolved imports.
This commit adds suggestions for unresolved imports in the cases where
there could be a missing `crate::`, `super::`, `self::` or a missing
external crate name before an import.
2018-10-03 14:43:57 +02:00
Vadim Petrochenkov
078fc52cbc resolve: Prefer macro_rules definitions to in-module macro definitions in some cases 2018-10-03 16:12:39 +04:00
scalexm
8327976890 Remove duplicate predicates in explicit_predicates_of
Fixes #52187.
2018-10-03 13:57:47 +02:00
bors
6ddab3e078 Auto merge of #54720 - davidtwco:issue-51191, r=nikomatsakis
NLL fails to suggest "try removing `&mut` here"

Fixes #51191.

This PR adds ``try removing `&mut` here`` suggestions to functions where a mutable borrow is being taken of a `&mut self` or a `self: &mut Self`. This PR also enables the suggestion for adding a `mut` pattern to by-value implicit self arguments without `mut` patterns already.

r? @nikomatsakis
2018-10-03 10:49:27 +00:00
Oliver Schneider
c793391e6d Move platform dependent output ui tests to compile-fail 2018-10-03 11:46:05 +02:00
Oliver Schneider
9e46c0b689 Only promote calls to #[rustc_promotable] const fns 2018-10-03 10:07:05 +02:00
bors
4cf11765dc Auto merge of #54767 - pietroalbini:rollup, r=pietroalbini
Rollup of 10 pull requests

Successful merges:

 - #54269 (#53840: Consolidate pattern check errors)
 - #54458 (Allow both explicit and elided lifetimes in the same impl header)
 - #54603 (Add `crate::` to trait suggestions in Rust 2018.)
 - #54648 (Update Cargo's submodule)
 - #54680 (make run-pass tests with empty main just compile-pass tests)
 - #54687 (Use impl_header_lifetime_elision in libcore)
 - #54699 (Re-export `getopts` so custom drivers can reference it.)
 - #54702 (do not promote comparing function pointers)
 - #54728 (Renumber `proc_macro` tracking issues)
 - #54745 (make `CStr::from_bytes_with_nul_unchecked()` a const fn)

Failed merges:

r? @ghost
2018-10-02 23:29:58 +00:00
Paweł Romanowski
87bf9e2056 Address review comments 2018-10-02 22:10:04 +01:00
Pietro Albini
1826970cf2
Rollup merge of #54728 - alexcrichton:renumber-issues, r=nikomatsakis
Renumber `proc_macro` tracking issues

Lots of issue links in the compiler still point to https://github.com/rust-lang/rust/issues/38356 which is a bit of a monster issue that isn't serving much purpose any more. I've split the issue into a number of more fine-grained tracking issues to track stabilizations.
2018-10-02 22:54:36 +02:00
Pietro Albini
d9d96637d4
Rollup merge of #54702 - RalfJung:fn-ptr-promotion, r=oli-obk
do not promote comparing function pointers

This *could* break existing code that relied on fn ptr comparison getting promoted to `'static` lifetime.

Fixes https://github.com/rust-lang/rust/issues/54696
2018-10-02 22:54:35 +02:00
Pietro Albini
7e571eead8
Rollup merge of #54687 - scottmcm:more-elision, r=dtolnay
Use impl_header_lifetime_elision in libcore

The feature is approved for stabilization, so let's use it to remove about 300 `'a`s.

Tracking issue for the feature: https://github.com/rust-lang/rust/issues/15872
2018-10-02 22:54:33 +02:00
Pietro Albini
32c1454a87
Rollup merge of #54680 - RalfJung:compile-pass, r=pnkfelix
make run-pass tests with empty main just compile-pass tests

Many run-pass tests have an empty main, so there is not actually any point in running them. This makes them `compile-pass` tests instead, saving some time (generating the binary and then running it).

For now I did this only for `run-pass/issues`; if there is interest I can also do it for the other directories. I used `^\s*fn\s+main\(\s*\)\s*\{\s*\}` as regexp to identify these files.
2018-10-02 22:54:32 +02:00
Pietro Albini
f70f6ec567
Rollup merge of #54603 - davidtwco:issue-54559, r=nikomatsakis
Add `crate::` to trait suggestions in Rust 2018.

Fixes #54559.

In the 2018 edition, when suggesting traits to import that implement a
given method that is being invoked, suggestions will now include the
`crate::` prefix if the suggested trait is local to the current crate.

r? @nikomatsakis
2018-10-02 22:54:29 +02:00
Pietro Albini
ab338eadfa
Rollup merge of #54458 - scottmcm:bug-54456, r=nikomatsakis
Allow both explicit and elided lifetimes in the same impl header

While still prohibiting explicit and in-band in the same header.

Fixes #54456

As usual, I don't know the broader context of the code I'm changing, so please let me know whatever I can do better.

Pre-existing test that mixing explicit and in-band remains an error: https://github.com/rust-lang/rust/blob/master/src/test/ui/in-band-lifetimes/E0688.rs
2018-10-02 22:54:28 +02:00
Pietro Albini
49d4359f6d
Rollup merge of #54269 - PramodBisht:issue/53840, r=estebank
#53840: Consolidate pattern check errors

#53840  on this PR we are aggregating `cannot bind by-move and by-ref in the same pattern` message present on the different lines into one diagnostic message. Here we are first gathering those `spans` on `vector` then we are throwing them with the help of `MultiSpan`
r? @estebank

Addresses: #53480
2018-10-02 22:54:27 +02:00
bors
2bd5993ca2 Auto merge of #54343 - blitzerr:master, r=nikomatsakis
First shot at #54015

Closes #54015
2018-10-02 20:46:49 +00:00
Ralf Jung
454b14a511 move some more tests 2018-10-02 13:16:56 +02:00
Oliver Schneider
2a1ea44bdc Nest the impl Trait existential item inside the return type 2018-10-02 10:54:34 +02:00
Pramod Bisht
e536e64702 Consolidate pattern check errors
we are consolidating `cannot bind by-move and by-ref in the same
pattern` message present on the different lines into single diagnostic
message.

To do this, we are first gathering those spans into the vector
after that we are throwing them with the help of MultiSpan in
a separate block.

Addresses: #53840
2018-10-02 05:51:02 +00:00
bors
2d1065bc2a Auto merge of #54694 - csmoe:self_this, r=estebank
Suggest to use self for fake-self from other languages

Closes https://github.com/rust-lang/rust/issues/54019
r? @estebank
2018-10-02 01:09:36 +00:00