]> git.lizzy.rs Git - rust.git/log
rust.git
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 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 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 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 clippy
Manish Goregaokar [Wed, 27 Nov 2019 23:30:55 +0000 (15:30 -0800)]
Update clippy

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.

4 years agoRollup merge of #66744 - chrisduerr:master, r=Dylan-DPC
Tyler Mandry [Wed, 27 Nov 2019 21:28:44 +0000 (15:28 -0600)]
Rollup merge of #66744 - chrisduerr:master, r=Dylan-DPC

Fix shrink_to panic documentation

While the potential for panicking is already documented for the
`Vec::shrink_to` method, it is not clearly labeled with the usual
`# Panics` heading.

r? @steveklabnik

4 years agoRollup merge of #66722 - matthewjasper:non_exhaustive_borrowck, r=varkor
Tyler Mandry [Wed, 27 Nov 2019 21:28:42 +0000 (15:28 -0600)]
Rollup merge of #66722 - matthewjasper:non_exhaustive_borrowck, r=varkor

Handle non_exhaustive in borrow checking

Borrow check can tell whether a pattern is exhaustive or not, make sure that `non_exhaustive` prevents this.

4 years agoRollup merge of #66718 - VirrageS:use_comma, r=Centril
Tyler Mandry [Wed, 27 Nov 2019 21:28:40 +0000 (15:28 -0600)]
Rollup merge of #66718 - VirrageS:use_comma, r=Centril

Refactor `parse_enum_item` to use `parse_delim_comma_seq`

Followup after https://github.com/rust-lang/rust/pull/66641

Some errors got more verbose but I think they make sense with the help message.

4 years agoRollup merge of #66704 - GuillaumeGomez:intra-doc-enum-variant-field, r=kinnison
Tyler Mandry [Wed, 27 Nov 2019 21:28:39 +0000 (15:28 -0600)]
Rollup merge of #66704 - GuillaumeGomez:intra-doc-enum-variant-field, r=kinnison

Intra doc enum variant field

Part of #43466.

Add intra-doc link support for this:

```rust
enum Foo {
    X {
        y: u8, // can be found with Foo::X::y
    }
}
```

r? @kinnison

4 years agoRollup merge of #66700 - VirrageS:master, r=matthewjasper
Tyler Mandry [Wed, 27 Nov 2019 21:28:37 +0000 (15:28 -0600)]
Rollup merge of #66700 - VirrageS:master, r=matthewjasper

Fix pointing at arg for fulfillment errors in function calls

Closes: https://github.com/rust-lang/rust/issues/66258
4 years agoRollup merge of #66534 - immunant:multiple_global_decls, r=eddyb
Tyler Mandry [Wed, 27 Nov 2019 21:28:36 +0000 (15:28 -0600)]
Rollup merge of #66534 - immunant:multiple_global_decls, r=eddyb

Allow global references via ForeignItem and Item for the same symbol name during LLVM codegen

Combining CGUs can result in code that references a static variable through both
an Item and a ForeignItem with the same name. We don't care that the global was
already created by a ForeignItem reference when we see the Item reference, as
long as the LLVM types of the ForeignItem and Item match.

Fixes #66464

4 years agoRollup merge of #66399 - eddyb:rmeta-table-cleanup, r=Mark-Simulacrum
Tyler Mandry [Wed, 27 Nov 2019 21:28:34 +0000 (15:28 -0600)]
Rollup merge of #66399 - eddyb:rmeta-table-cleanup, r=Mark-Simulacrum

rustc_metadata: simplify the interactions between Lazy and Table.

These are small post-#59953 cleanups (including undoing some contrivances from that PR).

r? @michaelwoerister

4 years agoRollup merge of #66305 - elichai:2019-11-array_ffi, r=eddyb
Tyler Mandry [Wed, 27 Nov 2019 21:28:33 +0000 (15:28 -0600)]
Rollup merge of #66305 - elichai:2019-11-array_ffi, r=eddyb

Add by-value arrays to `improper_ctypes` lint

