@@ -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