Commit Graph

90614 Commits

Author SHA1 Message Date
John Kåre Alsaker
74b6419bb6 Update Cargo.lock 2019-03-05 00:36:25 +01:00
John Kåre Alsaker
10d2008c51 Add ignore and project attributes 2019-03-05 00:36:25 +01:00
John Kåre Alsaker
70156fbb75 Encode proc macro stability 2019-03-05 00:36:25 +01:00
John Kåre Alsaker
e501a87e89 Bootstrap changes 2019-03-05 00:36:24 +01:00
John Kåre Alsaker
c3c1c8d4e0 Allow linking to a proc macro on the target in metadata and still use a host proc macro to execute them 2019-03-05 00:36:23 +01:00
John Kåre Alsaker
97431a4090 Create a derive macro for HashStable 2019-03-05 00:36:20 +01:00
Josh Stone
538a0963ff Add as_slice() to slice::IterMut and vec::Drain
In bluss/indexmap#88, we found that there was no easy way to implement
`Debug` for our `IterMut` and `Drain` iterators. Those are built on
`slice::IterMut` and `vec::Drain`, which implement `Debug` themselves,
but have no other way to access their data. With a new `as_slice()`
method, we can read the data and customize its presentation.
2019-03-04 15:12:45 -08:00
Esteban Küber
e6387b6a75 Fix rebase and move suggestion to its own method 2019-03-04 13:39:52 -08:00
Josh Stone
842014d8fc Add an explicit test for issue #50582
This code no longer ICEs, and @yodaldevoid found that it was fixed by
commit fe5710a. While that added a similar test, we can explicitly test
this reproducer too.

Closes #50582.
2019-03-04 13:28:31 -08:00
Esteban Küber
f2718dc726 Add fixme 2019-03-04 13:17:54 -08:00
Esteban Küber
9e8a62b734 On return type impl Trait for block with no expr point at last semi 2019-03-04 13:17:54 -08:00
Giles Cope
6dd2a857aa Regression test added for an async ICE. 2019-03-04 18:53:12 +00:00
Mark Rousskov
9ed94e5e54 Fix release note problems noticed after merging. 2019-03-04 17:42:15 +01:00
Oliver Scherer
5c0615b89c Use early unwraps instead of bubbling up errors just to unwrap in the end 2019-03-04 17:13:50 +01:00
Felix S. Klock II
b129de47a0 Regression test for #58435. 2019-03-04 13:16:49 +01:00
Anthony Ramine
1fec8c2835 Make the Entry API of HashMap<K, V> Sync and Send (fixes #45219) 2019-03-04 10:20:40 +01:00
bors
a9da8fc9c2 Auto merge of #58380 - estebank:missing-match-pats, r=zackmdavis
Point at enum definition when match patterns are not exhaustive

```
error[E0004]: non-exhaustive patterns: type `X` is non-empty
 --> file.rs:9:11
  |
1 | / enum X {
2 | |     A,
  | |     - variant not covered
3 | |     B,
  | |     - variant not covered
4 | |     C,
  | |     - variant not covered
5 | | }
  | |_- `X` defined here
...
9 |       match x {
  |             ^
  |
  = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms

error[E0004]: non-exhaustive patterns: `B` and `C` not covered
  --> file.rs:11:11
   |
1  | / enum X {
2  | |     A,
3  | |     B,
4  | |     C,
   | |     - not covered
5  | | }
   | |_- `X` defined here
...
11 |       match x {
   |             ^ patterns `C` not covered
```

When a match expression doesn't have patterns covering every variant,
point at the enum's definition span. On a best effort basis, point at the
variant(s) that are missing. This does not handle the case when the missing
pattern is due to a field's enum variants:

```
enum E1 {
    A,
    B,
    C,
}
enum E2 {
    A(E1),
    B,
}
fn foo() {
    match E2::A(E1::A) {
        E2::A(E1::B) => {}
        E2::B => {}
    }
    //~^ ERROR `E2::A(E1::A)` and `E2::A(E1::C)` not handled
}
```

Unify look between match with no arms and match with some missing patterns.

Fix #37518.
2019-03-04 04:46:38 +00:00
bors
9261088a73 Auto merge of #58807 - Xanewok:update-clippy, r=Xanewok
Update Clippy

Should fix the fallout caused by https://github.com/rust-lang/rust/pull/58321 (still testing it locally).

r? @oli-obk
2019-03-04 01:46:37 +00:00
Igor Matuszewski
594e2616db Update Clippy 2019-03-03 23:51:24 +01:00
bors
45d015c95a Auto merge of #58505 - schomatis:fix/nll/remove-live-var, r=matthewjasper
[NLL] Remove `LiveVar`

The `LiveVar` type (and related) made it harder to reason about the code. It seemed as an abstraction that didn't bring any useful concept to the reader (when transitioning from the RFC theory to the actual implementation code).

It achieved a compactness in the vectors storing the def/use/drop information that was related only to the `LocalUseMap`. This PR went in the other direction and favored time over memory (but this decision can be easily reverted to the other side without reintroducing `LiveVar`).

What this PR aims at is to clarify that there's no significant transformation between the MIR `Local` and the `LiveVar` (now refactored as `live_locals: Vec<Local>`): we're just filtering (not mapping) the entire group of `Local`s into a meaningful subset that we should perform the liveness analysis on.

As a side note, there is no guarantee that the liveness analysis is performed only on (what the code calls) "live" variables, if the NLL facts are requested it will be performed on *any* variable so there can't be any assumptions on that regard. (Still, this PR didn't change the general naming convention to reduce the number of changes here and streamline the review process).

