David Wood
24a7a010d1
Refactor UserTypeAnnotation
.
...
This commit refactors the `UserTypeAnnotation` type to be referred to by
an index within `UserTypeProjection`. `UserTypeAnnotation` is instead
kept in an `IndexVec` within the `Mir` struct.
Further, instead of `UserTypeAnnotation` containing canonicalized types,
it now contains normal types and the entire `UserTypeAnnotation` is
canonicalized. To support this, the type was moved from the `rustc::mir`
module to `rustc::ty` module.
2018-12-30 14:25:20 +01:00
Mark Rousskov
2a663555dd
Remove licenses
2018-12-25 21:08:33 -07:00
bors
3f7c718926
Auto merge of #54125 - varkor:less-conservative-uninhabitedness-check, r=nikomatsakis
...
Less conservative uninhabitedness check
Extends the uninhabitedness check to structs, non-empty enums, tuples and arrays.
Pulled out of #47291 and #50262 .
Fixes https://github.com/rust-lang/rust/issues/54586 .
r? @nikomatsakis
2018-12-20 22:04:21 +00:00
bors
4755e2f3b6
Auto merge of #56741 - RalfJung:retag-to-raw, r=oli-obk
...
treat ref-to-raw cast like a reborrow: do a special kind of retag
r? @oli-obk
Cc @nikomatsakis
2018-12-20 09:58:10 +00:00
bors
817dda7df0
Auto merge of #56649 - davidtwco:issue-46589, r=pnkfelix
...
MIR borrowck doesn't accept the example of iterating and updating a mutable reference
Fixes #46589 .
r? @pnkfelix or @nikomatsakis
2018-12-20 07:22:15 +00:00
Ralf Jung
c1160a8f86
treat ref-to-raw cast like a reborrow: do a special kind of retag
2018-12-18 09:56:31 +01:00
David Wood
7b628e18a3
Add required lifetime parameter to BitDenotation.
...
This avoids all sorts of confusing issues with using both `dest_place`
and `self` in the `propagate_call_return` function in the
`BitDenotation` implementation for `Borrows`.
2018-12-17 17:26:24 +01:00
Matthew Jasper
cdd537339e
Make determining the discriminant a normal Shallow read
...
Enum layout optimizations mean that the discriminant of an enum may not
be stored in a tag disjoint from the rest of the fields of the enum.
Stop borrow checking as though they are.
2018-12-13 20:53:07 +00:00
varkor
6561732f88
Consider privacy in more locations
2018-12-11 11:18:55 +00:00
varkor
88afbf2d99
Make uninhabitedness checking more intelligent
2018-12-11 11:18:19 +00:00
varkor
62b359094f
Check for uninhabitedness instead of never
2018-12-11 11:18:19 +00:00
Alexander Regueiro
ee89c088b0
Various minor/cosmetic improvements to code
2018-12-07 23:53:34 +00:00
bors
4a45578bc5
Auto merge of #56502 - Zoxc:hir-func, r=eddyb
...
Use a function to access the Hir map to be able to turn it into a query later
r? @eddyb
2018-12-07 20:04:06 +00:00
David Wood
4a286d33f9
Fix ICE in region naming.
...
This commit puts a fix in place for the ICE in region naming code so
that it doesn't break the compiler. However, this results in the
diagnostic being poorer as the borrow explanation that was causing the
ICE is not being added - this should be fixed as a follow-up.
2018-12-07 14:45:30 +01:00
David Wood
ea873f57c9
Introduce constraint category for yields.
...
This commit adds a new `ConstraintCategory` for yield points - this
allows for differentiation between a normal return and a yield in the
diagnostics.
2018-12-07 14:05:58 +01:00
kennytm
0e41ef13aa
Rollup merge of #56516 - frewsxcv:frewsxcv-eq, r=Mark-Simulacrum
...
Replace usages of `..i + 1` ranges with `..=i`.
Before this change we were using old computer code techniques. After this change we use the new and improved computer code techniques.
2018-12-07 12:42:32 +08:00
John Kåre Alsaker
a70babed03
Use a function to access the Hir map to be able to turn it into a query later
2018-12-06 17:24:36 +01:00
Pietro Albini
b2a002dc4b
Rollup merge of #56372 - wildarch:issue-55314-second-borrow-ref, r=davidtwco
...
Refer to the second borrow as the "second borrow" in E0501.rs
Fixes #55314 .
r? @davidtwco
2018-12-05 23:54:27 +01:00
Corey Farwell
c025d61409
Replace usages of ..i + 1
ranges with ..=i
.
2018-12-04 12:05:19 -08:00
Matthew Jasper
d748712521
Propagate all closure requirements to the caller
2018-12-03 23:17:02 +00:00
kennytm
a6c4771520
Rollup merge of #56214 - scalexm:unification, r=nikomatsakis
...
Implement chalk unification routines
`ResolventOps` and `AggregateOps` are mostly straightforwardly translated from chalk. I had caught a few bugs already in my `chalk` branch and backported fixes to this branch, but there may be other ones left. EDIT: I hope there are none left now :)
Fixes #54935 .
2018-12-01 02:31:12 +08:00
Daan de Graaf
1560a75f6a
Refer to the second borrow as the "second borrow".
2018-11-30 14:55:51 +01:00
scalexm
c805e817a9
Fix doc comments
2018-11-29 21:57:40 +01:00
scalexm
3b2cfc510b
Handle inference variables in nll_relate
and use it for chalk
2018-11-29 21:57:34 +01:00
bors
abe19a7305
Auto merge of #55921 - scalexm:placeholders, r=nikomatsakis
...
Add placeholder types
Fixes #48696 (handle universes in canonicalization of type inference vars), and fixes #55098 .
2018-11-25 06:48:21 +00:00
scalexm
7401e3def5
Distinguish between placeholder kinds
2018-11-24 01:24:40 +01:00
Matthew Jasper
6027e0810f
Only handle ReVar regions in NLL borrowck
...
Now that lexical MIR borrowck is gone, there's no need to store Regions
unnecessarily.
2018-11-18 11:05:19 +00:00
Matthew Jasper
b16985a354
Remove mir::StatementKind::EndRegion
...
Since lexical MIR borrow check is gone, and validation no longer uses
these, they can be removed.
2018-11-18 11:05:19 +00:00
Pietro Albini
66fcb3ceb2
Rollup merge of #55901 - euclio:speling, r=petrochenkov
...
fix various typos in doc comments
2018-11-15 11:04:42 +01:00
bors
4ec0ba9545
Auto merge of #55716 - RalfJung:escape-to-raw, r=oli-obk
...
Add escape-to-raw MIR statement
Add a new MIR "ghost state statement": Escaping a ptr to permit raw accesses.
~~This includes #55549 , [click here](https://github.com/RalfJung/rust/compare/miri-visitor...RalfJung:escape-to-raw ) for just the new commits.~~
2018-11-15 01:12:01 +00:00
bors
f1d61837d1
Auto merge of #55912 - kennytm:rollup, r=kennytm
...
Rollup of 20 pull requests
Successful merges:
- #55136 (Remove short doc where it starts with a codeblock)
- #55711 (Format BtreeMap::range_mut example)
- #55722 (impl_stable_hash_for: support enums and tuple structs with generic parameters)
- #55754 (Avoid converting bytes to UTF-8 strings to print, just pass bytes to stdout/err)
- #55804 (rustdoc: don't inline `pub use some_crate` unless directly asked to)
- #55805 (Move `static_assert!` into librustc_data_structures)
- #55837 (Make PhantomData #[structural_match])
- #55840 (Fix TLS errors when downloading stage0)
- #55843 (add FromIterator<A> to Box<[A]>)
- #55858 (Small fixes on code blocks in rustdoc)
- #55863 (Fix a typo in std::panic)
- #55870 (Fix typos.)
- #55874 (string: Add documentation for `From` impls)
- #55879 (save-analysis: Don't panic for macro-generated use globs)
- #55882 (Reference count `crate_inherent_impls`s return value.)
- #55888 (miri: for uniformity, also move memory_deallocated to AllocationExtra)
- #55889 (global allocators: add a few comments)
- #55896 (Document optimizations enabled by FusedIterator)
- #55905 (Change `Lit::short_name` to `Lit::literal_name`.)
- #55908 (Fix their/there grammar nit)
2018-11-13 22:17:46 +00:00
Andy Russell
4e35cbb22e
fix various typos in doc comments
2018-11-13 14:45:31 -05:00
scalexm
afa884c03a
Instantiate all bound vars existentially
2018-11-13 12:28:43 +01:00
Oliver Scherer
4a9ed3f25a
Use type safe VariantIdx
instead of usize
everywhere
2018-11-12 14:24:45 +01:00
Bruce Mitchener
a62af858e0
Fix typos.
2018-11-11 20:52:36 +07:00
Pietro Albini
4c50964c5f
Rollup merge of #55822 - davidtwco:issue-55394, r=pnkfelix
...
ICE with #![feature(nll)] and elided lifetimes
Fixes #55394 .
This commit fixes an ICE and determines the correct return span in cases
with a method implemented on a struct with an an elided lifetime.
r? @pnkfelix
2018-11-11 00:21:22 +01:00
bors
4cd3294a1d
Auto merge of #55637 - pnkfelix:issue-55552-dont-attempt-to-ascribe-projections-out-of-a-ty-var, r=nikomatsakis
...
Do not attempt to ascribe projections out of a ty var
If we encounter `_` ascribed to structural pattern like `(a, b)`, just skip relate_types.
Fix #55552
2018-11-10 09:38:10 +00:00
David Wood
e6a466e60c
Fix ICE and find correct return span.
...
This commit fixes an ICE and determines the correct return span in cases
with a method implemented on a struct with an an elided lifetime.
2018-11-09 15:39:32 +01:00
Ralf Jung
f27cd60ae1
no more action on ref or cast, but add new MIR statement for escaping a ptr to raw
2018-11-07 16:54:31 +01:00
scalexm
d99195ad8f
Rename Binder::no_late_bound_regions
to Binder::no_bound_vars
2018-11-03 11:41:55 +01:00
scalexm
45be1ac0fc
Remove ReCanonical
in favor of ReLateBound
2018-11-03 11:41:55 +01:00
scalexm
d0447550da
Shift both late bound regions and bound types
2018-11-03 11:41:51 +01:00
Felix S. Klock II
09edfb885c
If we encounter _
ascribed to structural pattern like (a, b)
, just skip relate_types.
2018-11-03 01:53:57 +01:00
bors
8b096314a6
Auto merge of #55087 - levex:e0669-improve-span, r=nagisa
...
rustc: improve E0669 span
E0669 refers to an operand that cannot be coerced into a single LLVM
value, unfortunately right now this uses the Span for the entire inline
assembly statement, which is less than ideal.
This commit preserves the Span from HIR, which lets us emit the error
using the Span for the operand itself in MIR.
r? @nagisa
cc/ @parched
2018-11-02 18:28:51 +00:00
bors
87a3c1ee70
Auto merge of #55316 - RalfJung:retagging, r=oli-obk
...
Add Retagging statements
This adds a `Retag` statement kind to MIR, used to perform the retagging operation from [Stacked Borrows](https://www.ralfj.de/blog/2018/08/07/stacked-borrows.html ). It also kills the old `Validate` statements that I added last year.
NOTE: This includes https://github.com/rust-lang/rust/pull/55270 . Only [these commits are new](https://github.com/RalfJung/rust/compare/stacked-borrows-ng...RalfJung:retagging ).
2018-11-02 12:45:03 +00:00
bors
5eda136f62
Auto merge of #55305 - nikomatsakis:universes-refactor-3, r=scalexm
...
universes refactor 3
Some more refactorings from my universe branch. These are getting a bit more "invasive" -- they start to plumb the universe information through the canonicalization process. As of yet though I don't **believe** this branch changes our behavior in any notable way, though I'm marking the branch as `WIP` to give myself a chance to verify this.
r? @scalexm
2018-11-02 01:19:17 +00:00
Niko Matsakis
740117f905
fix bug in NLL error reporting
...
Account for incompatible universes and higher-ranked subtyping.
2018-10-31 12:10:49 -04:00
Ralf Jung
aafcf2c942
Emit Retag statements, kill Validate statements
...
Also "rename" -Zmir-emit-validate to -Zmir-emit-retag, which is just a boolean (yes or no).
2018-10-29 09:05:18 +01:00
Niko Matsakis
a1be20c9ce
error_reporting/mod.rs: rustfmt
2018-10-27 09:06:03 -04:00
Niko Matsakis
784746f57e
convert placeholder region vids in NLL mode as we see them
2018-10-27 08:41:12 -04:00