Commit Graph

83630 Commits

Author SHA1 Message Date
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
Guillaume Gomez
3466d8044f
Rollup merge of #53941 - kzys:sort-impls, r=GuillaumeGomez
rustdoc: Sort implementors

Fixes #53812
2018-09-16 12:25:41 +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
Kazuyoshi Kato
2fe4503703 Check the remaining nodes 2018-09-16 00:39:12 -07:00
bors
f4819878cd Auto merge of #53754 - RalfJung:slice_align_to, r=alexcrichton
stabilize slice_align_to

This is very hard to implement correctly, and leads to [serious bugs](https://github.com/llogiq/bytecount/pull/42) when done incorrectly. Moreover, this is needed to be able to run code that opportunistically exploits alignment on miri. So code using `align_to`/`align_to_mut` gets the benefit of a well-tested implementation *and* of being able to run in miri to test for (some kinds of) UB.

This PR also clarifies the guarantee wrt. the middle part being as long as possible.  Should the docs say under which circumstances the middle part could be shorter? Currently, that can only happen when running in miri.
2018-09-16 07:22:24 +00:00
bors
e4ba1d41e3 Auto merge of #54116 - eddyb:extern-prelude, r=petrochenkov
rustc_resolve: allow only core, std, meta and --extern in Rust 2018 paths.

As per https://github.com/rust-lang/rust/issues/53166#issuecomment-419265401:
* Rust 2018 imports can no longer refer to crates not in "extern prelude"
  * `::foo` won't load a crate named `foo` unless `foo` is in the "extern prelude"
  * `extern crate foo;`, however, remains unchanged (can load arbitrary crates)
* `--extern crate_name` is added (note the lack of `=path`) as an unstable option
  * adds `crate_name` to the "extern prelude" (see above)
  * crate is searched in sysroot & library paths, just like `extern crate crate_name`.
  * `Cargo` support will be added later
* `core`, `std` and ~~`proc_macro`~~ `meta` are *always* available in the extern prelude
  * warning for interaction with `no_std` / `no_core` will be added later
  * **EDIT**: `proc_macro` was replaced by `meta`, see https://github.com/rust-lang/rust/issues/53166#issuecomment-421137230
    * note that there is no crate named `meta` being added, so `use meta::...;` will fail, we're only whitelisting it so we can start producing `uniform_paths` compatibility errors

Fixes #54006 (as the example now requires `--extern alloc`, which is unstable).
Fixes #54253 (hit during fixing RLS).

r? @petrochenkov cc @aturon @alexcrichton @Centril @joshtriplett
2018-09-15 19:50:26 +00:00
Eduard-Mihai Burtescu
bde0a54737 Revert "Auto merge of #53527 - Emerentius:test_all, r=nrc"
This reverts commit 9f53c87b4b, reversing
changes made to cba0fdf43c.
2018-09-15 22:48:38 +03:00
Eduard-Mihai Burtescu
4529d10636 Update submodules to include rust-lang-nursery/rust-clippy#3189 and rust-lang-nursery/rls#1054. 2018-09-15 22:48:10 +03: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
Eduard-Mihai Burtescu
26b1ed1b92 rustc: add unstable support for --extern crate_name without a path. 2018-09-15 22:48:10 +03:00
Eduard-Mihai Burtescu
afc2149c05 rustc: support extern crates loaded after query engine creation. 2018-09-15 22:48:10 +03:00
Marshall Bowers
2d7176f3a3 Fix missing struct name 2018-09-15 15:43:44 -04:00
Marshall Bowers
fa1868d9da Make rustc::middle::region::Scope's fields public 2018-09-15 13:10:29 -04:00
Philip Munksgaard
0e9d260e0a Improve output if no_lookup_host_duplicates fails
If the test fails, output the offending addresses and a helpful error message.
Also slightly improve legibility of the preceding line that puts the addresses
into a HashMap.
2018-09-15 17:17:35 +02:00
bors
9f53c87b4b Auto merge of #53527 - Emerentius:test_all, r=nrc
Add option to run all tests

This adds the "--include-ignored" flag to libtest, which allows running ignored and unignored tests in one go.

Closes #50363
2018-09-15 15:01:51 +00:00
Ralf Jung
f3a76a18d7 keep around some information for dead allocations so that we can use it to make sure a dangling ptr aligned and non-NULL 2018-09-15 16:34:30 +02:00
bors
cba0fdf43c Auto merge of #52896 - SergioBenitez:master, r=alexcrichton
Add inspection and setter methods to proc_macro::Diagnostic.

A few useful methods for `proc_macro::Diagnostic`.

r? @alexcrichton
2018-09-15 12:33:44 +00:00
bors
d92b0661c0 Auto merge of #54227 - flip1995:clippyup, r=kennytm
Update Clippy

Clippy one commit behind #54226. This should work

r? @Manishearth
2018-09-15 10:09:25 +00:00
bors
7896af9508 Auto merge of #54177 - nnethercote:streamline-bit-stuff, r=Mark-Simulacrum
Remove bitslice.rs

As the comment in `bitslice.rs` says:

> FIXME: merge with `bitvec`
2018-09-15 06:36:22 +00:00
Kazuyoshi Kato
d63fd46929 Add a small search box to seach Rust's standary library
This change partially addresses #14572. No CSS doesn't look fancy
but at least it is functional.
2018-09-14 23:28:32 -07:00
Kazuyoshi Kato
bbcb6339aa Add a test to prevent regression
The way it defines implementations is unrealistic though.
2018-09-14 22:42:44 -07: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
bors
ed45f9cbf4 Auto merge of #54151 - ljedrz:cleanup_hir, r=michaelwoerister
A few cleanups for hir

- prefer `if let` to `match` when only 1 branch matters
- `chain` iterable items that are looped over in sequence
- `sort_by_key` instead of `sort_by` when possible
- change cloning `map`s to `cloned()`
- use `unwrap_or_else` and `ok` when applicable
- a few other minor readability improvements
- whitespace fixes
2018-09-15 02:56:13 +00: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
Guillaume Gomez
818938f344 Remove treat-err-as-bug test 2018-09-14 20:58:58 +02: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
Isaac Woods
23e345bc0c
Move std::os::raw::c_void into libcore and re-export in libstd 2018-09-14 16:19:59 +01: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
flip1995
adf4a47210
Update Clippy 2018-09-14 14:00:32 +02: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
bors
fccde0018a Auto merge of #54215 - kennytm:rollup, r=kennytm
Rollup of 8 pull requests

Successful merges:

 - #53218 (Add a implementation of `From` for converting `&'a Option<T>` into `Option<&'a T>`)
 - #54024 (Fix compiling some rustc crates to wasm)
 - #54095 (Rename all mentions of `nil` to `unit`)
 - #54173 (Suggest valid crate type if invalid crate type is found)
 - #54194 (Remove println!() statement from HashMap unit test)
 - #54203 (Fix the stable release of os_str_str_ref_eq)
 - #54207 (re-mark the never docs as unstable)
 - #54210 (Update Cargo)

Failed merges:

r? @ghost
2018-09-14 07:18:25 +00:00
kennytm
dd4f5a2d48
Rollup merge of #54210 - alexcrichton:update-cargo, r=kennytm
Update Cargo

Should bring in some nice progress bars for compilations!
2018-09-14 14:50:18 +08:00
kennytm
585f39fb32
Rollup merge of #54207 - QuietMisdreavus:never-docs-stab, r=kennytm
re-mark the never docs as unstable

Fixes https://github.com/rust-lang/rust/issues/54198

This stability attribute was removed in https://github.com/rust-lang/rust/pull/47630, but not replaced with a `#[stable]` attribute, and when https://github.com/rust-lang/rust/pull/50121 reverted that stabilization, it didn't set the docs back to unstable. I'm concerned as to why it was allowed to not have the stability attribute at all, but at least this can put it back.

I'm nominating this for beta backport because it's a really small change, and right now our docs are in an awkward position where the `!` type is technically unstable to use, but the docs don't say so the same way any other library feature would. (And this is also the case *on stable* now, but i'm not suggesting a stable backport for a docs fix.)
2018-09-14 14:50:16 +08:00
kennytm
ae8410bf29
Rollup merge of #54203 - cuviper:stable-os_str_str_ref_eq, r=estebank
Fix the stable release of os_str_str_ref_eq

