diff options
| author | bors <bors@rust-lang.org> | 2018-11-02 01:19:17 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2018-11-02 01:19:17 +0000 |
| commit | 5eda136f622f9cbfe706e775fcaa3a0169fd4ae1 (patch) | |
| tree | 745bb2d20c45b5d6ed67fdae9194b140caa2fb7d /src/librustc/ty | |
| parent | d06210f88f3c8f2b04402838a23f5d8970c803ca (diff) | |
| parent | c244fd79f22f7a78016f20fa252d93bae474f4bd (diff) | |
| download | rust-5eda136f622f9cbfe706e775fcaa3a0169fd4ae1.tar.gz rust-5eda136f622f9cbfe706e775fcaa3a0169fd4ae1.zip | |
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
Diffstat (limited to 'src/librustc/ty')
| -rw-r--r-- | src/librustc/ty/error.rs | 11 | ||||
| -rw-r--r-- | src/librustc/ty/mod.rs | 11 | ||||
| -rw-r--r-- | src/librustc/ty/structural_impls.rs | 2 |
3 files changed, 10 insertions, 14 deletions
diff --git a/src/librustc/ty/error.rs b/src/librustc/ty/error.rs index ed6e372fe76..855983042c0 100644 --- a/src/librustc/ty/error.rs +++ b/src/librustc/ty/error.rs @@ -53,8 +53,6 @@ pub enum TypeError<'tcx> { ProjectionMismatched(ExpectedFound<DefId>), ProjectionBoundsLength(ExpectedFound<usize>), ExistentialMismatch(ExpectedFound<&'tcx ty::List<ty::ExistentialPredicate<'tcx>>>), - - OldStyleLUB(Box<TypeError<'tcx>>), } #[derive(Clone, RustcEncodable, RustcDecodable, PartialEq, Eq, Hash, Debug, Copy)] @@ -166,9 +164,6 @@ impl<'tcx> fmt::Display for TypeError<'tcx> { report_maybe_different(f, &format!("trait `{}`", values.expected), &format!("trait `{}`", values.found)) } - OldStyleLUB(ref err) => { - write!(f, "{}", err) - } } } } @@ -266,12 +261,6 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> { } } }, - OldStyleLUB(err) => { - db.note("this was previously accepted by the compiler but has been phased out"); - db.note("for more information, see https://github.com/rust-lang/rust/issues/45852"); - - self.note_and_explain_type_err(db, &err, sp); - } CyclicTy(ty) => { // Watch out for various cases of cyclic types and try to explain. if ty.is_closure() || ty.is_generator() { diff --git a/src/librustc/ty/mod.rs b/src/librustc/ty/mod.rs index f8fc2cc8303..ad26383df6a 100644 --- a/src/librustc/ty/mod.rs +++ b/src/librustc/ty/mod.rs @@ -1522,10 +1522,17 @@ impl UniverseIndex { /// True if `self` can name a name from `other` -- in other words, /// if the set of names in `self` is a superset of those in - /// `other`. + /// `other` (`self >= other`). pub fn can_name(self, other: UniverseIndex) -> bool { self.private >= other.private } + + /// True if `self` cannot name some names from `other` -- in other + /// words, if the set of names in `self` is a strict subset of + /// those in `other` (`self < other`). + pub fn cannot_name(self, other: UniverseIndex) -> bool { + self.private < other.private + } } /// The "placeholder index" fully defines a placeholder region. @@ -1540,6 +1547,8 @@ pub struct Placeholder { pub name: BoundRegion, } +impl_stable_hash_for!(struct Placeholder { universe, name }); + /// When type checking, we use the `ParamEnv` to track /// details about the set of where-clauses that are in scope at this /// particular point. diff --git a/src/librustc/ty/structural_impls.rs b/src/librustc/ty/structural_impls.rs index ba5b714a0e7..05f5f923557 100644 --- a/src/librustc/ty/structural_impls.rs +++ b/src/librustc/ty/structural_impls.rs @@ -455,7 +455,6 @@ impl<'a, 'tcx> Lift<'tcx> for ty::error::TypeError<'a> { ProjectionMismatched(x) => ProjectionMismatched(x), ProjectionBoundsLength(x) => ProjectionBoundsLength(x), Sorts(ref x) => return tcx.lift(x).map(Sorts), - OldStyleLUB(ref x) => return tcx.lift(x).map(OldStyleLUB), ExistentialMismatch(ref x) => return tcx.lift(x).map(ExistentialMismatch) }) } @@ -1003,7 +1002,6 @@ EnumTypeFoldableImpl! { (ty::error::TypeError::ProjectionBoundsLength)(x), (ty::error::TypeError::Sorts)(x), (ty::error::TypeError::ExistentialMismatch)(x), - (ty::error::TypeError::OldStyleLUB)(x), } } |
