]> git.lizzy.rs Git - rust.git/commitdiff
put ReSkolemized into the global tcx
authorNiko Matsakis <niko@alum.mit.edu>
Wed, 4 Apr 2018 22:24:17 +0000 (18:24 -0400)
committerNiko Matsakis <niko@alum.mit.edu>
Mon, 30 Apr 2018 18:06:46 +0000 (14:06 -0400)
src/librustc/ty/context.rs
src/librustc/ty/sty.rs

index 1f95bbfa9ace73fbd3c62c1c7d58673277038790..ce4439e7c54648fa2735b8d4e804aa3665913bfa 100644 (file)
@@ -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>
 );
 
index 8348df38fb91314b86719d93ca06181faca9b2aa..0d6555622149bea7193426b59fe4ad8d6e140bf9 100644 (file)
@@ -1188,19 +1188,29 @@ pub fn from_depth(&self, depth: u32) -> 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(..) => {