2973 Commits

Author SHA1 Message Date
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
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
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
kennytm
9af125d248
Rollup merge of #53371 - estebank:tuple, r=nikomatsakis
Do not emit E0277 on incorrect tuple destructured binding

Fix #50333.
2018-09-13 10:02:14 +08:00
Andy Russell
d871b8ad4a
use structured suggestion for "missing mut" label
Fixes #54133.
2018-09-12 17:16:18 -04:00
bors
6810f5286b Auto merge of #53793 - toidiu:ak-stabalize, r=nikomatsakis
stabilize outlives requirements

https://github.com/rust-lang/rust/issues/44493

r? @nikomatsakis
2018-09-12 11:27:48 +00:00
Andrew Xu
3d6c2606a4 Add a test that tries to modify static memory at compile-time 2018-09-12 12:27:28 +08:00
kennytm
1fed251927
Rollup merge of #54142 - pnkfelix:fix-regression-test-for-16278, r=wesleywiser
Recover proper regression test for issue #16278.

Spawned from my note https://github.com/rust-lang/rust/pull/19955#issuecomment-420430761
2018-09-12 12:17:40 +08:00
kennytm
e7b45a0b1f
Rollup merge of #54072 - blitzerr:master, r=Mark-Simulacrum
Stabilization change for mod.rs

This change is in response to https://github.com/rust-lang/rust/issues/53125.
The patch makes the feature accepted and removes the tests that tested the
non-accepted status of the feature.
2018-09-12 12:17:30 +08:00
Esteban Küber
3d7099a968 Do not emit E0277 on incorrect tuple destructured binding 2018-09-11 17:09:22 -07:00
Felix S. Klock II
8a580baa27 Recover proper regression test for issue #16278. 2018-09-11 23:33:22 +02:00
bors
2f1547c0aa Auto merge of #53873 - nikomatsakis:nll-universe-subtyping-and-pattern-ascription, r=pnkfelix
support ascription for patterns in NLL

This implements the strategy outlined in [this comment](https://github.com/rust-lang/rust/issues/47184#issuecomment-416669986):

- We first extend the NLL subtyping code so it can handle inference variables and subtyping.
- Then we extend HAIR patterns with type ascription.
- Then we treat the type `T` in `let pat: T = ...` as an ascription.

Before landing, a few things:

- [x] Fix the WF rule bug (filed a FIXME https://github.com/rust-lang/rust/issues/54105)
- [x] Fix an ICE I encountered locally around bound regions, or else file a follow-up
- [x] More tests probably =)

r? @pnkfelix
2018-09-11 20:59:11 +00:00
bors
f17c2306e2 Auto merge of #54111 - nikomatsakis:issue-53686-keywords-and-macros, r=alexcrichton
warn about keywords in macro invocations

Fixes #53686

r? @alexcrichton
2018-09-11 15:40:44 +00:00
toidiu
731f4efae5 stabalize infer outlives requirements (RFC 2093).
Co-authored-by: nikomatsakis
2018-09-11 11:40:04 -04:00
Niko Matsakis
0cd8e0d03e we now successfully warn about async in macro invocations 2018-09-11 08:56:59 -04:00
Oliver Schneider
68298a5087 Use assertion-like static assertions 2018-09-11 13:30:26 +02:00
Oliver Schneider
d1b5231aa7 Fix const eval of ZST index operations to make the static assertion work 2018-09-11 11:27:12 +02:00
bors
7ee72070bd Auto merge of #51363 - japaric:stable-used, r=cramertj
stabilize #[used]

closes #40289

RFC for stabilization: rust-lang/rfcs#2386

r? @Centril

Where should this be documented? Currently the documentation is in the unstable book
2018-09-11 08:54:11 +00:00
Niko Matsakis
5adbdf82f3 add test case 2018-09-10 17:21:01 -04:00
Niko Matsakis
df37678b76 add FIXME related to ref x bindings 2018-09-10 14:12:20 -04:00
bors
551244f05b Auto merge of #54093 - petrochenkov:noinner, r=alexcrichton
Feature gate non-builtin attributes in inner attribute position

Closes item 3 from https://github.com/rust-lang/rust/pull/50911#issuecomment-411605393
2018-09-10 17:18:27 +00:00
Alex Crichton
5595aeb6b7 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-10 10:10:38 -07:00