Hi,
C doesn't have a notion of passing arrays by value, only by reference/pointer.
Rust currently will pass it correctly by reference by it looks very misleading, and can confuse the borrow checker to think a move had occurred.

Fixes #58905 and fixes #24578.

We could also improve the borrow checker here but I think it's kinda a waste of work if we instead just tell the user it's an invalid FFI call.

(My first PR to `rustc` so if I missed some test or formatting guideline please tell me :) )

4 years agoRollup merge of #66222 - Aaron1011:fix/opaque-closure, r=pnkfelix
Tyler Mandry [Wed, 27 Nov 2019 21:28:31 +0000 (15:28 -0600)]
Rollup merge of #66222 - Aaron1011:fix/opaque-closure, r=pnkfelix

Use `eq_opaque_type_and_type` when type-checking closure signatures

This handles the case where a user explicitly annotations a closure
signature with a opaque return type.

Fixes #63263

4 years agoRollup merge of #64325 - cramertj:nested-self-types, r=mikeyhew
Tyler Mandry [Wed, 27 Nov 2019 21:28:29 +0000 (15:28 -0600)]
Rollup merge of #64325 - cramertj:nested-self-types, r=mikeyhew

Stabilize nested self receivers in 1.41.0

Previously, only `Self`, `&Self`, `&mut Self`, `Arc<Self>`, `Rc<Self>`,
and `Box<Self>` were available as stable method receivers.

This commit stabilizes nested uses of all the above types.
However, nested receivers remain non-object-safe.

4 years agoMove ExprUseVisitor and mem_categorization to rustc_typeck
Matthew Jasper [Sat, 9 Nov 2019 10:38:06 +0000 (10:38 +0000)]
Move ExprUseVisitor and mem_categorization to rustc_typeck

`MemCategorizationContext` is now private, the remaining types and
traits remain public for Clippy.

4 years agoRemove remaining uses of "cmt"
Matthew Jasper [Sat, 9 Nov 2019 10:21:33 +0000 (10:21 +0000)]
Remove remaining uses of "cmt"

4 years agoSimplify `mem_categorization`
Matthew Jasper [Fri, 8 Nov 2019 22:54:00 +0000 (22:54 +0000)]
Simplify `mem_categorization`

* `Place` is no longer recursive.
* The `cmt` type alias is removed
* `Upvar` places no longer include the dereferences of the environment
  closure or of by reference captures.
* All non-dereference projections are combined to a single variant.
* Various unnecessary types and methods have been removed.

4 years agoSimplify fields of `MemCategorizationContext`
Matthew Jasper [Fri, 8 Nov 2019 22:11:03 +0000 (22:11 +0000)]
Simplify fields of `MemCategorizationContext`

4 years agoRename `cmt_` to `Place`
Matthew Jasper [Fri, 8 Nov 2019 21:53:36 +0000 (21:53 +0000)]
Rename `cmt_` to `Place`

4 years agoAuto merge of #56231 - eddyb:mir-debuginfo, r=oli-obk
bors [Wed, 27 Nov 2019 17:44:49 +0000 (17:44 +0000)]
Auto merge of #56231 - eddyb:mir-debuginfo, r=oli-obk

rustc: move debug info from LocalDecl and UpvarDecl into a dedicated VarDebugInfo.

This PR introduces a MIR "user variable" debuginfo system, which amounts to mapping a variable name, in some `SourceScope`, to a `Place`, so that:

* each name can appear multiple times (e.g. due to macro hygiene), even in the same scope
* each `Place` can appear multiple times (e.g. in the future from optimizations like NRVO, which collapse multiple MIR locals into one)
* the `Place`s aren't limited to just locals, so they can describe the (right now quite ad-hoc) closure upvars and generator saved state fields, and can be properly transformed by optimizations (e.g. inlining - see `src/test/mir-opt/inline-closure-captures.rs`)

The main motivation for this was that #48300 and further optimizations were blocked on being able to describe complex debuginfo transformations (see https://github.com/rust-lang/rust/pull/48300#discussion_r170020762).

<hr/>

