251 Commits

Author SHA1 Message Date
Niko Matsakis
d4005a2bc9 thread borrow-set around more 2018-04-15 07:06:30 -04:00
Niko Matsakis
a849da626d remove ReserveOrActivateIndex 2018-04-15 07:06:29 -04:00
Niko Matsakis
d32e5aac3d use the activations_at_location map to check activations
Not gen bits
2018-04-15 07:06:29 -04:00
Niko Matsakis
e1f82aa590 determine whether a borrow is active based solely on the location 2018-04-15 07:06:29 -04:00
Niko Matsakis
f93d5d30bd add useful debug 2018-04-15 07:06:29 -04:00
Niko Matsakis
8e783da222 encapsulate ReserveOrActivateIndex into the borrows dataflow 2018-04-15 07:06:29 -04:00
Niko Matsakis
5f7b74f832 construct the BorrowSet outside of borrows 2018-04-15 07:06:29 -04:00
Niko Matsakis
e1123674b1 extract code to build borrow-set into borrow_check::borrow_set
Also:

- Extract common helper functions into a helper trait.
- Kill a bit of dead code.
2018-04-15 07:06:29 -04:00
Niko Matsakis
70592664b6 relocate BorrowData etc into borrow_check::borrow_set 2018-04-15 07:06:27 -04:00
bors
9c2bfcbea2 Auto merge of #49808 - spastorino:dump_cause_ice, r=nikomatsakis
[NLL] Fix ICE when a borrow wrapped in a temporary is used after dropped

Fixes #47646

r? @nikomatsakis
2018-04-13 16:06:14 +00:00
Scott McMurray
c4b6521327 Add ok-wrapping to catch blocks, per RFC 2018-04-10 20:03:40 -07:00
bors
0b72d48f8e Auto merge of #48914 - gaurikholkar:e0389, r=nikomatsakis
Modify compile-fail/E0389 error message WIP

This fixes #47388

cc @nikomatsakis @estebank

r? @nikomatsakis

Certain ui tests were failing locally. I'll check if the same happens here too.
2018-04-10 19:00:19 +00:00
Santiago Pastorino
2c79f6458e
rustfmt explain_borrow/mod 2018-04-09 17:35:32 -03:00
Santiago Pastorino
2e87dbbde1
Fix ICE when a borrow is used after drop
ht @nickfrostatx for the first initial patch
2018-04-09 17:35:28 -03:00
gaurikholkar
c792d1e0c1 tidy fixes 2018-04-09 23:12:13 +05:30
gaurikholkar
2ad20e8127 tidy fixes 2018-04-08 22:57:48 +05:30
gaurikholkar
cbde62c2cc fix tidy errors 2018-04-07 14:36:29 +05:30
gaurikholkar
e5a96a4b95 modify the error message- CR Comments 2018-04-07 13:17:16 +05:30
bors
0e35dddbd3 Auto merge of #49392 - retep007:nll-issue-48962, r=nikomatsakis
fixes move analysis

Fixed compiler error by correct checking when dereferencing

Fix #48962

r? @nikomatsakis
2018-04-06 21:50:12 +00:00
gaurikholkar
6686d104c8 tidy fix 2018-04-06 20:28:00 +05:30
gaurikholkar
1fb25fbbe3 reduce nested loops in the code 2018-04-06 20:00:21 +05:30
gaurikholkar
12d141561d tidy fixes 2018-04-05 22:49:09 +05:30
gaurikholkar
1b06fe1ef5 Merge branch 'master' of https://github.com/rust-lang/rust into e0389 2018-04-05 21:52:40 +05:30
gaurikholkar
6c649fbed4 address code review comments 2018-04-05 21:48:06 +05:30
Peter Hrvola
9056c7a849 Fixed error message from PR review #49392 2018-04-02 09:01:58 +02:00
Peter Hrvola
dc41851882 Fixed nits from PR review #49392 2018-04-01 10:01:51 +02:00
bors
3c5f850958 Auto merge of #49472 - nikomatsakis:nll-optimize-constraint-prop-1, r=pnkfelix
optimize NLL constraint propagation a little

Removes a bone-headed hot spot in NLL constant propagation; we were re-allocating the stack vector and hashmap as we repeated the DFS. This change shares those resources across each call.

It also modifies the constraint list to be a linked list; arguably I should revert that, though, as this didn't turn out to be a perf hit and perhaps the old code was clearer? (Still, the new style appeals to me.)

