]> git.lizzy.rs Git - rust.git/log
rust.git
4 years agoRemove unneeded prelude imports in libcore tests
David Tolnay [Sat, 30 Nov 2019 07:15:45 +0000 (23:15 -0800)]
Remove unneeded prelude imports in libcore tests

These three lines are from c82da7a54b9efb1a0ccbe11de66c71f547bf7db9 in
2015.

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

As a minimized example, the following program compiles successfully:

    #![deny(unused_imports)]

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

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

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

    pub type S = dyn Send;

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

    #![deny(unused_imports)]

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

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

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

    pub type S = dyn Send;

The error is:

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

4 years 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 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 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 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 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.

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 agoAdd async fn test for #66695
Matthew Jasper [Wed, 27 Nov 2019 19:02:13 +0000 (19:02 +0000)]
Add async fn test for #66695

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 agoClean up E0091 long explanation
Guillaume Gomez [Wed, 27 Nov 2019 12:51:50 +0000 (13:51 +0100)]
Clean up E0091 long explanation

4 years agoClean up E0081 long explanation
Guillaume Gomez [Wed, 27 Nov 2019 12:51:44 +0000 (13:51 +0100)]
Clean up E0081 long explanation

4 years agoClean up E0080 long explanation
Guillaume Gomez [Wed, 27 Nov 2019 12:51:38 +0000 (13:51 +0100)]
Clean up E0080 long explanation

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