]> git.lizzy.rs Git - rust.git/log
rust.git
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 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 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 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 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 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 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 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 agoDraw vertical lines in compiler error messages with multiline annotations correctly...
Christoph Schmidler [Wed, 20 Nov 2019 22:17:30 +0000 (23:17 +0100)]
Draw vertical lines 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

4 years agoUse intra-doc links
CreepySkeleton [Wed, 27 Nov 2019 18:36:09 +0000 (21:36 +0300)]
Use intra-doc links

4 years agoElaborate on std::ptr::{as_ref,as_mod} and clarify docs
CreepySkeleton [Wed, 13 Nov 2019 17:43:45 +0000 (20:43 +0300)]
Elaborate on std::ptr::{as_ref,as_mod} and clarify docs

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