Commit Graph

259 Commits

Author SHA1 Message Date
Alexander Regueiro
ee89c088b0 Various minor/cosmetic improvements to code 2018-12-07 23:53:34 +00:00
bors
e9bca7a993 Auto merge of #55906 - nnethercote:rm-OpenSnapshot-CommittedSnapshot, r=nikomatsakis
Clean up and streamline snapshot data structures

These commits clean up the snapshot structures a bit, so they are more consistent with each other and with the `ena` crate.

They also remove the `OpenSnapshot` and `CommittedSnapshot` entries in the undo log, just like I did for the `ena` crate in https://github.com/rust-lang-nursery/ena/pull/14. This PR in combination with that `ena` PR reduces instruction counts by up to 6% on benchmarks.

r? @nikomatsakis. Note that this isn't quite ready for landing, because the `ena` dependency in the first commit needs to be updated once https://github.com/rust-lang-nursery/ena/pull/14 lands. But otherwise it should be good.
2018-11-25 12:20:18 +00:00
Nicholas Nethercote
f5624e41e8 Make commit and rollback_to methods take ownership of the snapshots.
Because they shouldn't be reused. This provides consistency with the
`ena` crate.
2018-11-25 17:54:06 +11:00
scalexm
6bf17d249b Instantiate all bound vars universally 2018-11-24 01:24:40 +01:00
scalexm
cdb96be11e Handle placeholder types in canonicalization 2018-11-24 01:24:40 +01:00
scalexm
7401e3def5 Distinguish between placeholder kinds 2018-11-24 01:24:40 +01: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
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
3c9258e604 Prefer Default::default over FxHash*::default in struct constructors 2018-10-19 14:34:44 +02:00
Oliver Scherer
ee81739dc1 Deprecate the FxHashMap() and FxHashSet() constructor function hack 2018-10-19 14:34:44 +02:00
Niko Matsakis
e339e84fff move force_instantiate_unchecked to be local to nll_relate code 2018-10-15 16:24:46 -04:00
Niko Matsakis
e7ed997d87 extract type_relate into the inference context as nll_relate
The name is not great. Nor is the existence of this code great.  It
should be merged with the main "type relating code" at some point.
2018-10-15 16:24:46 -04:00
Niko Matsakis
24bee005b6 add force_instantiate_unchecked method 2018-10-15 16:05:31 -04:00
Niko Matsakis
05f67ca1a2 remove the sub/super terminology for universes
Instead, we talk about:

- creating the "next" universe
- universes "extending" one another
- and `u1.can_name(u2)`, meaning that `u1` contains all names from `u2`
2018-10-15 11:42:07 -04:00
Niko Matsakis
f419077811 pacify the mercilous tidy with rustfmt 2018-10-15 11:42:07 -04:00
Niko Matsakis
460915be73 make UniverseIndex hashable, rename "sub-" to "superuniverse"
The only name was silly. U1 can contain everything from U0 *plus* more
things.
2018-10-15 11:42:07 -04:00
Niko Matsakis
fd046a2ede bundle up "canonical instantiation" with infcx creation 2018-10-15 08:57:22 -04:00
Niko Matsakis
0887456401 extend NLL universe code to have >1 placeholder within one universe 2018-10-04 11:02:40 -04:00
Niko Matsakis
4cd4eae435 rename skolemized to placeholder 2018-10-04 11:02:40 -04:00
Ariel Ben-Yehuda
b95d0489d9 normalize param-env type-outlives predicates last
The normalization of type-outlives predicates can depend on misc.
environment predicates, but not the other way around. Inferred lifetime
bounds can propagate type-outlives bounds far and wide, so their
normalization needs to work well.

