2993 Commits

Author SHA1 Message Date
Mazdak Farrokhzad
cbb81bd856 dbg_macro: feature gate + move semantics test. 2018-09-20 17:39:09 +02:00
bors
f7f4c500b4 Auto merge of #54255 - spastorino:use-of-moved-value-error, r=nikomatsakis
Inspect parents paths when checking for moves

Closes #52669
2018-09-20 09:02:46 +00:00
bors
4f3ff5a97b Auto merge of #54101 - osa1:issue_54099, r=nikomatsakis
Fix camel case type warning for types with trailing underscores

Fixes #54099
2018-09-19 09:20:36 +00:00
bors
8f376771cf Auto merge of #53995 - davidtwco:issue-53807, r=nikomatsakis
NLL: Deduplicate errors for incorrect move in loop

Fixes #53807.

r? @nikomatsakis
2018-09-19 00:01:51 +00:00
David Wood
88ca3412e2
Switched from FxHashMap to BTreeMap to preserve ordering when iterating. 2018-09-18 13:55:27 +02:00
David Wood
783bad4295
De-duplicate moved variable errors.
By introducing a new map that tracks the errors reported and the
`Place`s that spawned those errors against the move out that the error
was referring to, we are able to silence duplicate errors by emitting
only the error which corresponds to the most specific `Place` (that which
other `Place`s which reported errors are prefixes of).

This generally is an improvement, however there is a case -
`liveness-move-in-while` - where the output regresses.
2018-09-18 13:51:41 +02:00
bors
79fcc58b24 Auto merge of #54034 - pnkfelix:issue-15287-bind-by-move-pattern-guards, r=nikomatsakis
Add feature to enable bind by move pattern guards

Implement #15287 as described on https://github.com/rust-lang/rust/issues/15287#issuecomment-404827419
2018-09-18 11:39:51 +00:00
bors
f004cae536 Auto merge of #54319 - GuillaumeGomez:rollup, r=GuillaumeGomez
Rollup of 9 pull requests

Successful merges:

 - #53522 (Add doc for impl From for Addr)
 - #54097 (rustdoc: Remove namespace for keywords)
 - #54205 (Add treat-err-as-bug flag in rustdoc)
 - #54225 (Regression test for rust-lang/rust#53675.)
 - #54232 (add `-Z dont-buffer-diagnostics`)
 - #54273 (Suggest to change numeric literal instead of casting)
 - #54299 (Issue 54246)
 - #54311 (Remove README with now-out-of-date docs about docs.)
 - #54313 (OsStr: Document that it's not NUL terminated)

Failed merges:

r? @ghost
2018-09-18 09:06:42 +00:00
Guillaume Gomez
50b9694af9
Rollup merge of #54299 - snaedis:issue-54246, r=varkor
Issue 54246

I added the option of providing a help message for deprecated features, that takes precedence over the default `help: remove this attribute` message, along with messages for the features that mention replacements in the reason for deprecation.

Fixes #54246.
2018-09-18 10:21:41 +02:00
Guillaume Gomez
5f1a123c20
Rollup merge of #54273 - csmoe:lint_ty_lit, r=estebank
Suggest to change numeric literal instead of casting

Closes #54160
r? @estebank
2018-09-18 10:21:40 +02:00
Guillaume Gomez
cdd90343b3
Rollup merge of #54225 - pnkfelix:issue-53675-add-test-called-panic, r=petrochenkov
Regression test for rust-lang/rust#53675.

(Includes a couple variations on the theme. I confirmed that the ones
in `in_expression_position` and `what_if_we_use_panic_directly_in_expr`
both failed back on "rustc 1.30.0-nightly (0f063aef6 2018-09-03)".)

Fix #53675
2018-09-18 10:21:37 +02:00
bors
36c0ee97b9 Auto merge of #53900 - davidtwco:issue-53771, r=nikomatsakis
NLL regresses diagnostic for impl-trait/static-return-lifetime-infered.rs

Fixes #53771.