In the textual representation, the "user variable" debuginfo can be found in each scope, and consists of `debug NAME => PLACE;` "declarations", e.g. the MIR for `let x = ...; let y = ...; ...` is now:
```rust
    let _1: T;                           // in scope 0 at ...
    scope 1 {
        debug x => _1;                   // in scope 1 at ...
        let _2: T;                       // in scope 1 at ...
        scope 2 {
            debug y => _2;               // in scope 2 at ...
        }
    }
```
For reference, this is how the information was represented before this PR:
(notably, the scopes in which the variables are visible for debuginfo weren't even shown anywhere, making `scope 2` look pointless, and user variable names were part of MIR locals)
```rust
    let _1: T;                           // "x" in scope 0 at ...
    scope 1 {
        let _2: T;                       // "y" in scope 1 at ...
        scope 2 {
        }
    }
```

cc @nikomatsakis @michaelwoerister

4 years agorustc: move debug info from LocalDecl and UpvarDecl into a dedicated VarDebugInfo.
Eduard-Mihai Burtescu [Wed, 16 May 2018 15:58:54 +0000 (18:58 +0300)]
rustc: move debug info from LocalDecl and UpvarDecl into a dedicated VarDebugInfo.

4 years agoFix tidy issues
Guillaume Gomez [Tue, 26 Nov 2019 13:11:32 +0000 (14:11 +0100)]
Fix tidy issues

4 years agoPut back tidy check on error codes
Guillaume Gomez [Tue, 26 Nov 2019 13:11:21 +0000 (14:11 +0100)]
Put back tidy check on error codes

4 years agoCorrect typo in src/librustc_mir/const_eval.rs
David Hewitt [Wed, 27 Nov 2019 16:44:53 +0000 (16:44 +0000)]
Correct typo in src/librustc_mir/const_eval.rs

Co-Authored-By: lqd <remy.rakic+github@gmail.com>
4 years agoUse new ErrorKind enum
Guillaume Gomez [Wed, 27 Nov 2019 12:15:16 +0000 (13:15 +0100)]
Use new ErrorKind enum

4 years agorustc_metadata: use a macro to deduplicate LazyPerDefTables and PerDefTableBuilders.
Eduard-Mihai Burtescu [Thu, 14 Nov 2019 02:42:21 +0000 (04:42 +0200)]
rustc_metadata: use a macro to deduplicate LazyPerDefTables and PerDefTableBuilders.

4 years agorustc_metadata: remove Encodable requirements from LazyMeta impls.
Eduard-Mihai Burtescu [Thu, 14 Nov 2019 00:52:59 +0000 (02:52 +0200)]
rustc_metadata: remove Encodable requirements from LazyMeta impls.

4 years agorustc_metadata: use a separate TableBuilder type to build a Table.
Eduard-Mihai Burtescu [Thu, 14 Nov 2019 00:44:24 +0000 (02:44 +0200)]
rustc_metadata: use a separate TableBuilder type to build a Table.

4 years agorustc_metadata: replace PerDefTable<T> with Table<DefIndex, T>.
Eduard-Mihai Burtescu [Wed, 13 Nov 2019 20:10:58 +0000 (22:10 +0200)]
rustc_metadata: replace PerDefTable<T> with Table<DefIndex, T>.

4 years agoClean up E0071 long explanation
Guillaume Gomez [Tue, 26 Nov 2019 12:47:20 +0000 (13:47 +0100)]
Clean up E0071 long explanation

4 years agoClean up E0077 long explanation
Guillaume Gomez [Tue, 26 Nov 2019 12:47:06 +0000 (13:47 +0100)]
Clean up E0077 long explanation

4 years agoClean up E0076 long explanation
Guillaume Gomez [Tue, 26 Nov 2019 12:44:48 +0000 (13:44 +0100)]
Clean up E0076 long explanation

4 years agoAuto merge of #66691 - dtolnay:fmt0, r=sfackler
bors [Wed, 27 Nov 2019 12:16:52 +0000 (12:16 +0000)]
Auto merge of #66691 - dtolnay:fmt0, r=sfackler

Format libcore with rustfmt

I am interested in whether we can begin cautious incremental progress on #66688 and assess along the way whether we can keep the disruption sufficiently small.

This PR applies rustfmt with default settings to files in src/libcore *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:

```console
$ find src/libcore -name '*.rs' | xargs rustfmt --edition=2018
$ rg libcore outstanding_files | xargs git checkout --
```

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

4 years agoReplace Iterator::find calls with Iterator::any when better
Guillaume Gomez [Tue, 26 Nov 2019 12:25:14 +0000 (13:25 +0100)]
Replace Iterator::find calls with Iterator::any when better

4 years agoAdd support for intra-doc link fields of enum variant
Guillaume Gomez [Sun, 24 Nov 2019 15:27:52 +0000 (16:27 +0100)]
Add support for intra-doc link fields of enum variant

4 years agolittle intra-doc code cleanup
Guillaume Gomez [Sun, 24 Nov 2019 13:05:12 +0000 (14:05 +0100)]
little intra-doc code cleanup

4 years agoAdd memoization for const function evaluations
David Hewitt [Mon, 11 Nov 2019 14:32:36 +0000 (14:32 +0000)]
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.

4 years agoUpdate mod.rs
Dylan DPC [Wed, 27 Nov 2019 09:27:30 +0000 (10:27 +0100)]
Update mod.rs

4 years agoAuto merge of #66677 - wesleywiser:fix_const_prop_alloc_id_ice, r=oli-obk
bors [Wed, 27 Nov 2019 08:00:58 +0000 (08:00 +0000)]
Auto merge of #66677 - wesleywiser:fix_const_prop_alloc_id_ice, r=oli-obk

[const prop] Fix "alloc id without corresponding allocation" ICE

r? @oli-obk

4 years agoBless ui tests for libcore reformat
David Tolnay [Wed, 27 Nov 2019 06:49:55 +0000 (22:49 -0800)]
Bless ui tests for libcore reformat

4 years agoFormat libcore with rustfmt
David Tolnay [Sun, 24 Nov 2019 09:43:32 +0000 (01:43 -0800)]
Format libcore with rustfmt

This commit applies rustfmt with default settings to files in
src/libcore *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/libcore -name '*.rs' | xargs rustfmt --edition=2018
    $ rg libcore outstanding_files | xargs git checkout --

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

4 years agoCombine similar tests for const match
Joshua Nelson [Wed, 27 Nov 2019 05:02:04 +0000 (00:02 -0500)]
Combine similar tests for const match

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

4 years agoAuto merge of #66675 - GuillaumeGomez:support-anchors-intra-doc-links, r=kinnison
bors [Wed, 27 Nov 2019 04:51:31 +0000 (04:51 +0000)]
Auto merge of #66675 - GuillaumeGomez:support-anchors-intra-doc-links, r=kinnison

Support anchors intra doc links

Fixes #62833
Part of #43466.

cc @ollie27
r? @kinnison

4 years agoFix spelling typos
Brian Wignall [Wed, 27 Nov 2019 03:19:54 +0000 (22:19 -0500)]
Fix spelling typos

4 years agoFixes small typo in array docs r? @steveklabnik
Mark Lodato [Wed, 27 Nov 2019 01:58:38 +0000 (20:58 -0500)]
Fixes small typo in array docs r? @steveklabnik

4 years agoAuto merge of #66794 - tmandry:rollup-99qrpr0, r=tmandry
bors [Wed, 27 Nov 2019 00:32:30 +0000 (00:32 +0000)]
Auto merge of #66794 - tmandry:rollup-99qrpr0, r=tmandry

Rollup of 14 pull requests

Successful merges:

 - #66128 (alloc: Add new_zeroed() versions like new_uninit().)
 - #66661 (Add riscv64gc-unknown-linux-gnu target)
 - #66663 (Miri: print leak report even without tracing)
 - #66711 (Add hardware floating point features to aarch64-pc-windows-msvc)
 - #66713 (introduce a target to build the kernel of the unikernel HermitCore)
 - #66717 (tidy: Accommodate rustfmt's preferred layout of stability attributes)
 - #66719 (Store pointer width as u32 on Config)
 - #66720 (Move ErrorReported to rustc_errors)
 - #66737 (Error codes cleanup)
 - #66754 (Various tweaks to diagnostic output)
 - #66763 (Minor edit for documentation-tests.md that increases clarity)
 - #66779 (follow the same function order in the trait)
 - #66786 (Add wildcard test for const_if_match)
 - #66788 (Allow `Unreachable` terminators through `min_const_fn` checks)

Failed merges:

r? @ghost

4 years agoRollup merge of #66788 - ecstatic-morse:const-fn-unreachable, r=Centril
Tyler Mandry [Tue, 26 Nov 2019 23:56:25 +0000 (17:56 -0600)]
Rollup merge of #66788 - ecstatic-morse:const-fn-unreachable, r=Centril

Allow `Unreachable` terminators through `min_const_fn` checks

Resolves #66756.

This allows `Unreachable` terminators through the `min_const_fn` checks if `#![feature(const_if_match)]` is enabled. We could probably just allow them with no feature flag, but it seems okay to be conservative here.

r? @oli-obk

4 years agoRollup merge of #66786 - jyn514:const-if-match-tests, r=Centril
Tyler Mandry [Tue, 26 Nov 2019 23:56:23 +0000 (17:56 -0600)]
Rollup merge of #66786 - jyn514:const-if-match-tests, r=Centril

Add wildcard test for const_if_match

Closes https://github.com/rust-lang/rust/issues/66758

Many thanks to @Centril for his help getting me started!

4 years agoRollup merge of #66779 - guanqun:reorder-funcs, r=Dylan-DPC
Tyler Mandry [Tue, 26 Nov 2019 23:56:22 +0000 (17:56 -0600)]
Rollup merge of #66779 - guanqun:reorder-funcs, r=Dylan-DPC

follow the same function order in the trait

With this change, the function order in both traits and implementation matches.

And this fix removes several warnings in IDE.

4 years agoRollup merge of #66763 - Parth:patch-2, r=steveklabnik
Tyler Mandry [Tue, 26 Nov 2019 23:56:20 +0000 (17:56 -0600)]
Rollup merge of #66763 - Parth:patch-2, r=steveklabnik

Minor edit for documentation-tests.md that increases clarity

4 years agoRollup merge of #66754 - estebank:rustdoc-capitalization, r=Dylan-DPC
Tyler Mandry [Tue, 26 Nov 2019 23:56:19 +0000 (17:56 -0600)]
Rollup merge of #66754 - estebank:rustdoc-capitalization, r=Dylan-DPC

Various tweaks to diagnostic output

4 years agoRollup merge of #66737 - GuillaumeGomez:err-codes-cleanup, r=Dylan-DPC
Tyler Mandry [Tue, 26 Nov 2019 23:56:17 +0000 (17:56 -0600)]
Rollup merge of #66737 - GuillaumeGomez:err-codes-cleanup, r=Dylan-DPC

Error codes cleanup

r? @Dylan-DPC

4 years agoRollup merge of #66720 - Mark-Simulacrum:error-reported, r=Centril
Tyler Mandry [Tue, 26 Nov 2019 23:56:16 +0000 (17:56 -0600)]
Rollup merge of #66720 - Mark-Simulacrum:error-reported, r=Centril

Move ErrorReported to rustc_errors

The new location is more consistent with what this type is for, though we don't remove it from the old location (via a re-export) to avoid changing the dozens of use sites (~139 at this time).

4 years agoRollup merge of #66719 - Mark-Simulacrum:int-normalization, r=Centril
Tyler Mandry [Tue, 26 Nov 2019 23:56:15 +0000 (17:56 -0600)]
Rollup merge of #66719 - Mark-Simulacrum:int-normalization, r=Centril

Store pointer width as u32 on Config

This removes the dependency on IntTy, UintTy from Session.

It's not obviously a win, but it seems a bit odd to store the AST IntTy/UintTy in Session, rather we store the pointer width as an integer and add normalization methods to IntTy and UintTy.

4 years agoRollup merge of #66717 - dtolnay:tidy, r=Mark-Simulacrum
Tyler Mandry [Tue, 26 Nov 2019 23:56:13 +0000 (17:56 -0600)]
Rollup merge of #66717 - dtolnay:tidy, r=Mark-Simulacrum

tidy: Accommodate rustfmt's preferred layout of stability attributes

Previously tidy would require that the `feature = "name_of_feature"` part of the stability attribute was on the same line as the `#[stable(` / `#[unstable(` opening part of the attribute, and that `)]` was on the same line as the last key-value pair.

That didn't work with rustfmt's preferred layout of long attributes, which is like:

```rust
#[unstable(
    feature = "c_variadic",
    reason = "the `c_variadic` feature has not been properly tested on \
              all supported platforms",
    issue = "44930"
)]
```

4 years agoRollup merge of #66713 - hermitcore:hermit, r=alexcrichton
Tyler Mandry [Tue, 26 Nov 2019 23:56:11 +0000 (17:56 -0600)]
Rollup merge of #66713 - hermitcore:hermit, r=alexcrichton

introduce a target to build the kernel of the unikernel HermitCore

We are developing the unikernel HermitCore, where the kernel is written in Rust and is already supported by the Rust Standard Library. To compile the kernel with the new build flag "-Z build-std", we introduce a new target, which avoids the usage of SSE & AVX within the kernel.

4 years agoRollup merge of #66711 - mattico:aarch-msvc-fp, r=nagisa
Tyler Mandry [Tue, 26 Nov 2019 23:56:10 +0000 (17:56 -0600)]
Rollup merge of #66711 - mattico:aarch-msvc-fp, r=nagisa

Add hardware floating point features to aarch64-pc-windows-msvc

Fixes #66701

4 years agoRollup merge of #66663 - RalfJung:miri-leaks, r=oli-obk
Tyler Mandry [Tue, 26 Nov 2019 23:56:08 +0000 (17:56 -0600)]
Rollup merge of #66663 - RalfJung:miri-leaks, r=oli-obk

Miri: print leak report even without tracing

Currently, the rustup-installed Miri has no way to actually print a leak report (as `trace!` is compiled out). Make it print that per default instead when there is a leak.

r? @oli-obk

4 years agoRollup merge of #66661 - msizanoen1:riscv-gnu, r=alexcrichton
Tyler Mandry [Tue, 26 Nov 2019 23:56:07 +0000 (17:56 -0600)]
Rollup merge of #66661 - msizanoen1:riscv-gnu, r=alexcrichton

Add riscv64gc-unknown-linux-gnu target

This PR add the target, but doesn't build std on CI yet.
I have a port for `libc` crate and std which I will upstream soon after this target is added.

r? @alexcrichton

4 years agoRollup merge of #66128 - emilio:new-zeroed, r=SimonSapin
Tyler Mandry [Tue, 26 Nov 2019 23:56:05 +0000 (17:56 -0600)]
Rollup merge of #66128 - emilio:new-zeroed, r=SimonSapin

alloc: Add new_zeroed() versions like new_uninit().

MaybeUninit has both uninit() and zeroed(), it seems reasonable to have the same
surface on Box/Rc/Arc.

Needs tests.

cc #63291

4 years agoStabilize nested self receivers
Taylor Cramer [Mon, 9 Sep 2019 22:27:33 +0000 (15:27 -0700)]
Stabilize nested self receivers

Previously, only Self, &Self, &mut Self, Arc<Self>, Rc<Self>,
and Box<Self> were available as stable method receivers.

This commit stabilizes nested uses of all the above types.
However, nested receivers remain non-object-safe.

4 years agoAuto merge of #66646 - RalfJung:unwind_to_block, r=oli-obk
bors [Tue, 26 Nov 2019 20:38:47 +0000 (20:38 +0000)]
Auto merge of #66646 - RalfJung:unwind_to_block, r=oli-obk

refactor goto_block and also add unwind_to_block

r? @oli-obk

4 years agoRemove test for #66758
Dylan MacKenzie [Tue, 26 Nov 2019 20:13:15 +0000 (12:13 -0800)]
Remove test for #66758

4 years agoMove ErrorReported to rustc_errors
Mark Rousskov [Sun, 24 Nov 2019 21:59:56 +0000 (16:59 -0500)]
Move ErrorReported to rustc_errors

4 years agoAdd regression test for #66756
Dylan MacKenzie [Tue, 26 Nov 2019 19:37:16 +0000 (11:37 -0800)]
Add regression test for #66756

4 years agoAllow `Unreachable` terminators behind `const_if_match`
Dylan MacKenzie [Tue, 26 Nov 2019 19:36:53 +0000 (11:36 -0800)]
Allow `Unreachable` terminators behind `const_if_match`

4 years agoRefactor 'parse_enum_item' to use 'parse_delim_comma_seq'
Janusz Marcinkiewicz [Sun, 24 Nov 2019 21:33:00 +0000 (22:33 +0100)]
Refactor 'parse_enum_item' to use 'parse_delim_comma_seq'

4 years agoTest multiple variants
Joshua Nelson [Tue, 26 Nov 2019 17:37:55 +0000 (12:37 -0500)]
Test multiple variants

Co-Authored-By: Mazdak Farrokhzad <twingoow@gmail.com>
4 years agoAuto merge of #66776 - Mark-Simulacrum:revert-try-breakage, r=Mark-Simulacrum
bors [Tue, 26 Nov 2019 16:03:50 +0000 (16:03 +0000)]
Auto merge of #66776 - Mark-Simulacrum:revert-try-breakage, r=Mark-Simulacrum

Revert "DO NOT MERGE: enable windows try builder"

This reverts commit 90a37bce44d145715eeac9f1f2f34433fc813ef0.

4 years agoAdd tracking issue number.
Mara Bos [Tue, 26 Nov 2019 10:20:54 +0000 (11:20 +0100)]
Add tracking issue number.

4 years agoAdd core::{f32,f64}::consts::TAU.
Mara Bos [Tue, 26 Nov 2019 09:47:52 +0000 (10:47 +0100)]
Add core::{f32,f64}::consts::TAU.

4 years agofollow the same function order in the trait
Guanqun Lu [Tue, 26 Nov 2019 14:55:01 +0000 (22:55 +0800)]
follow the same function order in the trait

This removes several warnings in IDE.

4 years agoRevert "DO NOT MERGE: enable windows try builder"
Mark Rousskov [Tue, 26 Nov 2019 13:06:13 +0000 (08:06 -0500)]
Revert "DO NOT MERGE: enable windows try builder"

This reverts commit 90a37bce44d145715eeac9f1f2f34433fc813ef0.

4 years agoClean up E0075 long explanation
Guillaume Gomez [Tue, 26 Nov 2019 12:42:19 +0000 (13:42 +0100)]
Clean up E0075 long explanation

4 years agoClean up E0072 long explanation
Guillaume Gomez [Tue, 26 Nov 2019 12:40:48 +0000 (13:40 +0100)]
Clean up E0072 long explanation

4 years agoAuto merge of #66631 - michaelwoerister:additional-pgo-tests, r=alexcrichton
bors [Tue, 26 Nov 2019 12:35:39 +0000 (12:35 +0000)]
Auto merge of #66631 - michaelwoerister:additional-pgo-tests, r=alexcrichton

Add additional regression tests for PGO

This PR adds regression tests for making sure that
- instrumentation records the right counts for branches taken and functions called, and that
- the indirect call promotion pass actually is able to promote indirect calls.

r? @alexcrichton

4 years agoPGO: Make branch-weights regression test more robust.
Michael Woerister [Tue, 26 Nov 2019 09:34:48 +0000 (10:34 +0100)]
PGO: Make branch-weights regression test more robust.

4 years agoAuto merge of #66561 - TimoFreiberg:trait-name-report, r=estebank
bors [Tue, 26 Nov 2019 05:07:02 +0000 (05:07 +0000)]
Auto merge of #66561 - TimoFreiberg:trait-name-report, r=estebank

Add version mismatch help message for unimplemented trait

Improves issue #22750

The error reporting for E0277 (the trait `X` is not implemented for `Foo`)
now checks whether `Foo` implements a trait with the same path as `X`,
which probably means that the programmer wanted to actually use only one
version of the trait `X` instead of the two.

Still open:
* the same diagnostic should be added for [the trait method case](https://github.com/rust-lang/rust/issues/22750#issuecomment-372077056)
* Showing the real crate versions would be nice, but rustc currently doesn't have that information [according to Esteban](https://rust-lang.zulipchat.com/#narrow/stream/131828-t-compiler/topic/diagnostics.20for.20crate.20version.20mismatch/near/180572989)

4 years agoAuto merge of #66522 - tmiasko:sanitize-flags, r=alexcrichton
bors [Tue, 26 Nov 2019 01:54:53 +0000 (01:54 +0000)]
Auto merge of #66522 - tmiasko:sanitize-flags, r=alexcrichton

Add support for sanitizer recover and tracking origins of uninitialized memory

* Add support for sanitizer recovery `-Zsanitizer-recover=...` (equivalent to `-fsanitize-recover` in clang).
* Add support for tracking origins of uninitialized memory in MemorySanitizer `-Zsanitizer-memory-track-origins` (equivalent to `-fsanitize-memory-track-origins` in clang).

4 years agoAdd wildcard test for const_if_match
Joshua Nelson [Tue, 26 Nov 2019 00:44:35 +0000 (19:44 -0500)]
Add wildcard test for const_if_match

Closes https://github.com/rust-lang/rust/issues/66758

4 years agoUpdate documentation-tests.md
Parth Mehrotra [Tue, 26 Nov 2019 00:34:32 +0000 (19:34 -0500)]
Update documentation-tests.md

4 years agoAuto merge of #66178 - Aaron1011:fix/opaque-normalize, r=varkor
bors [Mon, 25 Nov 2019 22:45:50 +0000 (22:45 +0000)]
Auto merge of #66178 - Aaron1011:fix/opaque-normalize, r=varkor

Fix opaque types resulting from projections in function signature

When we normalize the types in a function signature, we may end up
resolving a projection to an opaque type (e.g. `Self::MyType` when
we have `type MyType = impl SomeTrait`). When the projection is
resolved, we will instantiate the generic parameters into fresh
inference variables.

While we do want to normalize projections to opaque types, we don't want
to replace the explicit generic parameters (e.g. `T` in `impl
MyTrait<T>`) with inference variables. We want the opaque type in the
function signature to be eligible to be a defining use of that opaque
type - adding inference variables prevents this, since the opaque type
substs now appears to refer to some specific type, rather than a generic
type.

To resolve this issue, we inspect the opaque types in the function
signature after normalization. Any inference variables in the substs are
replaced with the corresponding generic parameter in the identity substs
(e.g. `T` in `impl MyTrait<T>`). Note that normalization is the only way
that we can end up with inference variables in opaque substs in a
function signature - users have no way of getting inference variables
into a function signature.

Note that all of this refers to the opaque type (ty::Opaque) and its
subst - *not* to the underlying type.

Fixes #59342

4 years agomake sure we handle all transmute invocations, including diverging ones
Ralf Jung [Mon, 25 Nov 2019 21:37:31 +0000 (22:37 +0100)]
make sure we handle all transmute invocations, including diverging ones

4 years agoVarious cleanups
Esteban Küber [Mon, 25 Nov 2019 20:37:07 +0000 (12:37 -0800)]
Various cleanups

4 years agoTweak removed feature error
Esteban Küber [Mon, 25 Nov 2019 20:36:26 +0000 (12:36 -0800)]
Tweak removed feature error

4 years agoTweak bad `continue` error
Esteban Küber [Mon, 25 Nov 2019 20:35:30 +0000 (12:35 -0800)]
Tweak bad `continue` error

4 years agoTweak duplicate matcher binding error
Esteban Küber [Mon, 25 Nov 2019 20:34:56 +0000 (12:34 -0800)]
Tweak duplicate matcher binding error