@@ -10,40 +10,49 @@ pub fn anonymize_predicate<'tcx>(
1010 tcx : TyCtxt < ' tcx > ,
1111 pred : & ty:: Predicate < ' tcx > ,
1212) -> ty:: Predicate < ' tcx > {
13- match * pred {
13+ match pred. kind ( ) {
1414 ty:: PredicateKind :: Trait ( ref data, constness) => {
1515 ty:: PredicateKind :: Trait ( tcx. anonymize_late_bound_regions ( data) , constness)
16+ . to_predicate ( tcx)
1617 }
1718
1819 ty:: PredicateKind :: RegionOutlives ( ref data) => {
1920 ty:: PredicateKind :: RegionOutlives ( tcx. anonymize_late_bound_regions ( data) )
21+ . to_predicate ( tcx)
2022 }
2123
2224 ty:: PredicateKind :: TypeOutlives ( ref data) => {
2325 ty:: PredicateKind :: TypeOutlives ( tcx. anonymize_late_bound_regions ( data) )
26+ . to_predicate ( tcx)
2427 }
2528
2629 ty:: PredicateKind :: Projection ( ref data) => {
27- ty:: PredicateKind :: Projection ( tcx. anonymize_late_bound_regions ( data) )
30+ ty:: PredicateKind :: Projection ( tcx. anonymize_late_bound_regions ( data) ) . to_predicate ( tcx )
2831 }
2932
30- ty:: PredicateKind :: WellFormed ( data) => ty:: PredicateKind :: WellFormed ( data) ,
33+ ty:: PredicateKind :: WellFormed ( data) => {
34+ ty:: PredicateKind :: WellFormed ( data) . to_predicate ( tcx)
35+ }
3136
32- ty:: PredicateKind :: ObjectSafe ( data) => ty:: PredicateKind :: ObjectSafe ( data) ,
37+ ty:: PredicateKind :: ObjectSafe ( data) => {
38+ ty:: PredicateKind :: ObjectSafe ( data) . to_predicate ( tcx)
39+ }
3340
3441 ty:: PredicateKind :: ClosureKind ( closure_def_id, closure_substs, kind) => {
35- ty:: PredicateKind :: ClosureKind ( closure_def_id, closure_substs, kind)
42+ ty:: PredicateKind :: ClosureKind ( closure_def_id, closure_substs, kind) . to_predicate ( tcx )
3643 }
3744
3845 ty:: PredicateKind :: Subtype ( ref data) => {
39- ty:: PredicateKind :: Subtype ( tcx. anonymize_late_bound_regions ( data) )
46+ ty:: PredicateKind :: Subtype ( tcx. anonymize_late_bound_regions ( data) ) . to_predicate ( tcx )
4047 }
4148
4249 ty:: PredicateKind :: ConstEvaluatable ( def_id, substs) => {
43- ty:: PredicateKind :: ConstEvaluatable ( def_id, substs)
50+ ty:: PredicateKind :: ConstEvaluatable ( def_id, substs) . to_predicate ( tcx )
4451 }
4552
46- ty:: PredicateKind :: ConstEquate ( c1, c2) => ty:: Predicate :: ConstEquate ( c1, c2) ,
53+ ty:: PredicateKind :: ConstEquate ( c1, c2) => {
54+ ty:: PredicateKind :: ConstEquate ( c1, c2) . to_predicate ( tcx)
55+ }
4756 }
4857}
4958
@@ -145,7 +154,7 @@ impl Elaborator<'tcx> {
145154
146155 fn elaborate ( & mut self , obligation : & PredicateObligation < ' tcx > ) {
147156 let tcx = self . visited . tcx ;
148- match obligation. predicate {
157+ match obligation. predicate . kind ( ) {
149158 ty:: PredicateKind :: Trait ( ref data, _) => {
150159 // Get predicates declared on the trait.
151160 let predicates = tcx. super_predicates_of ( data. def_id ( ) ) ;
@@ -250,8 +259,9 @@ impl Elaborator<'tcx> {
250259 None
251260 }
252261 } )
253- . filter ( |p| visited. insert ( p) )
254- . map ( |p| predicate_obligation ( p, None ) ) ,
262+ . map ( |predicate_kind| predicate_kind. to_predicate ( tcx) )
263+ . filter ( |predicate| visited. insert ( predicate) )
264+ . map ( |predicate| predicate_obligation ( predicate, None ) ) ,
255265 ) ;
256266 }
257267 }
@@ -317,7 +327,7 @@ impl<'tcx, I: Iterator<Item = PredicateObligation<'tcx>>> Iterator for FilterToT
317327
318328 fn next ( & mut self ) -> Option < ty:: PolyTraitRef < ' tcx > > {
319329 while let Some ( obligation) = self . base_iterator . next ( ) {
320- if let ty:: PredicateKind :: Trait ( data, _) = obligation. predicate {
330+ if let ty:: PredicateKind :: Trait ( data, _) = obligation. predicate . kind ( ) {
321331 return Some ( data. to_poly_trait_ref ( ) ) ;
322332 }
323333 }
0 commit comments