**Acceptance criteria:** This PR attempts to do only a minor refactoring and not to change the logic so it can't have any performance impact, particularly, it can't lose any of the significant performance improvement achieved in the great work done in https://github.com/rust-lang/rust/pull/52115.

r? @nikomatsakis
2019-03-03 22:49:16 +00:00
Tim
60a649ef6e Add .nll.stderr output 2019-03-03 23:43:46 +01:00
Wim Looman
41e60d1562 Monomorphize generator field types for debuginfo 2019-03-04 11:23:38 +13:00
benaryorg
2293d2260a
race condition in thread local storage example
The example had a potential race condition that would still pass the test.
If the thread which was supposed to modify it's own thread local was slower than the instruction to
modify in the main thread, then the test would pass even in case of a failure.
This is would be minor if the child thread was waited for since it check using an `assert_eq` for
the same thing, but vice versa.
However, if the `assert_eq` failed this would trigger a panic, which is not at all caught by the
example since the thread is not waited on.

Signed-off-by: benaryorg <binary@benary.org>
2019-03-03 20:53:50 +01:00
bors
87a436377a Auto merge of #58425 - wesleywiser:more_profiler_changes, r=michaelwoerister
[self-profiler] Make the profiler faster/more efficient

Related to #58372

r? @michaelwoerister
2019-03-03 19:48:12 +00:00
bors
2cfd6444a7 Auto merge of #58673 - matthewjasper:typeck-ptr-coercions, r=pnkfelix
[NLL] Type check operations with pointer types

It seems these were forgotten about. Moving to `Rvalue::AddressOf` simplifies the coercions from references, but I want this to be fixed as soon as possible.

r? @pnkfelix
2019-03-03 16:46:12 +00:00
Wesley Wiser
f20ad70439 Use FxHashMap 2019-03-03 10:07:32 -05:00
Wesley Wiser
9d26789495 Reduce the size of events by using a u64 instead of Instant
Part of #58372
2019-03-03 10:07:32 -05:00
Wesley Wiser
fccc84199c Remove profiler output and replace with a raw event dump
Related to #58372
2019-03-03 10:07:32 -05:00
Wesley Wiser
25b8c614f0 Wrap the self-profiler in an Arc<Mutex<>>
This will allow us to send it across threads and measure things like
LLVM time.
2019-03-03 10:07:29 -05:00
Alexandra V
020539e230 Remove stray ` in the documentation for the FromIterator implementation for Option 2019-03-03 13:25:55 +01:00
bors
c0086b9e89 Auto merge of #58879 - spastorino:update_miri, r=oli-obk
Update miri

Related to #58841

r? @RalfJung
2019-03-03 11:42:39 +00:00
bors
f565cdd614 Auto merge of #58866 - kennytm:rollup, r=kennytm
Rollup of 14 pull requests

Successful merges:

 - #58730 (Have all methods of Filter and FilterMap use internal iteration)
 - #58780 (ManuallyDrop != MaybeUninit)
 - #58782 (Replace `s` with `self` in docs for str methods taking self.)
 - #58785 (allow specifying attributes for tool lints)
 - #58802 (Ensure `record_layout_for_printing()` is inlined.)
 - #58821 (Fixed a syntax error in the pin docs)
 - #58830 (tidy: deny(rust_2018_idioms))
 - #58832 (Revert switching to GCP on AppVeyor)
 - #58833 (tools/rustbook: deny(rust_2018_idioms))
 - #58835 (tools/remote-test-{client,server}: deny(rust_2018_idioms))
 - #58838 (Fix typo in Vec#resize_with documentation)
 - #58842 (Forbid duplicating Cargo as a dependency)
 - #58852 (Update toolchain to build NetBSD release)
 - #58865 (Fix C-variadic function printing)
2019-03-03 08:47:51 +00:00
kennytm
946e670bce
Rollup merge of #58865 - dlrobertson:fix-varargs, r=alexreg
Fix C-variadic function printing

There is no longer a need to append the string `", ..."` to a functions
args as `...` is parsed as an argument and will appear in the functions
arguments.

Fixes: #58853
2019-03-03 13:56:57 +08:00
bors
ba43811a07 Auto merge of #58793 - Mark-Simulacrum:master-next, r=alexcrichton
Bootstrap compiler update for 1.35 release

r? @alexcrichton
2019-03-03 05:51:44 +00:00
Mark Rousskov
04679431a2 Call clang and llvm-objdump with correct library path 2019-03-02 22:27:26 -07:00
bors
7dbba3d03c Auto merge of #58464 - jethrogb:jb/std-test-panic-output, r=alexcrichton
Use the correct stderr when testing libstd

When compiling the unit tests for libstd, there are two copies of `std` in existence, see [lib.rs](https://github.com/rust-lang/rust/blob/919cf42/src/libstd/lib.rs#L335-L341). This means there are two copies of everything, including thread local variable definitions. Before this PR, it's possible that libtest would configure a stderr sink in one of those copies, whereas the panic logic would inspect the sink in the other copy, resulting in libtest missing the relevant panic message. This PR makes sure that when testing, the panic logic always accesses the stderr sink from “realstd”, using the same logic that libtest uses.
2019-03-03 03:00:16 +00:00
Alexander Regueiro
379cd29d1c Nit 2019-03-03 02:58:09 +00:00
Esteban Küber
d651281a71 Reword error message 2019-03-02 17:50:13 -08:00
Esteban Küber
509bb0acba Use anonymous explicit lifetimes 2019-03-02 16:45:23 -08:00
Esteban Küber
0081ef2548 Point at enum definition when match patterns are not exhaustive
```
error[E0004]: non-exhaustive patterns: type `X` is non-empty
 --> file.rs:9:11
  |