r? @nikomatsakis
cc @pnkfelix @estebank
2018-09-18 06:24:56 +00:00
Santiago Pastorino
e9029cec7b
Inspect parents paths when checking for moves 2018-09-17 13:38:04 -03:00
Alva Snædís
79da7a0a2f libsyntax: add optional help message for deprecated features 2018-09-17 16:09:23 +00:00
Alva Snædís
e4e4039c5b libsyntax: fix casing in error message 2018-09-17 12:12:37 +00:00
Felix S. Klock II
3a07d3dbd6 On nightly with NLL, suggest #![feature(bind_by_move_pattern_guards)] when it might fix the code. 2018-09-17 13:46:50 +02:00
Felix S. Klock II
c50884c615 Tests for feature(bind_by_move_pattern_guards).
Apparently copyright notices are no longer necessary apparently.
(See #43498 and #53654.)
2018-09-17 13:46:50 +02:00
csmoe
2fb6585f33 add test for float/integer 2018-09-17 14:26:58 +08:00
bors
d3cba9b4b4 Auto merge of #54270 - GuillaumeGomez:rollup, r=GuillaumeGomez
Rollup of 5 pull requests

Successful merges:

 - #53941 (rustdoc: Sort implementors)
 - #54181 (Suggest && and || instead of 'and' and 'or')
 - #54209 (Partially revert 674a5db "Fix undesirable fallout [from macro modularization]")
 - #54213 (De-overlap the lifetimes of `flow_inits` and `flow_{un,ever_}inits`.)
 - #54244 (Add a small search box to seach Rust's standary library)

Failed merges:

r? @ghost
2018-09-16 15:42:02 +00:00
csmoe
17a28f7063 add test for numeric literal cast 2018-09-16 21:22:47 +08:00
Guillaume Gomez
4f5ab7f6bc
Rollup merge of #54209 - petrochenkov:mexpr, r=pnkfelix
Partially revert 674a5db "Fix undesirable fallout [from macro modularization]"

Partially revert 674a5db1a5

~~Closes~~ (see pnkfelix comments below) https://github.com/rust-lang/rust/issues/53675
2018-09-16 12:25:43 +02:00
Guillaume Gomez
54a1d2b131
Rollup merge of #54181 - vi:hint_and_or, r=estebank
Suggest && and || instead of 'and' and 'or'

Resolves #54109.

Note: competing pull reqeust: #54179

r? @csmoe
2018-09-16 12:25:42 +02:00
bors
32dc5a0783 Auto merge of #54157 - euclio:structured-suggestion, r=estebank
use structured suggestion for "missing mut" label

Fixes #54133 for both NLL and non-NLL.

r? @estebank

I'm not super happy with the existing wording here, since it's now a suggestion. I wonder if the message would work better as something like "help: make binding mutable: `mut foo`"?

Also, are the `HELP` and `SUGGESTION` comments necessary?
2018-09-16 09:47:05 +00:00
Eduard-Mihai Burtescu
653cd47c09 rustc_resolve: use continue instead of return to "exit" a loop iteration. 2018-09-15 22:48:10 +03:00
Eduard-Mihai Burtescu
38c82a2180 rustc_resolve: always include core, std and meta in the extern prelude. 2018-09-15 22:48:10 +03:00
Eduard-Mihai Burtescu
9eb7a3c76f rustc_resolve: don't allow ::crate_name to bypass extern_prelude. 2018-09-15 22:48:10 +03:00
Felix S. Klock II
fc6e1ed1e1 Regression test for rust-lang/rust#53675.
(Includes a couple variations on the theme. I confirmed that the ones
in `in_expression_position` and `what_if_we_use_panic_directly_in_expr`
both failed back on "rustc 1.30.0-nightly (0f063aef6 2018-09-03)".)
2018-09-15 06:34:09 +02:00
Vitaly _Vi Shukela
bc63a4a13a
issue 54109: use short suggestions 2018-09-15 02:05:32 +03:00
bors
f789b6bd6d Auto merge of #54069 - petrochenkov:subns, r=aturon
resolve: Introduce two sub-namespaces in macro namespace

Two sub-namespaces are introduced in the macro namespace - one for bang macros and one for attribute-like macros (attributes, derives).

"Sub-namespace" means this is not a newly introduced full namespace, the single macro namespace is still in place.
I.e. you still can't define/import two macros with the same name in a single module, `use` imports still import only one name in macro namespace (from any sub-namespace) and not possibly two.

However, when we are searching for a name used in a `!` macro call context (`my_macro!()`) we skip attribute names in scope, and when we are searching for a name used in attribute context (`#[my_macro]`/`#[derive(my_macro)]`) we are skipping bang macro names in scope.
In other words, bang macros cannot shadow attribute macros and vice versa.

For a non-macro analogy, we could e.g. skip non-traits when searching for `MyTrait` in `impl MyTrait for Type { ... }`.
However we do not do it in non-macro namespaces because we don't have practical issues with e.g. non-traits shadowing traits with the same name, but with macros we do, especially after macro modularization.

For `#[test]` and `#[bench]` we have a hack in the compiler right now preventing their shadowing by `macro_rules! test` and similar things. This hack was introduced after making `#[test]`/`#[bench]` built-in macros instead of built-in attributes (https://github.com/rust-lang/rust/pull/53410), something that needed to be done from the start since they are "active" attributes transforming their inputs.
Now they are passed through normal name resolution and can be shadowed, but that's a breaking change, so we have  a special hack basically applying this PR for `#[test]` and `#[bench]` only.

Soon all potentially built-in attributes will be passed through normal name resolution (https://github.com/rust-lang/rust/pull/53913) and that uncovers even more cases where the strict "macro namespace is a single namespace" rule needs to be broken.
For example, with strict rules, built-in macro `cfg!(...)` would shadow built-in attribute `#[cfg]` (they are different things), standard library macro `thread_local!(...)` would shadow built-in attribute `#[thread_local]` - both of these cases are covered by special hacks in https://github.com/rust-lang/rust/pull/53913 as well.
Crater run uncovered more cases of attributes being shadowed by user-defined macros (`warn`, `doc`, `main`, even `deprecated`), we cannot add exceptions in the compiler for all of them.

Regressions with user-defined attributes like https://github.com/rust-lang/rust/issues/53583 and https://github.com/rust-lang/rust/issues/53898 also appeared after enabling macro modularization.

People are also usually confused (https://github.com/rust-lang/rust/issues/53205#issuecomment-411552763, https://github.com/rust-lang/rust/issues/53583#issuecomment-415447800) when they see conflicts between attributes and non-attribute macros for the first time.

So my proposed solution is to solve this issue by introducing two sub-namespaces and thus skipping resolutions of the wrong kind and preventing more error-causing cases of shadowing.

Fixes https://github.com/rust-lang/rust/issues/53583
2018-09-14 22:17:45 +00:00
bors
2ab3eba307 Auto merge of #54201 - eddyb:reflexive-disambiguation, r=petrochenkov
rustc_resolve: don't treat uniform_paths canaries as ambiguities unless they resolve to distinct Def's.

In particular, this allows this pattern that @cramertj mentioned in https://github.com/rust-lang/rust/issues/53130#issuecomment-420848814:
```rust
use log::{debug, log};
fn main() {
    use log::{debug, log};
    debug!(...);
}
```
The canaries for the inner `use log::...;`, *in the macro namespace*, see the `log` macro imported at the module scope, and the (same) `log` macro, imported in the block scope inside `main`.

Previously, these two possible (macro namspace) `log` resolutions would be considered ambiguous (from a forwards-compat standpoint, where we might make imports aware of block scopes).

With this PR, such a case is allowed *if and only if* all the possible resolutions refer to the same definition (more specifically, because the *same* `log` macro is being imported twice).
This condition subsumes previous (weaker) checks like #54005 and the second commit of #54011.

Only the last commit is the main change, the other two are cleanups.

r? @petrochenkov cc @Centril @joshtriplett
2018-09-14 19:52:13 +00:00
bors
052d24e6c8 Auto merge of #54088 - matthewjasper:use-reason-in-dlle-errors, r=pnkfelix
[NLL] Suggest let binding

Closes #49821

Also adds an alternative to `explain_why_borrow_contains_point` that allows changing error messages based on the reason that will be given. This will also be useful for #51026, #51169 and maybe further changes to does not live long enough messages.
2018-09-14 15:45:02 +00:00
bors
85da24527a Auto merge of #54080 - PramodBisht:issue/53692, r=estebank
Addressed #53692

@sunjay @estebank  @csmoe hopefully this answer #53692
Please let me know if you have any suggestion
2018-09-14 13:06:23 +00:00
bors
dfabe4b885 Auto merge of #54032 - oli-obk:layout_scalar_ranges, r=eddyb
Add forever unstable attribute to allow specifying arbitrary scalar ranges

r? @eddyb for the first commit and @nikomatsakis for the second one
2018-09-14 09:47:21 +00:00
kennytm
d51c3643b4
Rollup merge of #54173 - phansch:suggest_valid_crate_type, r=estebank
Suggest valid crate type if invalid crate type is found

This adds a suggestion to the `invalid_crate_types` lint.

The suggestion is based on the Levenshtein distance to existing crate
types. If no suggestion is found it will show the lint without any
suggestions.

Closes #53958
2018-09-14 14:50:13 +08:00
bors
6ff0b2ed16 Auto merge of #53751 - F001:tuple-struct-self-ctor, r=petrochenkov,varkor
Implement RFC 2302: tuple_struct_self_ctor

Tracking issue: https://github.com/rust-lang/rust/issues/51994
2018-09-14 03:34:14 +00:00
Vadim Petrochenkov
0a0d642f38 Partially revert 674a5db "Fix undesirable fallout [from macro modularization]" 2018-09-14 02:49:21 +03:00
Eduard-Mihai Burtescu
514c6b6fe3 rustc_resolve: don't treat uniform_paths canaries as ambiguities unless they resolve to distinct Def's. 2018-09-13 23:28:55 +03:00
Philipp Hansch
7249a1b1ae
Suggest valid crate type if invalid
This adds a suggestion to the `invalid_crate_types` lint.

The suggestion is based on the Levenshtein distance to existing crate
types. If no suggestion is found it will show the lint without any
suggestions.
2018-09-13 21:26:45 +02:00
Vitaly _Vi Shukela
79919a7ed6
Add "while" tests for issue 54109 2018-09-13 20:51:29 +03:00
Vitaly _Vi Shukela
acc44e40cc
Use span_suggestion_with_applicability for "and/or" hinter
Advised by @estebank.
2018-09-13 20:44:07 +03:00
kennytm
5db68bae9a
Rollup merge of #53829 - alexcrichton:release-debuginfo, r=michaelwoerister
Add rustc SHA to released DWARF debuginfo

This commit updates the debuginfo that is encoded in all of our released
artifacts by default. Currently it has paths like `/checkout/src/...` but these
are a little inconsistent and have changed over time. This commit instead
attempts to actually define the file paths in our debuginfo to be consistent
between releases.

All debuginfo paths are now intended to be `/rustc/$sha` where `$sha` is the git
sha of the released compiler. Sub-paths are all paths into the git repo at that
`$sha`.
2018-09-14 00:46:22 +08:00
kennytm
d6421c7b0c
Rollup merge of #54147 - agnxy:const-eval-test, r=oli-obk
Add a test that tries to modify static memory at compile-time

Attempt to fix #53818
cc @oli-obk
2018-09-14 00:41:48 +08:00
Vitaly _Vi Shukela
888b8c9451
Add tests for issue 54109 2018-09-13 15:54:25 +03:00
Vadim Petrochenkov
beb3b5d22c resolve: Introduce two sub-namespaces in macro namespace 2018-09-13 14:48:50 +03:00
David Wood
37e18b1c51
Updated suggestion/help messages. 2018-09-13 10:01:18 +02:00
David Wood
7a89e93519
Emit appropriate suggestion when there's already 'static bound on the return type. 2018-09-13 10:01:18 +02:00
David Wood
65e2539666
Don't suggest adding a synthesized region name. 2018-09-13 10:01:18 +02:00
David Wood
6bf131f3f4
Added help message for impl trait static constraint. 2018-09-13 10:01:18 +02:00
F001
2157958b27 introduce SelfCtor 2018-09-13 12:27:29 +08:00
F001
a489169912 implement feature tuple_struct_self_ctor 2018-09-13 10:57:28 +08:00