@@ -91,6 +91,9 @@ pub trait TypeFoldable<'tcx>: fmt::Debug + Clone {
91
91
fn needs_subst ( & self ) -> bool {
92
92
self . has_type_flags ( TypeFlags :: NEEDS_SUBST )
93
93
}
94
+ fn has_re_skol ( & self ) -> bool {
95
+ self . has_type_flags ( TypeFlags :: HAS_RE_SKOL )
96
+ }
94
97
fn has_closure_types ( & self ) -> bool {
95
98
self . has_type_flags ( TypeFlags :: HAS_TY_CLOSURE )
96
99
}
@@ -632,26 +635,15 @@ struct HasTypeFlagsVisitor {
632
635
633
636
impl < ' tcx > TypeVisitor < ' tcx > for HasTypeFlagsVisitor {
634
637
fn visit_ty ( & mut self , t : Ty ) -> bool {
635
- t. flags . get ( ) . intersects ( self . flags )
638
+ let flags = t. flags . get ( ) ;
639
+ debug ! ( "HasTypeFlagsVisitor: t={:?} t.flags={:?} self.flags={:?}" , t, flags, self . flags) ;
640
+ flags. intersects ( self . flags )
636
641
}
637
642
638
643
fn visit_region ( & mut self , r : & ' tcx ty:: Region ) -> bool {
639
- if self . flags . intersects ( ty:: TypeFlags :: HAS_LOCAL_NAMES ) {
640
- // does this represent a region that cannot be named
641
- // in a global way? used in fulfillment caching.
642
- match * r {
643
- ty:: ReStatic | ty:: ReEmpty | ty:: ReErased => { }
644
- _ => return true ,
645
- }
646
- }
647
- if self . flags . intersects ( ty:: TypeFlags :: HAS_RE_INFER |
648
- ty:: TypeFlags :: KEEP_IN_LOCAL_TCX ) {
649
- match * r {
650
- ty:: ReVar ( _) | ty:: ReSkolemized ( ..) => { return true }
651
- _ => { }
652
- }
653
- }
654
- false
644
+ let flags = r. type_flags ( ) ;
645
+ debug ! ( "HasTypeFlagsVisitor: r={:?} r.flags={:?} self.flags={:?}" , r, flags, self . flags) ;
646
+ flags. intersects ( self . flags )
655
647
}
656
648
}
657
649
0 commit comments