Commit Graph

103274 Commits

Author SHA1 Message Date
Dylan MacKenzie
846be82277 Update test for mutably borrowed statics in a const
This checks `static mut` as well for E0017, and blesses tests now that
we emit an error for a mut deref.
2019-11-27 16:14:37 -08:00
Dylan MacKenzie
a70ac50ec4 Don't treat a reference to a static as a reborrow
They now look the same in the MIR after #66587.
2019-11-27 16:14:37 -08:00
Manish Goregaokar
9448e68480 Update clippy 2019-11-27 15:30:55 -08:00
Dylan MacKenzie
5b1e10b2f6 Remove test for unused error code
This error code is never emitted, and the contents of this test are
identical to that of `E0017.rs`.
2019-11-27 14:37:06 -08:00
Dylan MacKenzie
d2bdaa8deb Also test shared borrows of Cell for good errors 2019-11-27 14:37:06 -08:00
Dylan MacKenzie
dd32d911d6 Remove CheckOpResult 2019-11-27 14:37:06 -08:00
Ralf Jung
2869abacfa comment 2019-11-27 23:36:39 +01:00
Ralf Jung
3e7a5a4e0b handle diverging functions forwarding their return place 2019-11-27 23:33:49 +01:00
Mark Lodato
9b78191e08 Clarifies how to tag users for assigning PRs 2019-11-27 17:19:09 -05:00
bors
6b604a91b7 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
2019-11-27 21:30:14 +00:00
Tyler Mandry
a40494bc50
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.
2019-11-27 15:28:54 -06:00
Tyler Mandry
999fd561ba
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.
2019-11-27 15:28:53 -06:00
Tyler Mandry
d1cc4c3096
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
2019-11-27 15:28:51 -06:00
Tyler Mandry
6a1fe67cac
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
2019-11-27 15:28:50 -06:00
Tyler Mandry
ae49770918
Rollup merge of #66774 - GuillaumeGomez:cleanup-err-codes-2, r=Dylan-DPC
Clean up error codes

r? @Dylan-DPC
2019-11-27 15:28:48 -06:00
Tyler Mandry
4c51d58de0
Rollup merge of #66769 - fusion-engineering-forks:tau-constant, r=dtolnay
Add core::{f32,f64}::consts::TAU.

### **`τ`**
2019-11-27 15:28:47 -06:00
Tyler Mandry
b05f14cc40
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](d63b24ffcc/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.
2019-11-27 15:28:45 -06:00
Tyler Mandry
a3a8ee0636
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
2019-11-27 15:28:44 -06:00
Tyler Mandry
61b810511c
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.
2019-11-27 15:28:42 -06:00
Tyler Mandry
71f20b89ef
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.
2019-11-27 15:28:40 -06:00
Tyler Mandry
ddb616df90
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
2019-11-27 15:28:39 -06:00
Tyler Mandry
48b0fd2060
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
2019-11-27 15:28:37 -06:00
Tyler Mandry
8a7a9f2e80
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
2019-11-27 15:28:36 -06:00
Tyler Mandry
5139b53836
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
2019-11-27 15:28:34 -06:00
Tyler Mandry
2f1a4b3748
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 :) )
2019-11-27 15:28:33 -06:00
Tyler Mandry
b92b7052b7
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
2019-11-27 15:28:31 -06:00
Tyler Mandry
cb2deb8a9f
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.
2019-11-27 15:28:29 -06:00
Dylan MacKenzie
511740706c Remove derived_from_illegal_borrow 2019-11-27 13:07:19 -08:00
Dylan MacKenzie
5a10430f2c Remove Rvalue::Ref handling from HasMutInterior 2019-11-27 13:07:19 -08:00
Dylan MacKenzie
5a3ddcd771 Update test with improved diagnostics
Now, `derived_from_illegal_borrow` is also applied to reborrows, so we
don't show the user a useless error message.
2019-11-27 13:07:19 -08:00
Dylan MacKenzie
66e9f885de Handle Rvalue::Ref in one place 2019-11-27 13:07:19 -08:00
Dylan MacKenzie
659616585a Use type-based qualification for statics 2019-11-27 13:07:19 -08:00
Dylan MacKenzie
b0b7dc3167 Add #![feature(matches_macro)] 2019-11-27 13:07:19 -08:00
Matthew Jasper
5bc15866d7 Move ExprUseVisitor and mem_categorization to rustc_typeck
`MemCategorizationContext` is now private, the remaining types and
traits remain public for Clippy.
2019-11-27 19:47:12 +00:00
Matthew Jasper
c87de41f99 Remove remaining uses of "cmt" 2019-11-27 19:47:12 +00:00
Matthew Jasper
1d53e43744 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.
2019-11-27 19:47:12 +00:00
Matthew Jasper
a5b8a3088a Simplify fields of MemCategorizationContext 2019-11-27 19:28:15 +00:00
Matthew Jasper
4195b60323 Rename cmt_ to Place 2019-11-27 19:28:15 +00:00
Matthew Jasper
df625bdc26 Add async fn test for #66695 2019-11-27 19:21:56 +00:00
Christoph Schmidler
59d7391238 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
2019-11-27 20:02:20 +01:00
CreepySkeleton
f11dd32f75 Use intra-doc links 2019-11-27 21:36:09 +03:00
CreepySkeleton
d411dd27bf Elaborate on std::ptr::{as_ref,as_mod} and clarify docs 2019-11-27 21:33:24 +03:00
bors
e87a205c2e 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
2019-11-27 17:44:49 +00:00
Eduard-Mihai Burtescu
563ed27c01 rustc: move debug info from LocalDecl and UpvarDecl into a dedicated VarDebugInfo. 2019-11-27 19:22:03 +02:00
Guillaume Gomez
7edaebaf6a Clean up E0091 long explanation 2019-11-27 18:02:05 +01:00
Guillaume Gomez
ce696101c4 Clean up E0081 long explanation 2019-11-27 18:02:05 +01:00
Guillaume Gomez
38f9cd4d69 Clean up E0080 long explanation 2019-11-27 18:02:05 +01:00
Guillaume Gomez
5bb70c14be Fix tidy issues 2019-11-27 17:58:54 +01:00
Guillaume Gomez
243fb6f7b2 Put back tidy check on error codes 2019-11-27 17:58:54 +01:00
David Hewitt
a28fbd4608
Correct typo in src/librustc_mir/const_eval.rs
Co-Authored-By: lqd <remy.rakic+github@gmail.com>
2019-11-27 16:44:53 +00:00