Fixes #54467
2018-10-01 22:42:53 +03:00
Zack M. Davis
5b22d9b2ca don't elide lifetimes in paths in librustc/
This seemed like a good way to kick the tires on the
elided-lifetimes-in-paths lint (#52069)—seems to work! This was also
pretty tedious—it sure would be nice if `cargo fix` worked on this
codebase (#53896)!
2018-09-29 21:48:29 -07:00
Niko Matsakis
a13c9f6bfd convert from an UnlessNll flag to a SuppressRegionErrors flag
Hopefully this will help clarify the behavior in the various borrowck
modes
2018-09-26 09:38:26 -04:00
Niko Matsakis
672e071a42 change RegionObligation to store a SubregionOrigin 2018-09-26 09:30:54 -04:00
Niko Matsakis
1830c9e8f9 use a UnlessNll flag to consolidate error reporting paths 2018-09-26 09:30:54 -04:00
Niko Matsakis
5c016f4cb5 add ability to create region vars with explicit universe 2018-09-09 14:14:41 -04:00
Niko Matsakis
3f600431ec infer/mod.rs: rustfmt 2018-09-09 14:14:41 -04:00
ms2300
6c14360c32 Changing TyAnon -> TyOpaque and relevant functions 2018-09-05 13:01:16 -06:00
Pietro Albini
1c36e76751
Rollup merge of #53513 - nnethercote:inline-shallow_resolve, r=varkor
Force-inline `shallow_resolve` at its hottest call site.

It's a ~1% win on `keccak` and `inflate`.
2018-08-30 20:15:31 +02:00
varkor
6f637da50c Remove Ty prefix from Ty{Adt|Array|Slice|RawPtr|Ref|FnDef|FnPtr|Dynamic|Closure|Generator|GeneratorWitness|Never|Tuple|Projection|Anon|Infer|Error} 2018-08-22 16:07:44 +01:00
Nicholas Nethercote
b73843f942 Force-inline shallow_resolve at its hottest call site.
It's a ~1% win on `keccak` and `inflate`.
2018-08-20 10:36:39 +10:00
ljedrz
ffdac5d592 Make SnapshotMap::{commit, rollback_to} take references 2018-08-09 19:50:11 +02:00
Niko Matsakis
d9afd2bb38 introduce new subtyping 2018-07-25 06:38:22 +03:00
Niko Matsakis
40498bae65 simplify NLLRegionVariableOrigin 2018-07-25 06:38:19 +03:00
ljedrz
e3d14c4c56 Refactor a few push loops to iterators in librustc 2018-07-20 21:57:12 +02:00
Niko Matsakis
9b1d2229ff change the enter_canonical_trait_query method to give a fulfill cx 2018-06-27 16:04:32 -04:00
Eduard-Mihai Burtescu
73f62106ad rustc: move TypeParamDef's fields into GenericParamDefKind::Type. 2018-05-21 12:13:19 +03:00
kennytm
bb20dc124e
Rollup merge of #50740 - nnethercote:rm-LazyBTreeMap, r=cramertj
Remove LazyBTreeMap.

It was introduced in #50240 to avoid an allocation when creating a new
BTreeMap, which gave some speed-ups. But then #50352 made that the
default behaviour for BTreeMap, so LazyBTreeMap is no longer necessary.
2018-05-17 05:18:11 +08:00
varkor
5be2bdb498 One must always remember to clean up after themselves 2018-05-15 14:52:53 +01:00
varkor
e9c28b2564 Use Kind instead of UnpackedKind in Substs methods 2018-05-15 14:22:25 +01:00
varkor
3ae2468261 Clean up shared subst code 2018-05-15 14:22:11 +01:00
varkor
d9190da982 Refactor Substs methods on generic parameters 2018-05-15 14:22:11 +01:00
varkor
4bed895cab Pull common parameters into GenericParamDef
This leads to a lot of simplifications, as most code doesn't actually need to know about the specific lifetime/type data; rather, it's concerned with properties like name, index and def_id.
2018-05-15 14:21:32 +01:00
varkor
06f0a7c89f Rename TypeParameterDef -> TypeParamDef and RegionParameterDef -> RegionParamDef 2018-05-15 14:20:19 +01:00
Nicholas Nethercote
f46b888f73 Remove LazyBTreeMap.
It was introduced in #50240 to avoid an allocation when creating a new
BTreeMap, which gave some speed-ups. But then #50352 made that the
default behaviour for BTreeMap, so LazyBTreeMap is no longer necessary.
2018-05-14 22:27:45 +10:00
Sean Griffin
04708ba60e track skol levels in the InferCtxt rather than via counter 2018-05-02 08:36:13 -06:00
Sean Griffin
f5d240b432 Wrap InferCtxt::universe in a cell
We'll need this in order to start tracking skolemizatoins here, and it's
easier to update all the field accesses now rather than later.
2018-05-02 08:36:07 -06:00
Sean Griffin
2f69b798af give a universe to region variables 2018-05-02 07:36:11 -06:00
Sean Griffin
6234a89828 store RegionVariableInfo and not just RegionVariableOrigin 2018-05-02 07:36:11 -06:00
Sean Griffin
e904d56928 add universes to type inference variables
This gives each type inference variable a notion of universe but doesn't
do anything with it. We can always get the "current universe" from
infer_ctxt. This relies on the property of type variables that they can
never interact with siblings.
2018-05-02 07:36:09 -06:00