]> git.lizzy.rs Git - rust.git/log
rust.git
4 years agoRollup merge of #66789 - eddyb:mir-source-scope-local-data, r=oli-obk
Mazdak Farrokhzad [Mon, 2 Dec 2019 03:09:00 +0000 (04:09 +0100)]
Rollup merge of #66789 - eddyb:mir-source-scope-local-data, r=oli-obk

rustc: move mir::SourceScopeLocalData to a field of SourceScopeData.

By having one `ClearCrossCrate<SourceScopeLocalData>` for each scope, as opposed to a single `ClearCrossCrate` for all the `SourceScopeLocalData`s, we can represent the fact that some scopes have `SourceScopeLocalData` associated with them, and some don't.

This is useful when doing MIR inlining across crates, because the `ClearCrossCrate` will be `Clear` for the cross-crate MIR scopes and `Set` for the local ones.

Also see https://github.com/rust-lang/rust/pull/66203#issuecomment-555589574 for some context around this approach.

Fixes #51314.

4 years agoRollup merge of #66346 - linkmauve:try-in-docstring, r=Dylan-DPC
Mazdak Farrokhzad [Mon, 2 Dec 2019 03:08:55 +0000 (04:08 +0100)]
Rollup merge of #66346 - linkmauve:try-in-docstring, r=Dylan-DPC

Replace .unwrap() with ? in std::os::unix::net

As people like to copy examples, this gives them good habits.

4 years agoAuto merge of #66917 - Centril:rollup-xj2enik, r=Centril
bors [Sun, 1 Dec 2019 06:00:33 +0000 (06:00 +0000)]
Auto merge of #66917 - Centril:rollup-xj2enik, r=Centril

Rollup of 9 pull requests

Successful merges:

 - #66503 (More useful test error messages on should_panic(expected=...) mismatch)
 - #66662 (Miri: run panic-catching tests in liballoc)
 - #66679 (Improve lifetime errors with implicit trait object lifetimes)
 - #66726 (Use recursion_limit for const eval stack limit)
 - #66790 (Do `min_const_fn` checks for `SetDiscriminant`s target)
 - #66832 (const_prop: detect and avoid catching Miri errors that require allocation)
 - #66880 (Add long error code explanation message for E0203)
 - #66890 (Format liballoc with rustfmt)
 - #66896 (pass Queries to compiler callbacks)

Failed merges:

r? @ghost

4 years agoRollup merge of #66896 - RalfJung:queries, r=Zoxc
Mazdak Farrokhzad [Sun, 1 Dec 2019 03:49:32 +0000 (04:49 +0100)]
Rollup merge of #66896 - RalfJung:queries, r=Zoxc

pass Queries to compiler callbacks

https://github.com/rust-lang/rust/pull/66791 made it impossible to access the tcx in the callbacks; this should fix that.

r? @Zoxc

4 years agoRollup merge of #66890 - dtolnay:fmt4, r=Dylan-DPC
Mazdak Farrokhzad [Sun, 1 Dec 2019 03:49:31 +0000 (04:49 +0100)]
Rollup merge of #66890 - dtolnay:fmt4, r=Dylan-DPC

Format liballoc with rustfmt

Same strategy as #66691 -- as with my previous formatting PRs, I am avoiding causing merge conflicts in other PRs by only touches those files that are not involved in any currently open PR. Files that appear in new PRs between when this PR is opened and when it makes it to the top of the bors queue will be reverted from this PR.

The list of files involved in open PRs is determined by querying GitHub's GraphQL API [with this script](https://gist.github.com/dtolnay/aa9c34993dc051a4f344d1b10e4487e8).

With the list of files from the script in outstanding_files, the relevant commands were:

```
$ find src/liballoc -name '*.rs' \
    | xargs rustfmt --edition=2018 --unstable-features --skip-children
$ rg liballoc outstanding_files | xargs git checkout --
```

To confirm no funny business:

```
$ git checkout $THIS_COMMIT^
$ git show --pretty= --name-only $THIS_COMMIT \
    | xargs rustfmt --edition=2018 --unstable-features --skip-children
$ git diff $THIS_COMMIT  # there should be no difference
```

r? @Dylan-DPC

4 years agoRollup merge of #66880 - aDotInTheVoid:add-E0203-long, r=GuillaumeGomez
Mazdak Farrokhzad [Sun, 1 Dec 2019 03:49:29 +0000 (04:49 +0100)]
Rollup merge of #66880 - aDotInTheVoid:add-E0203-long, r=GuillaumeGomez

Add long error code explanation message for E0203

Addressed some of #61137

r? @GuillaumeGomez

4 years agoRollup merge of #66832 - RalfJung:const-prop-no-alloc, r=oli-obk
Mazdak Farrokhzad [Sun, 1 Dec 2019 03:49:27 +0000 (04:49 +0100)]
Rollup merge of #66832 - RalfJung:const-prop-no-alloc, r=oli-obk

const_prop: detect and avoid catching Miri errors that require allocation

r? @wesleywiser @oli-obk

4 years agoRollup merge of #66790 - christianpoveda:check-set-discriminant, r=oli-obk
Mazdak Farrokhzad [Sun, 1 Dec 2019 03:49:26 +0000 (04:49 +0100)]
Rollup merge of #66790 - christianpoveda:check-set-discriminant, r=oli-obk

Do `min_const_fn` checks for `SetDiscriminant`s target

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

r? @oli-obk @ecstatic-morse

4 years agoRollup merge of #66726 - CAD97:miri-recursion-limit, r=RalfJung
Mazdak Farrokhzad [Sun, 1 Dec 2019 03:49:24 +0000 (04:49 +0100)]
Rollup merge of #66726 - CAD97:miri-recursion-limit, r=RalfJung

Use recursion_limit for const eval stack limit

cc https://github.com/rust-lang/miri/issues/643 @orium @RalfJung

I'm really not certain how exactly to handle this change, but it looks like it's that simple.

Reuse `recursion_limit` ("The maximum recursion limit for potentially infinitely recursive operations such as auto-dereference and monomorphization") which is configurable by the user for the const evaluation stack frame limit.

