]> git.lizzy.rs Git - rust.git/log
rust.git
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 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 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 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 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 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 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`

4 years agorustc_metadata: Avoid some side effects during speculative crate resolution
Vadim Petrochenkov [Sun, 24 Nov 2019 12:52:36 +0000 (15:52 +0300)]
rustc_metadata: Avoid some side effects during speculative crate resolution

Namely, `update_extern_crate`.

Also, stop tracking visited crates in `update_extern_crate`, the rank check does the same thing (prevents visiting dependencies if the rank didn't change), but more precisely.

4 years agorustc_metadata: Pass SVH by value
Vadim Petrochenkov [Sun, 24 Nov 2019 12:29:35 +0000 (15:29 +0300)]
rustc_metadata: Pass SVH by value

4 years agorustc_metadata: Move `has_global_allocator` from session to cstore
Vadim Petrochenkov [Sun, 24 Nov 2019 11:37:46 +0000 (14:37 +0300)]
rustc_metadata: Move `has_global_allocator` from session to cstore

4 years agorustc_metadata: Privatize some fields and methods of `CStore`
Vadim Petrochenkov [Sat, 23 Nov 2019 22:25:22 +0000 (01:25 +0300)]
rustc_metadata: Privatize some fields and methods of `CStore`

After it's moved to `creader.rs`

4 years agorustc_metadata: Merge `cstore.rs` into `creader.rs`
Vadim Petrochenkov [Sat, 23 Nov 2019 22:10:12 +0000 (01:10 +0300)]
rustc_metadata: Merge `cstore.rs` into `creader.rs`

4 years agorustc_metadata: Privatize `CrateMetadata::root`
Vadim Petrochenkov [Sat, 23 Nov 2019 21:46:33 +0000 (00:46 +0300)]
rustc_metadata: Privatize `CrateMetadata::root`

4 years agorustc_metadata: Privatize all fields of `CrateRoot`
Vadim Petrochenkov [Sat, 23 Nov 2019 20:46:32 +0000 (23:46 +0300)]
rustc_metadata: Privatize all fields of `CrateRoot`

All of them are read-only

4 years agorustc_metadata: Privatize `CrateMetadata::dep_kind`
Vadim Petrochenkov [Sat, 23 Nov 2019 20:34:17 +0000 (23:34 +0300)]
rustc_metadata: Privatize `CrateMetadata::dep_kind`

4 years agorustc_metadata: Privatize `CrateMetadata::source`
Vadim Petrochenkov [Sat, 23 Nov 2019 20:13:54 +0000 (23:13 +0300)]
rustc_metadata: Privatize `CrateMetadata::source`

4 years agorustc_metadata: Privatize `CrateMetadata::extern_crate`
Vadim Petrochenkov [Sat, 23 Nov 2019 20:01:57 +0000 (23:01 +0300)]
rustc_metadata: Privatize `CrateMetadata::extern_crate`

4 years agorustc_metadata: Privatize `CrateMetadata::dependencies`
Vadim Petrochenkov [Sat, 23 Nov 2019 19:28:45 +0000 (22:28 +0300)]
rustc_metadata: Privatize `CrateMetadata::dependencies`

4 years agorustc_metadata: Cleanup generation of crate dependency lists
Vadim Petrochenkov [Sat, 23 Nov 2019 18:21:00 +0000 (21:21 +0300)]
rustc_metadata: Cleanup generation of crate dependency lists

4 years agoupdate Miri
Ralf Jung [Thu, 28 Nov 2019 17:40:05 +0000 (18:40 +0100)]
update Miri

4 years agoAuto merge of #66642 - ecstatic-morse:promotion-in-const, r=eddyb
bors [Thu, 28 Nov 2019 17:30:24 +0000 (17:30 +0000)]
Auto merge of #66642 - ecstatic-morse:promotion-in-const, r=eddyb

Create promoted MIR fragments for `const` and `static`s

Resolves #65732.

The previous strategy of removing `Drop` and `StorageDead` for promoted locals only worked for rvalue lifetime extension and only if no `loop`s were present. This PR applies the approach currently used for `fn` and `const fn`s to `const` and `statics`.

This may have some performance impacts.

r? @eddyb

4 years agoAuto merge of #66603 - Nadrieril:fix-65413, r=varkor
bors [Thu, 28 Nov 2019 14:22:47 +0000 (14:22 +0000)]
Auto merge of #66603 - Nadrieril:fix-65413, r=varkor

Fix #65413

#65413 was due to an oversight in `pat_constructor` that didn't check if a particular const value was maybe a slice/array const.

4 years agoClarify `{f32,f64}::EPSILON` docs
Ohad Ravid [Thu, 28 Nov 2019 12:49:58 +0000 (13:49 +0100)]
Clarify `{f32,f64}::EPSILON` docs

4 years agoAuto merge of #66246 - matthewjasper:simplify-mem-cat, r=pnkfelix
bors [Thu, 28 Nov 2019 10:36:56 +0000 (10:36 +0000)]
Auto merge of #66246 - matthewjasper:simplify-mem-cat, r=pnkfelix

Simplify memory categorization

With AST borrowck gone, mem_categorization can be simplified, a lot.

* `cmt_` is now called `Place`. Most local variable names have been updated to reflect this, but the `cat_*` methods retain their names.
* `MemCategorizationContext` no longer needs a `ScopeTree` and always needs an `InferCtxt`.
* `Place` now uses a similar representation to `mir::Place` with a `Vec` of projections.
* `Upvar` places don't include the implicit environment and capture derefs. These are now handled by `regionck` when needed.
* Various types, methods and variants only used by AST borrowck have been removed.
* `ExprUseVisitor` now lives in `rustc_typeck::expr_use_visitor`.
* `MemCategorizationContext` and `Place` live in `rustc_typeck::mem_categorization`.
* `Place` is re-exported in `rustc_typeck::expr_use_visitor` so that Clippy can access it.

The loss of an error in `issue-4335.rs` is due to a change in capture inference in ill-formed programs. If any projection from a variable is moved from then we capture that variable by move, whether or not the place being moved from allows this.

Closes #66270

4 years agoMoved tests and fixed merge conflict
David Haig [Thu, 28 Nov 2019 08:24:19 +0000 (08:24 +0000)]
Moved tests and fixed merge conflict

4 years agoFail fast if generator_kind is None
David Haig [Tue, 26 Nov 2019 12:45:19 +0000 (12:45 +0000)]
Fail fast if generator_kind is None

4 years agoBlock indent formatting
David Haig [Tue, 26 Nov 2019 10:46:49 +0000 (10:46 +0000)]
Block indent formatting

4 years agoFixed unit test
David Haig [Tue, 26 Nov 2019 02:40:01 +0000 (02:40 +0000)]
Fixed unit test

4 years agoReduced repetition by refactoring new body to constructor function
David Haig [Tue, 26 Nov 2019 01:31:27 +0000 (01:31 +0000)]
Reduced repetition by refactoring new body to constructor function

4 years agoRemoved FIXME comment
David Haig [Tue, 26 Nov 2019 00:56:58 +0000 (00:56 +0000)]
Removed FIXME comment

4 years agoFixed tidy errors
David Haig [Tue, 26 Nov 2019 00:45:09 +0000 (00:45 +0000)]
Fixed tidy errors

4 years agoRemove duplication using single variant for error
David Haig [Tue, 26 Nov 2019 00:30:07 +0000 (00:30 +0000)]
Remove duplication using single variant for error

4 years agoFixed merge issue
David Haig [Mon, 25 Nov 2019 15:27:42 +0000 (15:27 +0000)]
Fixed merge issue

4 years agoFixed merge issue
David Haig [Mon, 25 Nov 2019 13:38:08 +0000 (13:38 +0000)]
Fixed merge issue

4 years agoSquash
David Haig [Mon, 25 Nov 2019 12:58:40 +0000 (12:58 +0000)]
Squash

4 years agoAuto merge of #66294 - davidhewitt:const_fn_memoization, r=oli-obk
bors [Thu, 28 Nov 2019 07:06:40 +0000 (07:06 +0000)]
Auto merge of #66294 - davidhewitt:const_fn_memoization, r=oli-obk

Add memoization for const function evaluations

When a const function is being evaluated, as long as all its arguments are zero-sized-types (or it has no arguments) then we can trivially memoize the evaluation result using the existing query mechanism.

With thanks to @oli-obk for mentoring me through this at RustFest Barcelona.

r? @oli-obk

4 years agoAuto merge of #65013 - petertodd:2019-maybeuninit-debug, r=sfackler
bors [Thu, 28 Nov 2019 03:41:29 +0000 (03:41 +0000)]
Auto merge of #65013 - petertodd:2019-maybeuninit-debug, r=sfackler

Implement Debug for MaybeUninit

Precedent: `UnsafeCell` implements `Debug` even though it can't actually display the value. I noticed this omission while writing the following:

```
#[derive(Debug)]
 pub struct SliceInitializer<'a, T> {
    marker: PhantomData<&'a mut T>,
    uninit: &'a mut [MaybeUninit<T>],
    written: usize,
}
```

...which currently unergonomically fails to compile.

`UnsafeCell` does require `T: Debug`. Because of things like the above I think it'd be better to leave that requirement off. In fact, I'd also suggest removing that requirement for `UnsafeCell` too, which again I noticed in some low-level real world code.

4 years agoAuto merge of #66829 - Manishearth:clippyup, r=Manishearth
bors [Thu, 28 Nov 2019 00:36:23 +0000 (00:36 +0000)]
Auto merge of #66829 - Manishearth:clippyup, r=Manishearth

Update clippy

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

r? @ghost

4 years agoUpdate CONTRIBUTING.md
Dylan DPC [Thu, 28 Nov 2019 00:26:45 +0000 (01:26 +0100)]
Update CONTRIBUTING.md

4 years agoUpdate CONTRIBUTING.md
Dylan DPC [Thu, 28 Nov 2019 00:23:39 +0000 (01:23 +0100)]
Update CONTRIBUTING.md

4 years agoUpdate clippy
Manish Goregaokar [Wed, 27 Nov 2019 23:30:55 +0000 (15:30 -0800)]
Update clippy

4 years agoClarifies how to tag users for assigning PRs
Mark Lodato [Wed, 27 Nov 2019 22:17:02 +0000 (17:17 -0500)]
Clarifies how to tag users for assigning PRs

4 years agoAuto merge of #66824 - tmandry:rollup-kk56bte, r=tmandry
bors [Wed, 27 Nov 2019 21:30:14 +0000 (21:30 +0000)]
Auto merge of #66824 - tmandry:rollup-kk56bte, r=tmandry

Rollup of 17 pull requests

Successful merges:

 - #64325 (Stabilize nested self receivers in 1.41.0)
 - #66222 (Use `eq_opaque_type_and_type` when type-checking closure signatures)
 - #66305 (Add by-value arrays to `improper_ctypes` lint)
 - #66399 (rustc_metadata: simplify the interactions between Lazy and Table.)
 - #66534 (Allow global references via ForeignItem and Item for the same symbol name during LLVM codegen)
 - #66700 (Fix pointing at arg for fulfillment errors in function calls)
 - #66704 (Intra doc enum variant field)
 - #66718 (Refactor `parse_enum_item` to use `parse_delim_comma_seq`)
 - #66722 (Handle non_exhaustive in borrow checking)
 - #66744 (Fix shrink_to panic documentation)
 - #66761 (Use LLVMDisposePassManager instead of raw delete in rustllvm)
 - #66769 (Add core::{f32,f64}::consts::TAU.)
 - #66774 (Clean up error codes)
 - #66777 (Put back tidy check on error codes)
 - #66797 (Fixes small typo in array docs r? @steveklabnik)
 - #66798 (Fix spelling typos)
 - #66800 (Combine similar tests for const match)

Failed merges:

r? @ghost

4 years agoRollup merge of #66800 - jyn514:combine-const-match-tests, r=Dylan-DPC
Tyler Mandry [Wed, 27 Nov 2019 21:28:54 +0000 (15:28 -0600)]
Rollup merge of #66800 - jyn514:combine-const-match-tests, r=Dylan-DPC

Combine similar tests for const match

See https://github.com/rust-lang/rust/pull/66788#issuecomment-558799307 for context.

4 years agoRollup merge of #66798 - bwignall:typo, r=varkor
Tyler Mandry [Wed, 27 Nov 2019 21:28:53 +0000 (15:28 -0600)]
Rollup merge of #66798 - bwignall:typo, r=varkor

Fix spelling typos

Should be non-semantic.

Uses https://en.wikipedia.org/wiki/Wikipedia:Lists_of_common_misspellings/For_machines to find likely typos.

4 years agoRollup merge of #66797 - mlodato517:mlodato517-array-doc-typo, r=Dylan-DPC
Tyler Mandry [Wed, 27 Nov 2019 21:28:51 +0000 (15:28 -0600)]
Rollup merge of #66797 - mlodato517:mlodato517-array-doc-typo, r=Dylan-DPC

Fixes small typo in array docs r? @steveklabnik

Fixes a small typo in the array documentation.

Also, wasn't sure which [message](https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md#pull-requests) to put this in, and will definitely update the commit message if it is supposed to be the PR description but for "safety" - r? @steveklabnik

4 years agoRollup merge of #66777 - GuillaumeGomez:tidy-err-codes, r=Mark-Simulacrum
Tyler Mandry [Wed, 27 Nov 2019 21:28:50 +0000 (15:28 -0600)]
Rollup merge of #66777 - GuillaumeGomez:tidy-err-codes, r=Mark-Simulacrum

Put back tidy check on error codes

I just realized that the tidy checks were not run anymore on the error code long explanations. This add it back.

cc @Dylan-DPC
r? @Mark-Simulacrum

4 years agoRollup merge of #66774 - GuillaumeGomez:cleanup-err-codes-2, r=Dylan-DPC
Tyler Mandry [Wed, 27 Nov 2019 21:28:48 +0000 (15:28 -0600)]
Rollup merge of #66774 - GuillaumeGomez:cleanup-err-codes-2, r=Dylan-DPC

Clean up error codes

r? @Dylan-DPC

4 years agoRollup merge of #66769 - fusion-engineering-forks:tau-constant, r=dtolnay
Tyler Mandry [Wed, 27 Nov 2019 21:28:47 +0000 (15:28 -0600)]
Rollup merge of #66769 - fusion-engineering-forks:tau-constant, r=dtolnay

Add core::{f32,f64}::consts::TAU.

### **`τ`**

4 years agoRollup merge of #66761 - yuyoyuppe:rust_llvm_minor_fix, r=alexcrichton
Tyler Mandry [Wed, 27 Nov 2019 21:28:45 +0000 (15:28 -0600)]
Rollup merge of #66761 - yuyoyuppe:rust_llvm_minor_fix, r=alexcrichton

Use LLVMDisposePassManager instead of raw delete in rustllvm

LLVM has a dedicated API call which wraps the destructor invocation for the PassManager.
Rust invokes it [otherwhere](https://github.com/rust-lang/rust/blob/d63b24ffcc48f44ef09e0369e6516d6f2dec3520/src/librustc_codegen_llvm/back/write.rs#L446-L447), but not in the `LLVMRustWriteOutputFile`.

Since `LLVMDisposePassManager` might be extended to perform additional cleanup actions in the future, this change replaces raw destructor invocation with that API call.