This was added and stabilized in commit 02503029b8, but while that
claimed to be for 1.28.0, it didn't actually make it until 1.29.0.

Fixes #54195.
2018-09-14 14:50:15 +08:00
kennytm
8c999fadb9
Rollup merge of #54194 - fintelia:patch-3, r=cramertj
Remove println!() statement from HashMap unit test
2018-09-14 14:50:14 +08: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
kennytm
9c0f946fe2
Rollup merge of #54095 - kenta7777:kenta7777#53719, r=davidtwco
Rename all mentions of `nil` to `unit`

Fixes #53719.

Renamed keywords nil to unit.
2018-09-14 14:50:11 +08:00
kennytm
33bc6c3dae
Rollup merge of #54024 - alexcrichton:compile-to-wasm, r=petrochenkov
Fix compiling some rustc crates to wasm

I was dabbling recently seeing what it would take to compile `rustfmt` to the
`wasm32-unknown-unknown` target and it turns out not much effort is needed!
Currently `rustfmt` depends on a few rustc crates published to crates.io, so
this commit touches up those crates to compile for wasm themselves. Notably:

* The `rustc_data_structures` crate's `flock` implementation is stubbed out to
  unconditionally return errors on unsupported platforms.
* The `rustc_errors` crate is extended to not do any locking for all non-windows
  platforms.

In both of these cases if we port the compiler to new platforms the
functionality isn't critical but will be discovered over time as it comes up, so
this hopefully doesn't make it too too hard to compile to new platforms!
2018-09-14 14:50:10 +08:00
kennytm
b3303edba6
Rollup merge of #53218 - weiznich:feature/option_ref_into, r=KodrAus
Add a implementation of `From` for converting `&'a Option<T>` into `Option<&'a T>`

I'm not sure if any annotations regarding the stabilization are needed or in general what's the correct process of adding such an impl.

cc @sgrif (We have talked about this)
2018-09-14 14:50:09 +08:00
Nicholas Nethercote
aa9aca0d3d De-overlap the lifetimes of flow_inits and flow_{un,ever_}inits.
This reduces `max-rss` for an `nll-check` build by 27% for `keccak`, and
by 8% for `inflate`.
2018-09-14 14:55:21 +10: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
Alex Crichton
7a1eed73be Update Cargo
Should bring in some nice progress bars for compilations!
2018-09-13 18:35:17 -07:00
bors
e7f1880921 Auto merge of #52962 - GuillaumeGomez:few-things, r=QuietMisdreavus
Fix trait item doc setting, add new setting, start hiding elements by default and then showing them up

r? @QuietMisdreavus
2018-09-14 01:07:21 +00:00
Vadim Petrochenkov
0a0d642f38 Partially revert 674a5db "Fix undesirable fallout [from macro modularization]" 2018-09-14 02:49:21 +03:00
Nicholas Nethercote
56be2afec5 Remove Iter and SparseIter in indexed_set.rs.
Because they're just thin wrappers around `BitIter` and `slice::Iter`.
2018-09-14 08:51:31 +10:00