The other option is to make `const_eval_stack_frame_limit` configurable in the same way as `recursion_limit` (but I'm not sure how to do that and it'd be a bigger change).

Fixes https://github.com/rust-lang/miri/issues/643.

4 years agoRollup merge of #66679 - mark-i-m:fix-anon-lifetime-errors, r=matthewjasper
Mazdak Farrokhzad [Sun, 1 Dec 2019 03:49:23 +0000 (04:49 +0100)]
Rollup merge of #66679 - mark-i-m:fix-anon-lifetime-errors, r=matthewjasper

Improve lifetime errors with implicit trait object lifetimes

r? @matthewjasper

cc @estebank

I still think the ideal solution would be to construct a `BrAnon`, but that seems like a more invasive change, and can be done later. This at least gets rid of the hack in `OutliveSuggestion` and is slightly more principled.

4 years agoRollup merge of #66662 - RalfJung:miri-test-liballoc, r=dtolnay
Mazdak Farrokhzad [Sun, 1 Dec 2019 03:49:21 +0000 (04:49 +0100)]
Rollup merge of #66662 - RalfJung:miri-test-liballoc, r=dtolnay

Miri: run panic-catching tests in liballoc

I also converted two tests from using `thread::spawn(...).join()` just for catching panics, to `catch_panic`, so that Miri can run them.

4 years agoRollup merge of #66503 - thomasetter:panic-error-msg, r=joshtriplett
Mazdak Farrokhzad [Sun, 1 Dec 2019 03:49:19 +0000 (04:49 +0100)]
Rollup merge of #66503 - thomasetter:panic-error-msg, r=joshtriplett

More useful test error messages on should_panic(expected=...) mismatch

Fixes  #66304
r? @gilescope

Shows both the actual as well as the expected panic value when a test with `should_panic(expected=...)` fails.
This makes `should_panic` more consistent with `assert_eq`.

I am not sure whether printing the `Any::type_id()` is useful, is there something better that we could print for non-string panic values?

4 years agoAuto merge of #66908 - Centril:rollup-26givp6, r=Centril
bors [Sun, 1 Dec 2019 00:39:18 +0000 (00:39 +0000)]
Auto merge of #66908 - Centril:rollup-26givp6, r=Centril

Rollup of 9 pull requests

Successful merges:

 - #66612 (Initial implementation of or-pattern usefulness checking)
 - #66705 (Atomic as_mut_ptr)
 - #66759 (impl TrustedLen for vec::Drain)
 - #66858 (Use LLVMAddAnalysisPasses instead of Rust's wrapper)
 - #66870 (SimplifyArmIdentity only for locals with the same type)
 - #66883 (rustc_typeck: gate AnonConst's generics on feature(const_generics).)
 - #66889 (Make python-generated source files compatible with rustfmt)
 - #66894 (Remove unneeded prelude imports in libcore tests)
 - #66895 (Feature gating *declarations* => new crate `rustc_feature`)

Failed merges:

 - #66905 (rustc_plugin: Remove some remaining plugin features)

r? @ghost

4 years agoMerge match branches
Christian Poveda [Sat, 30 Nov 2019 17:25:45 +0000 (12:25 -0500)]
Merge match branches

4 years agoRollup merge of #66895 - Centril:rustc_feature, r=oli-obk
Mazdak Farrokhzad [Sat, 30 Nov 2019 15:56:58 +0000 (16:56 +0100)]
Rollup merge of #66895 - Centril:rustc_feature, r=oli-obk

Feature gating *declarations* => new crate `rustc_feature`

This PR moves the data-oriented parts of feature gating into its own crate, `rustc_feature`.
The parts consist of some data types as well as `accepted`, `active`, `removed`, and `builtin_attrs`.

Feature gate checking itself remains in `syntax::feature_gate::check`. The parts which define how to emit feature gate errors could probably be moved to `rustc_errors` or to the new `rustc_session` crate introduced in #66878. The visitor itself could probably be moved as a pass in `rustc_passes` depending on how the dependency edges work out.

The PR also contains some drive-by cleanup of feature gate checking. As such, the PR probably best read commit-by-commit.

r? @oli-obk
cc @petrochenkov
cc @Mark-Simulacrum

4 years agoRollup merge of #66894 - dtolnay:prelude, r=Centril
Mazdak Farrokhzad [Sat, 30 Nov 2019 15:56:56 +0000 (16:56 +0100)]
Rollup merge of #66894 - dtolnay:prelude, r=Centril

Remove unneeded prelude imports in libcore tests

These three lines are from c82da7a54b9efb1a0ccbe11de66c71f547bf7db9 dating back to 2015.

They cause problems when applying rustfmt to the codebase, because reordering wildcard imports can trigger new unused import warnings.

As a minimized example, the following program compiles successfully:

```rust
#![deny(unused_imports)]

use std::fmt::Debug;
use std::marker::Send;

pub mod repro {
    use std::prelude::v1::*;
    use super::*;

    pub type D = dyn Debug;
    pub type S = dyn Send;
}

pub type S = dyn Send;
```

but putting it through rustfmt produces a program that fails to compile:

```rust
#![deny(unused_imports)]

use std::fmt::Debug;
use std::marker::Send;

pub mod repro {
    use super::*;
    use std::prelude::v1::*;

    pub type D = dyn Debug;
    pub type S = dyn Send;
}

pub type S = dyn Send;
```

The error is:

```console
error: unused import: `std::prelude::v1::*`
 --> src/main.rs:8:9
  |
8 |     use std::prelude::v1::*;
  |         ^^^^^^^^^^^^^^^^^^^
```

4 years agoRollup merge of #66889 - dtolnay:fmt6, r=rkruppe
Mazdak Farrokhzad [Sat, 30 Nov 2019 15:56:55 +0000 (16:56 +0100)]
Rollup merge of #66889 - dtolnay:fmt6, r=rkruppe

Make python-generated source files compatible with rustfmt

This PR adjusts the generators for src/libcore/num/dec2flt/table.rs, src/libcore/unicode/printable.rs, and src/libcore/unicode/tables.rs to make it so running `rustfmt` on the generated files no longer needs to apply any changes.

