diff --git a/src/librustc/ty/flags.rs b/src/librustc/ty/flags.rs index a1da3017fcd0..b12581b34003 100644 --- a/src/librustc/ty/flags.rs +++ b/src/librustc/ty/flags.rs @@ -176,9 +176,13 @@ impl FlagComputation { fn add_region(&mut self, r: ty::Region) { match r { - ty::ReVar(..) | + ty::ReVar(..) => { + self.add_flags(TypeFlags::HAS_RE_INFER); + self.add_flags(TypeFlags::KEEP_IN_LOCAL_TCX); + } ty::ReSkolemized(..) => { self.add_flags(TypeFlags::HAS_RE_INFER); + self.add_flags(TypeFlags::HAS_RE_SKOL); self.add_flags(TypeFlags::KEEP_IN_LOCAL_TCX); } ty::ReLateBound(debruijn, _) => { self.add_depth(debruijn.depth); } diff --git a/src/librustc/ty/mod.rs b/src/librustc/ty/mod.rs index 24f0671ce618..b37fad0ba305 100644 --- a/src/librustc/ty/mod.rs +++ b/src/librustc/ty/mod.rs @@ -514,15 +514,16 @@ bitflags! { const HAS_SELF = 1 << 1, const HAS_TY_INFER = 1 << 2, const HAS_RE_INFER = 1 << 3, - const HAS_RE_EARLY_BOUND = 1 << 4, - const HAS_FREE_REGIONS = 1 << 5, - const HAS_TY_ERR = 1 << 6, - const HAS_PROJECTION = 1 << 7, - const HAS_TY_CLOSURE = 1 << 8, + const HAS_RE_SKOL = 1 << 4, + const HAS_RE_EARLY_BOUND = 1 << 5, + const HAS_FREE_REGIONS = 1 << 6, + const HAS_TY_ERR = 1 << 7, + const HAS_PROJECTION = 1 << 8, + const HAS_TY_CLOSURE = 1 << 9, // true if there are "names" of types and regions and so forth // that are local to a particular fn - const HAS_LOCAL_NAMES = 1 << 9, + const HAS_LOCAL_NAMES = 1 << 10, // Present if the type belongs in a local type context. // Only set for TyInfer other than Fresh.