@@ -13,7 +13,6 @@ use std::iter;
13
13
use rustc_index:: { Idx , IndexVec } ;
14
14
use rustc_middle:: arena:: ArenaAllocatable ;
15
15
use rustc_middle:: bug;
16
- use rustc_middle:: mir:: ConstraintCategory ;
17
16
use rustc_middle:: ty:: { self , BoundVar , GenericArg , GenericArgKind , Ty , TyCtxt , TypeFoldable } ;
18
17
use tracing:: { debug, instrument} ;
19
18
@@ -23,7 +22,9 @@ use crate::infer::canonical::{
23
22
QueryRegionConstraints , QueryResponse ,
24
23
} ;
25
24
use crate :: infer:: region_constraints:: { Constraint , RegionConstraintData } ;
26
- use crate :: infer:: { DefineOpaqueTypes , InferCtxt , InferOk , InferResult , SubregionOrigin } ;
25
+ use crate :: infer:: {
26
+ DefineOpaqueTypes , InferCtxt , InferOk , InferResult , SubregionOrigin , TypeOutlivesConstraint ,
27
+ } ;
27
28
use crate :: traits:: query:: NoSolution ;
28
29
use crate :: traits:: { ObligationCause , PredicateObligations , ScrubbedTraitError , TraitEngine } ;
29
30
@@ -117,13 +118,7 @@ impl<'tcx> InferCtxt<'tcx> {
117
118
let region_obligations = self . take_registered_region_obligations ( ) ;
118
119
debug ! ( ?region_obligations) ;
119
120
let region_constraints = self . with_region_constraints ( |region_constraints| {
120
- make_query_region_constraints (
121
- tcx,
122
- region_obligations
123
- . iter ( )
124
- . map ( |r_o| ( r_o. sup_type , r_o. sub_region , r_o. origin . to_constraint_category ( ) ) ) ,
125
- region_constraints,
126
- )
121
+ make_query_region_constraints ( tcx, region_obligations, region_constraints)
127
122
} ) ;
128
123
debug ! ( ?region_constraints) ;
129
124
@@ -570,7 +565,7 @@ impl<'tcx> InferCtxt<'tcx> {
570
565
/// creates query region constraints.
571
566
pub fn make_query_region_constraints < ' tcx > (
572
567
tcx : TyCtxt < ' tcx > ,
573
- outlives_obligations : impl Iterator < Item = ( Ty < ' tcx > , ty :: Region < ' tcx > , ConstraintCategory < ' tcx > ) > ,
568
+ outlives_obligations : Vec < TypeOutlivesConstraint < ' tcx > > ,
574
569
region_constraints : & RegionConstraintData < ' tcx > ,
575
570
) -> QueryRegionConstraints < ' tcx > {
576
571
let RegionConstraintData { constraints, verifys } = region_constraints;
@@ -599,8 +594,11 @@ pub fn make_query_region_constraints<'tcx>(
599
594
} ;
600
595
( constraint, origin. to_constraint_category ( ) )
601
596
} )
602
- . chain ( outlives_obligations. map ( |( ty, r, constraint_category) | {
603
- ( ty:: OutlivesPredicate ( ty. into ( ) , r) , constraint_category)
597
+ . chain ( outlives_obligations. into_iter ( ) . map ( |obl| {
598
+ (
599
+ ty:: OutlivesPredicate ( obl. sup_type . into ( ) , obl. sub_region ) ,
600
+ obl. origin . to_constraint_category ( ) ,
601
+ )
604
602
} ) )
605
603
. collect ( ) ;
606
604
0 commit comments