Commit Graph

90415 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
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
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
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
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
kennytm 53fc9c6bfa
Rollup merge of #58833 - Centril:rust_2018_idioms-rustbook, r=oli-obk
tools/rustbook: deny(rust_2018_idioms)

r? @oli-obk
2019-03-02 22:58:40 +08:00
kennytm 1180df2a3b
Rollup merge of #58832 - pietroalbini:appveyor-hyperv, r=kennytm
Revert switching to GCP on AppVeyor

r? @alexcrichton
2019-03-02 22:58:37 +08:00
kennytm 2c1a7c132b
Rollup merge of #58830 - Centril:rust_2018_idioms-tidy, r=oli-obk
tidy: deny(rust_2018_idioms)

r? @oli-obk
2019-03-02 22:58:35 +08:00
kennytm c4f693cbf2
Rollup merge of #58821 - alex:patch-1, r=Centril
Fixed a syntax error in the pin docs
2019-03-02 22:58:32 +08:00
kennytm 8bdd948b31
Rollup merge of #58802 - nnethercote:inline-record_layout, r=oli-obk
Ensure `record_layout_for_printing()` is inlined.

This reduces instruction counts for the `ctfe-stress-2` benchmark by
about 1%.

r? @oli-obk
2019-03-02 22:58:29 +08:00
kennytm 4aebce5758
Rollup merge of #58785 - euclio:tool-lint-attrs, r=estebank
allow specifying attributes for tool lints

Needed for clippy to fix `unused_doc_comments` warnings that will be exposed by #57882 (and thus unblock it).
2019-03-02 22:58:26 +08:00
kennytm f67736ad04
Rollup merge of #58782 - tspiteri:str-escape-self, r=kennytm
Replace `s` with `self` in docs for str methods taking self.

Cherry picked from PR #58596 which is blocked on some intra-doc link bugs.
2019-03-02 22:58:22 +08:00
kennytm df2b6bcf5a
Rollup merge of #58780 - RalfJung:manually-drop, r=nagisa
ManuallyDrop != MaybeUninit

Cc @Centril
2019-03-02 22:58:19 +08:00
kennytm 2e82d11de1
Rollup merge of #58730 - timvermeulen:internal_iteration, r=scottmcm
Have all methods of Filter and FilterMap use internal iteration

This PR changes `Filter::{next, next_back, count}` and `FilterMap::{next, next_back}` to all use internal iteration. The `next` and `next_back` methods are changed to directly forward to `try_for_each` and `try_rfold` respectively, using `Result` as the `Try` type. I think that's okay? Alternatively, I could change their implementations to use `LoopState` instead if there's any benefit in doing so.

r? @scottmcm
2019-03-02 22:58:11 +08:00
bors fab272e5ef Auto merge of #58216 - pitdicker:sqos_flags, r=alexcrichton
Set secure flags when opening a named pipe on Windows

Fixes https://github.com/rust-lang/rust/issues/42036, see also the previous attempt in https://github.com/rust-lang/rust/pull/44556.

Whether this is correct depends on if it is somehow possible to create a symlink to a named pipe, outside the named pipe filesystem (NPFS). But as far as I can tell that should be impossible.

Also fixes that `security_qos_flags(SECURITY_ANONYMOUS)` does not set the `SECURITY_SQOS_PRESENT` flag, and the incorrect documentation about the default value of `security_qos_flags`.
2019-03-02 13:16:12 +00:00
bors 9cfed5da12 Auto merge of #58077 - Nemo157:generator-state-debug-info, r=Zoxc
Add debug-info to access variables from generator state
2019-03-02 08:40:14 +00:00
ljedrz 299ed9af94 driver: fix test 2019-03-02 07:48:53 +01:00
ljedrz fa61c67fe6 hir: HirIdify Impl&TraitItemId 2019-03-02 07:48:53 +01:00
ljedrz fb22315f08 hir: remove NodeId from VariantData 2019-03-02 07:48:52 +01:00
ljedrz 50b8bc8c8c hir: remove NodeId from Pat and FieldPat 2019-03-02 07:48:52 +01:00
ljedrz 77fa041fc1 hir: remove NodeId from Item 2019-03-02 07:48:52 +01:00