@@ -479,6 +479,7 @@ pub(crate) struct TypeTest<'tcx> {
479
479
}
480
480
481
481
impl < ' t > TypeTest < ' t > {
482
+ #[ instrument( skip( sccs, scc_annotations, universal_regions) , ret) ]
482
483
fn bound_has_universe_violation (
483
484
bound : & VerifyBound < ' t > ,
484
485
lower_scc : ConstraintSccIndex ,
@@ -490,8 +491,13 @@ impl<'t> TypeTest<'t> {
490
491
match bound {
491
492
// An outlives constraint is equivalent to requiring the universe of that region.
492
493
VerifyBound :: OutlivedBy ( region) => {
493
- let bound = scc_annotations[ sccs. scc ( universal_regions. to_region_vid ( * region) ) ] ;
494
- !bound. universe_compatible_with ( lower)
494
+ let rvid = universal_regions. to_region_vid ( * region) ;
495
+ if rvid == universal_regions. fr_static {
496
+ false
497
+ } else {
498
+ let bound = scc_annotations[ sccs. scc ( rvid) ] ;
499
+ !bound. universe_compatible_with ( lower)
500
+ }
495
501
}
496
502
// This one is not obvious, but the argument goes something like this:
497
503
// equality is implemented in a later check as verifying that they
@@ -526,6 +532,7 @@ impl<'t> TypeTest<'t> {
526
532
}
527
533
}
528
534
535
+ #[ instrument( skip( sccs, tcx, universal_regions, scc_annotations) , ret) ]
529
536
pub ( crate ) fn rewrite_higher_kinded_constraints (
530
537
self ,
531
538
sccs : & Sccs < RegionVid , ConstraintSccIndex > ,
0 commit comments