This involves tweaking the python scripts where reasonable to better match rustfmt's style, and adding `#[rustfmt::skip]` to big constant tables that there's no point having rustfmt rewrap.

r? @Dylan-DPC

4 years agoRollup merge of #66883 - eddyb:we-cant-have-nice-things, r=oli-obk
Mazdak Farrokhzad [Sat, 30 Nov 2019 15:56:53 +0000 (16:56 +0100)]
Rollup merge of #66883 - eddyb:we-cant-have-nice-things, r=oli-obk

rustc_typeck: gate AnonConst's generics on feature(const_generics).

This PR employs the fix for #43408 when `#![feature(const_generics)]` is enabled, making the feature-gate the opt-in for all the possible breakage this may incur.

For example, if this PR lands, this will cause a cycle error (due to #60471):
```rust
#![feature(const_generics)]

fn foo<T: Into<[u8; 4]>>() {}
```
And so will anything with type-level const expressions, in its bounds.
Surprisingly, `impl`s don't seem to be affected (if they were, even libcore wouldn't compile).

One thing I'm worried about is not knowing how much unstable code out there, using const-generics, will be broken. But types like `Foo<{N+1}>` never really worked, and do after this PR, just not in bounds - so ironically, it's type-level const expressions that don't depend on generics, which will break (in bounds).

Also, if we do this, we'll have effectively blocked stabilization of const generics on #60471.

r? @oli-obk cc @varkor @yodaldevoid @nikomatsakis

4 years agoRollup merge of #66870 - tmiasko:simplify-ty, r=oli-obk
Mazdak Farrokhzad [Sat, 30 Nov 2019 15:56:52 +0000 (16:56 +0100)]
Rollup merge of #66870 - tmiasko:simplify-ty, r=oli-obk

SimplifyArmIdentity only for locals with the same type

Fixes #66856
Fixes #66851

4 years agoRollup merge of #66858 - 0dvictor:capi, r=rkruppe
Mazdak Farrokhzad [Sat, 30 Nov 2019 15:56:50 +0000 (16:56 +0100)]
Rollup merge of #66858 - 0dvictor:capi, r=rkruppe

Use LLVMAddAnalysisPasses instead of Rust's wrapper

LLVM exposes a C API `LLVMAddAnalysisPasses` and hence Rust's own wrapper `LLVMRustAddAnalysisPasses` is not needed anymore.

4 years agoRollup merge of #66759 - CAD97:patch-3, r=KodrAus
Mazdak Farrokhzad [Sat, 30 Nov 2019 15:56:49 +0000 (16:56 +0100)]
Rollup merge of #66759 - CAD97:patch-3, r=KodrAus

impl TrustedLen for vec::Drain

The iterator methods just forward to `slice::Iter`, which is `TrustedLen`.

This can probably be applied to other `Drain` structs as well.

4 years agoRollup merge of #66705 - pitdicker:atomic_mut_ptr, r=KodrAus
Mazdak Farrokhzad [Sat, 30 Nov 2019 15:56:47 +0000 (16:56 +0100)]
Rollup merge of #66705 - pitdicker:atomic_mut_ptr, r=KodrAus

Atomic as_mut_ptr

I encountered the following pattern a few times: In Rust we use some atomic type like `AtomicI32`, and an FFI interface exposes this as `*mut i32` (or some similar `libc` type).

It was not obvious to me if a just transmuting a pointer to the atomic was acceptable, or if this should use a cast that goes through an `UnsafeCell`. See https://github.com/rust-lang/rust/issues/66136#issuecomment-557802477

Transmuting the pointer directly:
```rust
let atomic = AtomicI32::new(1);
let ptr = &atomic as *const AtomicI32 as *mut i32;
unsafe {
    ffi(ptr);
}
```

A dance with `UnsafeCell`:
```rust
let atomic = AtomicI32::new(1);
unsafe {
    let ptr = (&*(&atomic as *const AtomicI32 as *const UnsafeCell<i32>)).get();
    ffi(ptr);
}
```

Maybe in the end both ways could be valid. But why not expose a direct method to get a pointer from the standard library?

An `as_mut_ptr` method on atomics can be safe, because only the use of the resulting pointer is where things can get unsafe. I documented its use for FFI, and "Doing non-atomic reads and writes on the resulting integer can be a data race."

The standard library could make use this method in a few places in the WASM module.

cc @RalfJung as you answered my original question.

4 years agoRollup merge of #66612 - Nadrieril:or-patterns-initial, r=varkor
Mazdak Farrokhzad [Sat, 30 Nov 2019 15:56:45 +0000 (16:56 +0100)]
Rollup merge of #66612 - Nadrieril:or-patterns-initial, r=varkor

Initial implementation of or-pattern usefulness checking

The title says it all.
I'd like to request a perf run on that, hopefully this doesn't kill performance too much.

cc https://github.com/rust-lang/rust/issues/54883

4 years agoApply suggestions from code review
Nadrieril Feneanar [Sat, 30 Nov 2019 13:35:46 +0000 (13:35 +0000)]
Apply suggestions from code review

Co-Authored-By: varkor <github@varkor.com>
4 years agoAuto merge of #66887 - dtolnay:rollup-uxowp8d, r=Centril
bors [Sat, 30 Nov 2019 12:42:44 +0000 (12:42 +0000)]
Auto merge of #66887 - dtolnay:rollup-uxowp8d, r=Centril

Rollup of 4 pull requests

Successful merges:

 - #66818 (Format libstd/os with rustfmt)
 - #66819 (Format libstd/sys with rustfmt)
 - #66820 (Format libstd with rustfmt)
 - #66847 (Allow any identifier as format arg name)

Failed merges:

r? @ghost

4 years agoFill tracking issue
Paul Dicker [Sat, 30 Nov 2019 11:58:15 +0000 (12:58 +0100)]
Fill tracking issue

4 years agoDocument why as_mut_ptr is safe
Paul Dicker [Sat, 30 Nov 2019 11:57:50 +0000 (12:57 +0100)]
Document why as_mut_ptr is safe

4 years agoAddress review comments
Nixon [Sat, 30 Nov 2019 10:56:07 +0000 (10:56 +0000)]
Address review comments

