diff options
| author | Niko Matsakis <niko@alum.mit.edu> | 2018-04-04 18:24:17 -0400 |
|---|---|---|
| committer | Niko Matsakis <niko@alum.mit.edu> | 2018-04-30 14:06:46 -0400 |
| commit | 149ab1bc39c148fc48394df1ba328c3a5eeca8d8 (patch) | |
| tree | c1a0178b4ee5687bae9911036a77b9b9c2a1af6a | |
| parent | 69400751ab4ae903244aff95e088df8fcefe409c (diff) | |
put ReSkolemized into the global tcx
| -rw-r--r-- | src/librustc/ty/context.rs | 7 | ||||
| -rw-r--r-- | src/librustc/ty/sty.rs | 14 |
2 files changed, 13 insertions, 8 deletions
diff --git a/src/librustc/ty/context.rs b/src/librustc/ty/context.rs index 1f95bbfa9ac..ce4439e7c54 100644 --- a/src/librustc/ty/context.rs +++ b/src/librustc/ty/context.rs @@ -2192,12 +2192,7 @@ pub fn keep_local<'tcx, T: ty::TypeFoldable<'tcx>>(x: &T) -> bool { } direct_interners!('tcx, - region: mk_region(|r| { - match r { - &ty::ReVar(_) | &ty::ReSkolemized(..) => true, - _ => false - } - }) -> RegionKind, + region: mk_region(|r: &RegionKind| r.keep_in_local_tcx()) -> RegionKind, const_: mk_const(|c: &Const| keep_local(&c.ty) || keep_local(&c.val)) -> Const<'tcx> ); diff --git a/src/librustc/ty/sty.rs b/src/librustc/ty/sty.rs index 8348df38fb9..0d655562214 100644 --- a/src/librustc/ty/sty.rs +++ b/src/librustc/ty/sty.rs @@ -1188,19 +1188,29 @@ impl RegionKind { } } + pub fn keep_in_local_tcx(&self) -> bool { + if let ty::ReVar(..) = self { + true + } else { + false + } + } + pub fn type_flags(&self) -> TypeFlags { let mut flags = TypeFlags::empty(); + if self.keep_in_local_tcx() { + flags = flags | TypeFlags::KEEP_IN_LOCAL_TCX; + } + match *self { ty::ReVar(..) => { flags = flags | TypeFlags::HAS_FREE_REGIONS; flags = flags | TypeFlags::HAS_RE_INFER; - flags = flags | TypeFlags::KEEP_IN_LOCAL_TCX; } ty::ReSkolemized(..) => { flags = flags | TypeFlags::HAS_FREE_REGIONS; flags = flags | TypeFlags::HAS_RE_SKOL; - flags = flags | TypeFlags::KEEP_IN_LOCAL_TCX; } ty::ReLateBound(..) => { } ty::ReEarlyBound(..) => { |