r? @pnkfelix
2018-03-31 04:09:43 +00:00
Niko Matsakis
ca8176d778 apply pnkfelix nits 2018-03-29 13:32:12 -04:00
Niko Matsakis
bd90302af6 document reason for #[inline(never)] annotation 2018-03-29 13:32:12 -04:00
Niko Matsakis
499d784fbd amortize dfs storage creation 2018-03-29 13:32:12 -04:00
Niko Matsakis
96f3e560d9 remove dependency map and instead use a linked list of constraints 2018-03-29 13:32:12 -04:00
Niko Matsakis
1ef1b92379 add #[inline(never)] annotations 2018-03-29 03:44:00 -04:00
bors
9c9424de51 Auto merge of #49202 - csmoe:trait_engine, r=nikomatsakis
Introduce trait engine

address #48895 step 1: introduce trait engine
2018-03-27 14:31:43 +00:00
Peter Hrvola
4954e3e828 fixes internal compiler error:
librustc_mir/transform/elaborate_drops.rs — drop of untracked, uninitialized value

Fix #48962

r? @nikomatsakis
2018-03-26 22:07:40 +02:00
csmoe
0c4062a94d import trait engine to typeck 2018-03-23 09:22:07 +08:00
Niko Matsakis
04aeef8d45
Debug logs for replace_bound_regions_with_nll_infer_vars 2018-03-22 22:40:51 +00:00
David Wood
692a931887
UserAssertTy can handle inference variables.
This commit modifies the UserAssertTy statement to take a canonicalized
type rather than a regular type so that we can handle the case where the
user provided type contains a inference variable.
2018-03-22 21:11:02 +00:00
David Wood
5d2a60c57e
No longer visiting user_assert_ty statements in constraint generation. 2018-03-22 21:11:02 +00:00
David Wood
d4b9a7874b
Added comment in renumberer about UserAssertTy. 2018-03-22 21:11:02 +00:00
David Wood
ee4c7ac154
Added override in renumberer for UserAssertTy. 2018-03-22 21:11:01 +00:00
David Wood
239b3ec473
Changed location to at_self from at_successor. 2018-03-22 21:11:01 +00:00
David Wood
5f21aa8734
Added initial processing of UserAssertTy statements. 2018-03-22 21:11:00 +00:00
David Wood
17b285d203
Added UserAssertTy statement. 2018-03-22 21:10:59 +00:00
bors
5ebf74851d Auto merge of #47630 - canndrew:exhaustive-patterns, r=nikomatsakis
Stabilise feature(never_type). Introduce feature(exhaustive_patterns)

This stabilizes `!`, removing the feature gate as well as the old defaulting-to-`()` behavior. The pattern exhaustiveness checks which were covered by `feature(never_type)` have been moved behind a new `feature(exhaustive_patterns)` gate.
2018-03-14 23:43:04 +00:00
kennytm
b5f102c7ae
Rollup merge of #48840 - varkor:idxset-cleanup, r=pnkfelix
Remove some unnecessary IdxSet methods

This replaces `IdxSet:: reset_to_empty` with `IdxSet:: clear`, and `IdxSet::elems`/`IdxSet::each_bit` with `IdxSet::iter`. Based on some [comments on #rustc](https://botbot.me/mozilla/rustc/2018-01-23/?msg=96063396).

r? @pnkfelix
2018-03-15 00:15:46 +08:00
Andrew Cann
9b15ddb29e remove defaulting to unit
Types will no longer default to `()`, instead always defaulting to `!`.
This disables the associated warning and removes the flag from TyTuple
2018-03-14 12:44:51 +08:00
Niko Matsakis
e4728e494e transition various normalization functions to the new methods
In particular:

- `fully_normalize_monormophic_ty` => `normalize_erasing_regions`
- `normalize_associated_type_in_env` => `normalize_erasing_regions`
- `fully_normalize_associated_types_in` => `normalize_erasing_regions`
- `erase_late_bound_regions_and_normalize` => `normalize_erasing_late_bound_regions`
2018-03-13 11:22:07 -04:00
Niko Matsakis
ca87d24467 introduce infcx.at(..).dropck_outlives(..) operaton [VIC]
Backed by a canonicalized query. This computes all the types/regions that need
to be live when the destructor runs (i.e., that the dtor may access).
2018-03-13 11:22:07 -04:00
Niko Matsakis
3a50b41da4 introduce infcx.at(..).normalize(..) operation [VIC]
It is backed by the new `normalize_projection_ty` query, which uses
canonicalization.
2018-03-13 11:22:05 -04:00
Niko Matsakis
993c1488cc add canonicalize method to InferCtxt [VIC] 2018-03-13 11:21:31 -04:00