Commit Graph

90452 Commits

Author SHA1 Message Date
ljedrz
d7120e400d hir: remove some obsolete NodeId methods 2019-03-07 15:46:41 +01:00
ljedrz
e780daf372 hir: remove Visitor::visit_def_mention 2019-03-07 12:52:38 +01:00
ljedrz
42fbcb567c hir: replace NodeId with HirId in Destination 2019-03-07 12:43:27 +01:00
ljedrz
558a07b896 hir: remove NodeId from PatKind 2019-03-07 12:18:59 +01:00
ljedrz
78f91e3976 hir: remove NodeId from PathSegment 2019-03-07 09:25:51 +01:00
ljedrz
cd06038b54 HirIdification: replace NodeId method calls 2019-03-07 09:22:43 +01:00
bors
88f755f8a8 Auto merge of #58583 - varkor:const-generics-ty, r=oli-obk
Add const generics to ty (and transitive dependencies)

Split out from #53645. This work is a collaborative effort with @yodaldevoid.

There are a number of stubs. Some I plan to leave for the next PRs (e.g. `infer` and `rustdoc`). Others I can either fix up in this PR, or as follow ups (which would avoid the time-consuming rebasing).

It was a little hard to split this up, as so much depends on ty and friends. Apologies for the large diff.

r? @eddyb
2019-03-07 00:27:07 +00:00
varkor
de4478af91 Refactor const_to_op 2019-03-06 09:58:27 +00:00
varkor
ed9227abbd Make adjustments for comments 2019-03-05 22:49:37 +00:00
varkor
5c8b3c38f1 Fix rebase fallout 2019-03-05 22:31:06 +00:00
varkor
0da0457593 Clean up some generic substs handling 2019-03-05 22:20:17 +00:00
varkor
162405f222 Fix negative integer literal test
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:20:01 +00:00
varkor
3e3a4212e8 Update test fallout
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:20:01 +00:00
varkor
4c18ee4abd Update const generics tests
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:20:01 +00:00
varkor
54b935b9b9 Handle const generics elsewhere
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:20:01 +00:00
varkor
c236c241e6 Handle const generics in typeck
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:20:01 +00:00
varkor
8e56729b4d Handle new ConstValue variants in mir
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:19:26 +00:00
varkor
2dfde88438 Implement structural_impls for const generics
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:17:42 +00:00
varkor
133e776bf0 Add HAS_CT_INFER
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:17:41 +00:00
varkor
fc0fbe8bb5 Stub rustdoc const generics implementations
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:17:41 +00:00
varkor
eb2b8be6a0 Implement collect for const parameters
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:17:41 +00:00
varkor
3001ae7f94 Implement wfcheck for const parameters
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:13:11 +00:00
varkor
a8361eb6fa Refactor compare_method
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:13:10 +00:00
varkor
f7cd97f786 Add ast_const_to_const
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:13:10 +00:00
varkor
f761c414b1 Make a lazy const from a const param
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:11:33 +00:00
varkor
0d1c9c08d7 Pretty printing for const generics
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:11:04 +00:00
varkor
cbf5d22bcd Add const type flags
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:11:04 +00:00
varkor
29c272d4ed Take const into account in context
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:10:24 +00:00
varkor
63b7572d0d Stub methods in infer
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:10:02 +00:00
varkor
9a9aa5b46a Implement Hash for new types
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:09:31 +00:00
varkor
73a6df6079 Update diagnostics to include const parameters
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:09:31 +00:00
varkor
f7f60eef50 Add type constraints from const parameters
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:09:31 +00:00
varkor
7f2a4f7822 Add ConstValue::Param and ConstValue::Infer
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:08:44 +00:00
varkor
1ebc858e5d Add const kind and UnpackedKind::Const
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:08:44 +00:00
varkor
691d054e05 Take const generics into account when monomorphising
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:08:44 +00:00
varkor
2ce19ae3d1 Use non_erasable_generics for codegen
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:07:37 +00:00
varkor
386e9fbda2 Add type_flags helper methods to consts
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:07:37 +00:00
varkor
8cbbbaae6c Add InferConst
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:07:37 +00:00
varkor
a36d386c6d Add ConstVid
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:07:37 +00:00
varkor
11c31bb1d3 Add ParamConst
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:07:37 +00:00
varkor
62f23c2b0b Add Const generic param to ty
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:07:37 +00:00
bors
f22dca0a1b Auto merge of #58423 - nox:relax-bounds-buf-reader, r=dtolnay
Relax Read bounds on a bunch of BufReader<R> methods
2019-03-05 05:40:16 +00: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