4 years agopass Queries to compiler callbacks
Ralf Jung [Sat, 30 Nov 2019 09:16:19 +0000 (10:16 +0100)]
pass Queries to compiler callbacks

4 years agoRemove unneeded prelude imports in libcore tests
David Tolnay [Sat, 30 Nov 2019 07:15:45 +0000 (23:15 -0800)]
Remove unneeded prelude imports in libcore tests

These three lines are from c82da7a54b9efb1a0ccbe11de66c71f547bf7db9 in
2015.

They cause problems when applying rustfmt to the codebase, because
reordering wildcard imports can trigger new unused import warnings.

As a minimized example, the following program compiles successfully:

    #![deny(unused_imports)]

    use std::fmt::Debug;
    use std::marker::Send;

    pub mod repro {
        use std::prelude::v1::*;
        use super::*;

        pub type D = dyn Debug;
        pub type S = dyn Send;
    }

    pub type S = dyn Send;

but putting it through rustfmt produces a program that fails to compile:

    #![deny(unused_imports)]

    use std::fmt::Debug;
    use std::marker::Send;

    pub mod repro {
        use super::*;
        use std::prelude::v1::*;

        pub type D = dyn Debug;
        pub type S = dyn Send;
    }

    pub type S = dyn Send;

The error is:

    error: unused import: `std::prelude::v1::*`
     --> src/main.rs:8:9
      |
    8 |     use std::prelude::v1::*;
      |         ^^^^^^^^^^^^^^^^^^^

4 years agoderive(Default) for Features
Mazdak Farrokhzad [Sat, 30 Nov 2019 06:44:01 +0000 (07:44 +0100)]
derive(Default) for Features

4 years agomove GateIssue to rustc_feature & simplify emit_feature_err
Mazdak Farrokhzad [Sat, 30 Nov 2019 06:40:28 +0000 (07:40 +0100)]
move GateIssue to rustc_feature & simplify emit_feature_err

4 years agoupdate rustc_feature crate docs
Mazdak Farrokhzad [Sat, 30 Nov 2019 05:43:32 +0000 (06:43 +0100)]
update rustc_feature crate docs

4 years agotidy: adjust feature gating path
Mazdak Farrokhzad [Sat, 30 Nov 2019 05:32:49 +0000 (06:32 +0100)]
tidy: adjust feature gating path

4 years agoFormat liballoc with rustfmt
David Tolnay [Sat, 30 Nov 2019 03:30:49 +0000 (19:30 -0800)]
Format liballoc with rustfmt

4 years agoMake libcore/unicode/tables.rs compatible with rustfmt
David Tolnay [Sat, 30 Nov 2019 03:50:24 +0000 (19:50 -0800)]
Make libcore/unicode/tables.rs compatible with rustfmt

4 years agoMake libcore/unicode/printable.rs compatible with rustfmt
David Tolnay [Sat, 30 Nov 2019 03:44:55 +0000 (19:44 -0800)]
Make libcore/unicode/printable.rs compatible with rustfmt

4 years agoMake dec2flt_table compatible with rustfmt
David Tolnay [Sat, 30 Nov 2019 03:38:59 +0000 (19:38 -0800)]
Make dec2flt_table compatible with rustfmt

4 years agoUse recursion_limit for const eval stack limit
cad97 [Mon, 25 Nov 2019 02:09:37 +0000 (21:09 -0500)]
Use recursion_limit for const eval stack limit

4 years agoRollup merge of #66847 - dtolnay:_fmt, r=joshtriplett
David Tolnay [Sat, 30 Nov 2019 02:46:09 +0000 (18:46 -0800)]
Rollup merge of #66847 - dtolnay:_fmt, r=joshtriplett

Allow any identifier as format arg name

Previously:

```console
error: invalid format string: invalid argument name `_x`
 --> src/main.rs:2:16
  |
2 |     println!("{_x}", _x=0);
  |                ^^ invalid argument name in format string
  |
  = note: argument names cannot start with an underscore
```

Not supporting identifiers starting with underscore appears to have been an arbitrary limitation from 2013 in code that was most likely never reviewed: https://github.com/rust-lang/rust/pull/8245/files#diff-0347868ef389c805e97636623e4a4ea6R277

The error message was dutifully improved in #50610 but is there any reason that leading underscore would be a special case?

This commit updates the format_args parser to accept identifiers with leading underscores.

4 years agoRollup merge of #66820 - dtolnay:fmt3, r=Dylan-DPC
David Tolnay [Sat, 30 Nov 2019 02:46:08 +0000 (18:46 -0800)]
Rollup merge of #66820 - dtolnay:fmt3, r=Dylan-DPC

Format libstd with rustfmt

