@@ -136,21 +136,14 @@ impl<'tcx> OutlivesEnvironmentBuilder<'tcx> {
136
136
self . region_bound_pairs
137
137
. insert ( ty:: OutlivesPredicate ( GenericKind :: Alias ( alias_b) , r_a) ) ;
138
138
}
139
- OutlivesBound :: RegionSubRegion ( r_a, r_b) => {
140
- // In principle, we could record (and take
141
- // advantage of) every relationship here, but
142
- // we are also free not to -- it simply means
143
- // strictly less that we can successfully type
144
- // check. Right now we only look for things
145
- // relationships between free regions. (It may
146
- // also be that we should revise our inference
147
- // system to be more general and to make use
148
- // of *every* relationship that arises here,
149
- // but presently we do not.)
150
- if r_a. is_free_or_static ( ) && r_b. is_free ( ) {
151
- self . region_relation . add ( r_a, r_b)
152
- }
153
- }
139
+ OutlivesBound :: RegionSubRegion ( r_a, r_b) => match ( * r_a, * r_b) {
140
+ (
141
+ ty:: ReStatic | ty:: ReEarlyBound ( _) | ty:: ReFree ( _) ,
142
+ ty:: ReStatic | ty:: ReEarlyBound ( _) | ty:: ReFree ( _) ,
143
+ ) => self . region_relation . add ( r_a, r_b) ,
144
+ ( ty:: ReError ( _) , _) | ( _, ty:: ReError ( _) ) => { }
145
+ _ => bug ! ( "add_outlives_bounds: unexpected regions" ) ,
146
+ } ,
154
147
}
155
148
}
156
149
}
0 commit comments