1 | / enum X {
2 | |     A,
  | |     - variant not covered
3 | |     B,
  | |     - variant not covered
4 | |     C,
  | |     - variant not covered
5 | | }
  | |_- `X` defined here
...
9 |       match x {
  |             ^
  |
  = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms

error[E0004]: non-exhaustive patterns: `B` and `C` not covered
  --> file.rs:11:11
   |
1  | / enum X {
2  | |     A,
3  | |     B,
4  | |     C,
   | |     - not covered
5  | | }
   | |_- `X` defined here
...
11 |       match x {
   |             ^ patterns `C` not covered
```

When a match expression doesn't have patterns covering every variant,
point at the enum's definition span. On a best effort basis, point at the
variant(s) that are missing. This does not handle the case when the missing
pattern is due to a field's enum variants:

```
enum E1 {
    A,
    B,
    C,
}
enum E2 {
    A(E1),
    B,
}
fn foo() {
    match E2::A(E1::A) {
        E2::A(E1::B) => {}
        E2::B => {}
    }
    //~^ ERROR `E2::A(E1::A)` and `E2::A(E1::C)` not handled
}
```

Unify look between match with no arms and match with some missing patterns.

Fix #37518.
2019-03-02 16:45:23 -08:00
Santiago Pastorino
ddd4731f5f
Update miri 2019-03-02 20:21:33 -03:00
Esteban Küber
df852c0d79 Suggest appropriate code for unused field when desrtucturing patttern
Fix #56472.
2019-03-02 15:16:53 -08:00
Esteban Küber
edbbfad88f Suggest removal of & when borrowing macro and appropriate
Fix #58815.
2019-03-02 11:25:00 -08:00
bors
0ea22717a1 Auto merge of #58836 - ljedrz:begone_NodeId, r=Zoxc
Remove NodeId from even more HIR nodes

The next iteration of HirIdification (#57578).

Removes `NodeId` from:

- [x] `StructField`
- [x] `ForeignItem`
- [x] `Item`
- [x] `Pat`
- [x] `FieldPat`
- [x] `VariantData`
- [x] `ImplItemId` (replaces it with `HirId`)
- [x] `TraitItemId` (replaces it with `HirId`)
2019-03-02 19:07:22 +00:00
Mark Rousskov
2870015b7b Bootstrap compiler update for 1.35 release 2019-03-02 09:05:34 -07:00
Dan Robertson
04d0a8cb83
Fix C-variadic function printing
There is no longer a need to append the string `", ..."` to a functions
args as `...` is parsed as an argument and will appear in the functions
arguments.
2019-03-02 15:03:09 +00:00
kennytm
c835a0a94d
Rollup merge of #58842 - mati865:53005, r=alexcrichton
Forbid duplicating Cargo as a dependency

Fixes https://github.com/rust-lang/rust/issues/53005
2019-03-02 22:58:49 +08:00
kennytm
133f97309a
Rollup merge of #58852 - alexcrichton:update-netbsd, r=Mark-Simulacrum
Update toolchain to build NetBSD release

This allows us to remove the "allow old toolchains" flag we pass to
LLVM, ensuring that we'll be up to date when LLVM needs us to be!

This is a follow-up from https://github.com/rust-lang/rust/pull/58408 where NetBSD was explicitly whitelisted to allow older toolchains.
2019-03-02 22:58:47 +08:00
kennytm
2e51007350
Rollup merge of #58838 - jens1o:patch-1, r=Centril
Fix typo in Vec#resize_with documentation
2019-03-02 22:58:44 +08:00
kennytm
0404c83626
Rollup merge of #58835 - Centril:rust_2018_idioms-remote-test, r=oli-obk
tools/remote-test-{client,server}: deny(rust_2018_idioms)

r? @oli-obk

(+ tiny amount of cleanup)
2019-03-02 22:58:42 +08:00