(Same strategy as #66691.)

This commit applies rustfmt with rust-lang/rust's default settings to files in src/libstd *that are not involved in any currently open PR* to minimize merge conflicts, and are not part of libstd/os (#66818) or libstd/sys (#66819). The list of files involved in open PRs was determined by querying GitHub's GraphQL API [with this script](https://gist.github.com/dtolnay/aa9c34993dc051a4f344d1b10e4487e8).

With the list of files from the script in outstanding_files, the relevant commands were:

    $ find src/libstd -name '*.rs' \
        | xargs rustfmt --edition=2018 --unstable-features --skip-children
    $ rg libstd outstanding_files | xargs git checkout --

Repeating this process several months apart should get us coverage of most of the rest of libstd.

To confirm no funny business:

    $ git checkout $THIS_COMMIT^
    $ git show --pretty= --name-only $THIS_COMMIT \
        | xargs rustfmt --edition=2018 --unstable-features --skip-children
    $ git diff $THIS_COMMIT  # there should be no difference

4 years agoRollup merge of #66819 - dtolnay:fmt2, r=kennytm
David Tolnay [Sat, 30 Nov 2019 02:46:06 +0000 (18:46 -0800)]
Rollup merge of #66819 - dtolnay:fmt2, r=kennytm

Format libstd/sys with rustfmt

(Same strategy as #66691.)

This commit applies rustfmt with rust-lang/rust's default settings to files in src/libstd/sys *that are not involved in any currently open PR* to minimize merge conflicts. The list of files involved in open PRs was determined by querying GitHub's GraphQL API [with this script](https://gist.github.com/dtolnay/aa9c34993dc051a4f344d1b10e4487e8).

With the list of files from the script in outstanding_files, the relevant commands were:

    $ find src/libstd/sys -name '*.rs' \
        | xargs rustfmt --edition=2018 --unstable-features --skip-children
    $ rg libstd/sys outstanding_files | xargs git checkout --

Repeating this process several months apart should get us coverage of most of the rest of the files.

To confirm no funny business:

    $ git checkout $THIS_COMMIT^
    $ git show --pretty= --name-only $THIS_COMMIT \
        | xargs rustfmt --edition=2018 --unstable-features --skip-children
    $ git diff $THIS_COMMIT  # there should be no difference

4 years agoRollup merge of #66818 - dtolnay:fmt1, r=Dylan-DPC
David Tolnay [Sat, 30 Nov 2019 02:46:05 +0000 (18:46 -0800)]
Rollup merge of #66818 - dtolnay:fmt1, r=Dylan-DPC

Format libstd/os with rustfmt

(Same strategy as #66691.)

This commit applies rustfmt with rust-lang/rust's default settings to files in src/libstd/os *that are not involved in any currently open PR* to minimize merge conflicts. The list of files involved in open PRs was determined by querying GitHub's GraphQL API [with this script](https://gist.github.com/dtolnay/aa9c34993dc051a4f344d1b10e4487e8).

With the list of files from the script in outstanding_files, the relevant commands were:

    $ find src/libstd/os -name '*.rs' \
        | xargs rustfmt --edition=2018 --unstable-features --skip-children
    $ rg libstd/os outstanding_files | xargs git checkout --

Repeating this process several months apart should get us coverage of most of the rest of the files.

To confirm no funny business:

    $ git checkout $THIS_COMMIT^
    $ git show --pretty= --name-only $THIS_COMMIT \
        | xargs rustfmt --edition=2018 --unstable-features --skip-children
    $ git diff $THIS_COMMIT  # there should be no difference

4 years agoBless ui test for libstd reformat
David Tolnay [Wed, 27 Nov 2019 19:07:26 +0000 (11:07 -0800)]
Bless ui test for libstd reformat

4 years agoFormat libstd with rustfmt
David Tolnay [Wed, 27 Nov 2019 18:29:00 +0000 (10:29 -0800)]
Format libstd with rustfmt

This commit applies rustfmt with rust-lang/rust's default settings to
files in src/libstd *that are not involved in any currently open PR* to
minimize merge conflicts. THe list of files involved in open PRs was
determined by querying GitHub's GraphQL API with this script:
https://gist.github.com/dtolnay/aa9c34993dc051a4f344d1b10e4487e8

With the list of files from the script in outstanding_files, the
relevant commands were:

    $ find src/libstd -name '*.rs' \
        | xargs rustfmt --edition=2018 --unstable-features --skip-children
    $ rg libstd outstanding_files | xargs git checkout --

Repeating this process several months apart should get us coverage of
most of the rest of libstd.

To confirm no funny business:

    $ git checkout $THIS_COMMIT^
    $ git show --pretty= --name-only $THIS_COMMIT \
        | xargs rustfmt --edition=2018 --unstable-features --skip-children
    $ git diff $THIS_COMMIT  # there should be no difference

4 years agoFormat libstd/sys with rustfmt
David Tolnay [Wed, 27 Nov 2019 18:28:39 +0000 (10:28 -0800)]
Format libstd/sys with rustfmt

This commit applies rustfmt with rust-lang/rust's default settings to
files in src/libstd/sys *that are not involved in any currently open PR*
to minimize merge conflicts. THe list of files involved in open PRs was
determined by querying GitHub's GraphQL API with this script:
https://gist.github.com/dtolnay/aa9c34993dc051a4f344d1b10e4487e8

With the list of files from the script in outstanding_files, the
relevant commands were:

    $ find src/libstd/sys -name '*.rs' \
        | xargs rustfmt --edition=2018 --unstable-features --skip-children
    $ rg libstd/sys outstanding_files | xargs git checkout --

Repeating this process several months apart should get us coverage of
most of the rest of the files.

To confirm no funny business:

    $ git checkout $THIS_COMMIT^
    $ git show --pretty= --name-only $THIS_COMMIT \
        | xargs rustfmt --edition=2018 --unstable-features --skip-children
    $ git diff $THIS_COMMIT  # there should be no difference

4 years agoFormat libstd/os with rustfmt
David Tolnay [Wed, 27 Nov 2019 18:28:21 +0000 (10:28 -0800)]
Format libstd/os with rustfmt

This commit applies rustfmt with rust-lang/rust's default settings to
files in src/libstd/os *that are not involved in any currently open PR*
to minimize merge conflicts. THe list of files involved in open PRs was
determined by querying GitHub's GraphQL API with this script:
https://gist.github.com/dtolnay/aa9c34993dc051a4f344d1b10e4487e8

With the list of files from the script in outstanding_files, the
relevant commands were:

    $ find src/libstd/os -name '*.rs' \
        | xargs rustfmt --edition=2018 --unstable-features --skip-children
    $ rg libstd/os outstanding_files | xargs git checkout --

Repeating this process several months apart should get us coverage of
most of the rest of the files.

To confirm no funny business:

    $ git checkout $THIS_COMMIT^
    $ git show --pretty= --name-only $THIS_COMMIT \
        | xargs rustfmt --edition=2018 --unstable-features --skip-children
    $ git diff $THIS_COMMIT  # there should be no difference

4 years agocheck.rs: inline a constant
Mazdak Farrokhzad [Sat, 30 Nov 2019 02:30:49 +0000 (03:30 +0100)]
check.rs: inline a constant

4 years agoAuto merge of #66873 - RalfJung:miri-args, r=dtolnay
bors [Sat, 30 Nov 2019 02:12:19 +0000 (02:12 +0000)]
Auto merge of #66873 - RalfJung:miri-args, r=dtolnay

really_init cmdline args on Miri

r? @joshtriplett

Closes #66862.

4 years agomove UnstableFeatures -> rustc_feature
Mazdak Farrokhzad [Sat, 30 Nov 2019 01:50:47 +0000 (02:50 +0100)]
move UnstableFeatures -> rustc_feature

4 years agoinline two explanation constants
Mazdak Farrokhzad [Sat, 30 Nov 2019 01:40:28 +0000 (02:40 +0100)]
inline two explanation constants

4 years agobuiltin_attrs.rs -> rustc_feature
Mazdak Farrokhzad [Sat, 30 Nov 2019 01:34:18 +0000 (02:34 +0100)]
builtin_attrs.rs -> rustc_feature

4 years agomove is_builtin_attr to syntax::attr
Mazdak Farrokhzad [Sat, 30 Nov 2019 01:20:07 +0000 (02:20 +0100)]
move is_builtin_attr to syntax::attr

4 years agobuiltin_attrs: inline some strings
Mazdak Farrokhzad [Sat, 30 Nov 2019 01:03:32 +0000 (02:03 +0100)]
builtin_attrs: inline some strings

4 years agosimplify gated cfgs logic
Mazdak Farrokhzad [Sat, 30 Nov 2019 00:57:53 +0000 (01:57 +0100)]
simplify gated cfgs logic

4 years agomove AttributeTemplate to builtin_attrs
Mazdak Farrokhzad [Fri, 29 Nov 2019 23:56:46 +0000 (00:56 +0100)]
move AttributeTemplate to builtin_attrs

4 years agomove Stability to rustc_feature
Mazdak Farrokhzad [Fri, 29 Nov 2019 23:39:51 +0000 (00:39 +0100)]
move Stability to rustc_feature

4 years agorustc: move mir::SourceScopeLocalData to a field of SourceScopeData.
Eduard-Mihai Burtescu [Tue, 26 Nov 2019 20:17:35 +0000 (22:17 +0200)]
rustc: move mir::SourceScopeLocalData to a field of SourceScopeData.

4 years agorustc_mir: fix inliner to also copy over source_scope_local_data.
Eduard-Mihai Burtescu [Tue, 26 Nov 2019 17:55:32 +0000 (19:55 +0200)]
rustc_mir: fix inliner to also copy over source_scope_local_data.

4 years agorustc: move MIR source_scope_local_data's ClearCrossCrate to be around elements.
Eduard-Mihai Burtescu [Tue, 26 Nov 2019 17:55:03 +0000 (19:55 +0200)]
rustc: move MIR source_scope_local_data's ClearCrossCrate to be around elements.

4 years agointroduce crate rustc_feature and move active, accepted, and removed to it
Mazdak Farrokhzad [Fri, 29 Nov 2019 23:23:38 +0000 (00:23 +0100)]
introduce crate rustc_feature and move active, accepted, and removed to it

4 years agorustc_typeck: gate AnonConst's generics on feature(const_generics).
Eduard-Mihai Burtescu [Fri, 29 Nov 2019 23:15:15 +0000 (01:15 +0200)]
rustc_typeck: gate AnonConst's generics on feature(const_generics).

4 years agorustc: fix ty::Const::eval's handling of inference variables.
Eduard-Mihai Burtescu [Fri, 29 Nov 2019 23:13:47 +0000 (01:13 +0200)]
rustc: fix ty::Const::eval's handling of inference variables.

4 years agoAdd explanation message for E0203
Nixon [Fri, 29 Nov 2019 22:16:26 +0000 (22:16 +0000)]
Add explanation message for E0203

4 years agoAuto merge of #66879 - RalfJung:rollup-nprxpzi, r=RalfJung
bors [Fri, 29 Nov 2019 22:00:28 +0000 (22:00 +0000)]
Auto merge of #66879 - RalfJung:rollup-nprxpzi, r=RalfJung

Rollup of 11 pull requests

Successful merges:

 - #66379 (Rephrase docs in for ptr)
 - #66589 (Draw vertical lines correctly in compiler error messages)
 - #66613 (Allow customising ty::TraitRef's printing behavior)
 - #66766 (Panic machinery comments and tweaks)
 - #66791 (Handle GlobalCtxt directly from librustc_interface query system)
 - #66793 (Record temporary static references in generator witnesses)
 - #66808 (Cleanup error code)
 - #66826 (Clarifies how to tag users for assigning PRs)
 - #66837 (Clarify `{f32,f64}::EPSILON` docs)
 - #66844 (Miri: do not consider memory allocated by caller_location leaked)
 - #66872 (Minor documentation fix)

Failed merges:

r? @ghost

4 years agoRollup merge of #66872 - Mikotochan:patch-1, r=jonas-schievink
Ralf Jung [Fri, 29 Nov 2019 21:57:44 +0000 (22:57 +0100)]
Rollup merge of #66872 - Mikotochan:patch-1, r=jonas-schievink

Minor documentation fix

Fixed the documentation for any as is a trait rather than a type.

4 years agoRollup merge of #66844 - RalfJung:caller-location-leak, r=oli-obk
Ralf Jung [Fri, 29 Nov 2019 21:57:42 +0000 (22:57 +0100)]
Rollup merge of #66844 - RalfJung:caller-location-leak, r=oli-obk

Miri: do not consider memory allocated by caller_location leaked

Fixes https://github.com/rust-lang/miri/issues/1071

r? @oli-obk

I am not sure if this is the best approach, but it certainly is the easiest.

4 years agoRollup merge of #66837 - ohadravid:epsilon-doc, r=dtolnay
Ralf Jung [Fri, 29 Nov 2019 21:57:41 +0000 (22:57 +0100)]
Rollup merge of #66837 - ohadravid:epsilon-doc, r=dtolnay

Clarify `{f32,f64}::EPSILON` docs

The doc for `EPSILON` says:
>  This is the difference between `1.0` and the next **largest** representable number.

Which is a bit unclear.

[Wikipedia](https://en.wikipedia.org/wiki/Machine_epsilon) says
> Machine epsilon is defined as the difference between 1 and the next **larger** floating point number

So this PR update the docs to match the Wikipedia version.

The original PR also has this in a [comment](https://github.com/rust-lang/rust/pull/50919#discussion_r192600209).

4 years agoRollup merge of #66826 - mlodato517:mlodato517-clarify-pr-message-assigner, r=Dylan-DPC
Ralf Jung [Fri, 29 Nov 2019 21:57:39 +0000 (22:57 +0100)]
Rollup merge of #66826 - mlodato517:mlodato517-clarify-pr-message-assigner, r=Dylan-DPC

Clarifies how to tag users for assigning PRs

Clarifies language of where to put `r?` text to assign a particular user. Mostly a follow up of [this discussion](https://github.com/rust-lang/rust/pull/66797#issuecomment-559153444).

4 years agoRollup merge of #66808 - GuillaumeGomez:cleanup-err-code-3, r=Dylan-DPC
Ralf Jung [Fri, 29 Nov 2019 21:57:38 +0000 (22:57 +0100)]
Rollup merge of #66808 - GuillaumeGomez:cleanup-err-code-3, r=Dylan-DPC

Cleanup error code

r? @Dylan-DPC

4 years agoRollup merge of #66793 - matthewjasper:record-static-refs, r=cramertj
Ralf Jung [Fri, 29 Nov 2019 21:57:36 +0000 (22:57 +0100)]
Rollup merge of #66793 - matthewjasper:record-static-refs, r=cramertj

Record temporary static references in generator witnesses

Closes #66695

* Record the pointer to static's type in MIR.
* Normalize the static's type (so that constants can be compared correctly).

4 years agoRollup merge of #66791 - cjgillot:arena, r=Mark-Simulacrum
Ralf Jung [Fri, 29 Nov 2019 21:57:34 +0000 (22:57 +0100)]
Rollup merge of #66791 - cjgillot:arena, r=Mark-Simulacrum

Handle GlobalCtxt directly from librustc_interface query system

This PR constructs the `GlobalCtxt` as a member of the `Queries` in librustc_interface.
This simplifies the code to construct it, at the expense of added complexity in the query control flow.
This allows to handle the arenas directly from librustc_interface.

Based on #66707

r? @Zoxc

4 years agoRollup merge of #66766 - RalfJung:panic-comments, r=SimonSapin
Ralf Jung [Fri, 29 Nov 2019 21:57:33 +0000 (22:57 +0100)]
Rollup merge of #66766 - RalfJung:panic-comments, r=SimonSapin

Panic machinery comments and tweaks

This is mostly more comments, but I also renamed some things:
* `BoxMeUp::box_me_up` is not terribly descriptive, and since this is a "take"-style method (the argument is `&mut self` but the return type is fully owned, even though you can't tell from the type) I chose a name involving "take".
* `continue_panic_fmt` was very confusing as it was entirely unclear what was being continued -- for some time I thought "continue" might be the same as "resume" for a panic, but that's something entirely different. So I renamed this to `begin_panic_handler`, matching the `begin_panic*` theme of the other entry points.

r? @Dylan-DPC @SimonSapin

4 years agoRollup merge of #66613 - Areredify:trait-ref-print, r=eddyb
Ralf Jung [Fri, 29 Nov 2019 21:57:31 +0000 (22:57 +0100)]
Rollup merge of #66613 - Areredify:trait-ref-print, r=eddyb

Allow customising ty::TraitRef's printing behavior

This pr allows to explicitly choose which representation of `TraitRef` (`<T as Trait<U>>` or `Trait<U>`) you want to print. `Debug` and `Display` representations of `TraitRef` now match.

Closes #59188.

4 years agoRollup merge of #66589 - TheSamsa:master, r=Dylan-DPC
Ralf Jung [Fri, 29 Nov 2019 21:57:30 +0000 (22:57 +0100)]
Rollup merge of #66589 - TheSamsa:master, r=Dylan-DPC

Draw vertical lines correctly in compiler error messages

... with multiline annotations correctly when non-1space unicode characters are to the left

For this we use the correct calculation of the 'left' identation

closes #66552

4 years agoRollup merge of #66379 - CreepySkeleton:patch-1, r=RalfJung
Ralf Jung [Fri, 29 Nov 2019 21:57:28 +0000 (22:57 +0100)]
Rollup merge of #66379 - CreepySkeleton:patch-1, r=RalfJung

Rephrase docs in for ptr

These methods can be supplied with NULL just fine, this is the whole point of `Option<&T>` return type.

4 years agoSimplifyArmIdentity only for locals with the same type
Tomasz Miąsko [Fri, 29 Nov 2019 00:00:00 +0000 (00:00 +0000)]
SimplifyArmIdentity only for locals with the same type

Co-Authored-By: Mazdak Farrokhzad <twingoow@gmail.com>
4 years agoreally_init cmdline args on Miri
Ralf Jung [Fri, 29 Nov 2019 19:07:55 +0000 (20:07 +0100)]
really_init cmdline args on Miri

4 years agoMinor documentation fix
Mikotochan [Fri, 29 Nov 2019 18:47:16 +0000 (20:47 +0200)]
Minor documentation fix

Fixed the documentation for any as is a trait rather than a type.

4 years agoAuto merge of #66321 - ninjasource:async-fn-resume-after-completion, r=oli-obk
bors [Fri, 29 Nov 2019 18:11:33 +0000 (18:11 +0000)]
Auto merge of #66321 - ninjasource:async-fn-resume-after-completion, r=oli-obk

Async fn resume after completion

#65419 -- Attempting to run an async fn after completion mentions generators
Not yet ready for review - work in progress
Just need to run the tests on a proper build server

4 years agominor fix
Mark Mansi [Fri, 29 Nov 2019 17:07:01 +0000 (11:07 -0600)]
minor fix

4 years agoremove get_named_span
Mark Mansi [Mon, 25 Nov 2019 18:36:53 +0000 (12:36 -0600)]
remove get_named_span

4 years agorename to AnonRegionFromAsyncFn
Mark Mansi [Mon, 25 Nov 2019 00:47:15 +0000 (18:47 -0600)]
rename to AnonRegionFromAsyncFn

4 years agoimprove lifetime errors with implicit trait object lifetimes
Mark Mansi [Sat, 23 Nov 2019 21:11:35 +0000 (15:11 -0600)]
improve lifetime errors with implicit trait object lifetimes

4 years agoIgnore wasm for panic tests
David Haig [Fri, 29 Nov 2019 15:37:46 +0000 (15:37 +0000)]
Ignore wasm for panic tests

4 years agoAuto merge of #66697 - petrochenkov:nocstore, r=eddyb
bors [Fri, 29 Nov 2019 14:51:59 +0000 (14:51 +0000)]
Auto merge of #66697 - petrochenkov:nocstore, r=eddyb

rustc_metadata: Privatize more things and a couple of other refactorings

This PR continues https://github.com/rust-lang/rust/pull/66496 and hits the point of diminishing returns.
All fields of `CrateRoot` and `CrateMetadata` are privatized.
For read-only fields this certainly makes sense, but for a few fields updateable from outside of `rmeta.rs` (mostly `creader.rs`) it was done mostly for consistency, I can make them `pub(crate)` again if requested.

`cstore.rs` (which became small after #66496) was merged into `creader.rs`.

A few things noticed while making the privacy changes were addressed in the remaining refactoring commits.

Fixes https://github.com/rust-lang/rust/issues/66550
r? @eddyb @Mark-Simulacrum

4 years agoallow customising ty::TraitRef's printing behavior
Mikhail Babenko [Thu, 21 Nov 2019 18:01:14 +0000 (21:01 +0300)]
allow customising ty::TraitRef's printing behavior

fix clippy

allow customising ty::TraitRef's printing behavior

fix clippy

stylistic fix

4 years agoAuto merge of #66645 - RalfJung:dereferenceable, r=pnkfelix
bors [Fri, 29 Nov 2019 11:35:03 +0000 (11:35 +0000)]
Auto merge of #66645 - RalfJung:dereferenceable, r=pnkfelix

remove the 'dereferenceable' attribute from Box

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

r? @eddyb @rkruppe

4 years agoAuto merge of #66590 - Aaron1011:fix/real-impl-trait-coherence, r=varkor
bors [Fri, 29 Nov 2019 08:12:43 +0000 (08:12 +0000)]
Auto merge of #66590 - Aaron1011:fix/real-impl-trait-coherence, r=varkor

Apply proper commit from PR #63934

While working on PR #63934, I accidentally reverted to an older version
of the PR while working on a rebase. The PR was then merged, not with
the later, approved changes, but with earlier, unapproved changes.

This PR applies the changes that were *suppoesd* to be mereged in
PR #63934. All of the proper tests appear to have been merged
in PR #63934, so this PR adds no new tests

4 years agoAuto merge of #66547 - leo60228:procfs-fallback, r=dtolnay
bors [Fri, 29 Nov 2019 05:04:51 +0000 (05:04 +0000)]
Auto merge of #66547 - leo60228:procfs-fallback, r=dtolnay

Fallback to .init_array when no arguments are available on glibc Linux

Linux is one of the only platforms where `std::env::args` doesn't work in a cdylib.

4 years agoUse LLVMAddAnalysisPasses instead of Rust's wrapper
Victor Ding [Fri, 29 Nov 2019 03:31:09 +0000 (14:31 +1100)]
Use LLVMAddAnalysisPasses instead of Rust's wrapper

LLVM exposes a C API `LLVMAddAnalysisPasses` and hence Rust's own
wrapper `LLVMRustAddAnalysisPasses` is not needed anymore.

4 years agoAuto merge of #66567 - estebank:suggest-copy, r=Centril
bors [Fri, 29 Nov 2019 00:23:23 +0000 (00:23 +0000)]
Auto merge of #66567 - estebank:suggest-copy, r=Centril

Use structured suggestion when requiring `Copy` constraint in type param

4 years agoAuto merge of #66843 - RalfJung:miri, r=RalfJung
bors [Thu, 28 Nov 2019 20:39:41 +0000 (20:39 +0000)]
Auto merge of #66843 - RalfJung:miri, r=RalfJung

update Miri

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

r? @ghost

4 years agoreview comments
Esteban Küber [Sun, 24 Nov 2019 05:44:28 +0000 (21:44 -0800)]
review comments

4 years agoDeduplicate type param constraint suggestion code
Esteban Küber [Wed, 20 Nov 2019 01:11:55 +0000 (17:11 -0800)]
Deduplicate type param constraint suggestion code

4 years agoUse structured suggestion when requiring `Copy` constraint in type param
Esteban Küber [Wed, 20 Nov 2019 00:43:24 +0000 (16:43 -0800)]
Use structured suggestion when requiring `Copy` constraint in type param

4 years agoAllow any identifier as format arg name
David Tolnay [Thu, 28 Nov 2019 18:49:13 +0000 (10:49 -0800)]
Allow any identifier as format arg name

Previously:

    error: invalid format string: invalid argument name `_x`
     --> src/main.rs:2:16
      |
    2 |     println!("{_x}", a=0);
      |                ^^ invalid argument name in format string
      |
      = note: argument names cannot start with an underscore

Not supporting identifiers starting with underscore appears to have been
an arbitrary limitation from 2013 in code that was most likely never
reviewed:
https://github.com/rust-lang/rust/pull/8245/files#diff-0347868ef389c805e97636623e4a4ea6R277

The error message was dutifully improved in #50610 but is there any
reason that leading underscore would be a special case?

This commit updates the format_args parser to accept identifiers with
leading underscores.

4 years agoApply proper commit from PR #63934
Aaron Hill [Wed, 20 Nov 2019 22:15:42 +0000 (17:15 -0500)]
Apply proper commit from PR #63934

While working on PR #63934, I accidentally reverted to an older version
of the PR while working on a rebase. The PR was then merged, not with
the later, approved changes, but with earlier, unapproved changes.

This PR applies the changes that were *suppoesd* to be mereged in
PR #63934. All of the proper tests appear to have been merged
in PR #63934, so this PR adds no new tests

Fixes #66580

4 years agodo not consider memory allocated by caller_location leaked
Ralf Jung [Thu, 28 Nov 2019 18:15:32 +0000 (19:15 +0100)]
do not consider memory allocated by caller_location leaked

4 years agorustc: Move some queries to `rustc_metadata`
Vadim Petrochenkov [Sun, 24 Nov 2019 15:12:02 +0000 (18:12 +0300)]
rustc: Move some queries to `rustc_metadata`