@@ -368,14 +368,14 @@ impl<'a, 'tcx> TranslationContext<'a, 'tcx> {
368368            Binder ,  OutlivesPredicate ,  PredicateKind ,  ProjectionPredicate ,  ProjectionTy , 
369369            SubtypePredicate ,  ToPredicate ,  TraitPredicate ,  WithOptConstParam , 
370370        } ; 
371+         use  rustc_middle:: ty:: PredicateAtom ; 
371372
372-         Some ( match  predicate. kind ( )  { 
373-             PredicateKind :: Trait ( trait_predicate,  constness)  => PredicateKind :: Trait ( 
374-                 Binder :: bind ( 
373+         Some ( match  predicate. skip_binders ( )  { 
374+             PredicateAtom :: Trait ( trait_predicate,  constness)  => PredicateAtom :: Trait ( 
375375                    if  let  Some ( ( target_def_id,  target_substs) )  = self . translate_orig_substs ( 
376376                        index_map, 
377-                         trait_predicate. skip_binder ( ) . trait_ref . def_id , 
378-                         trait_predicate. skip_binder ( ) . trait_ref . substs , 
377+                         trait_predicate. trait_ref . def_id , 
378+                         trait_predicate. trait_ref . substs , 
379379                    )  { 
380380                        TraitPredicate  { 
381381                            trait_ref :  TraitRef  { 
@@ -386,84 +386,86 @@ impl<'a, 'tcx> TranslationContext<'a, 'tcx> {
386386                    }  else  { 
387387                        return  None ; 
388388                    } , 
389-                 ) , 
390-                 * constness, 
389+                 constness, 
391390            ) 
392391            . to_predicate ( self . tcx ) , 
393-             PredicateKind :: RegionOutlives ( region_outlives_predicate)  => { 
394-                 PredicateKind :: RegionOutlives ( region_outlives_predicate. map_bound ( |r_pred| { 
392+             PredicateAtom :: RegionOutlives ( region_outlives_predicate)  => { 
393+                 PredicateAtom :: RegionOutlives ( { 
394+                     let  r_pred = region_outlives_predicate; 
395395                    let  l = self . translate_region ( r_pred. 0 ) ; 
396396                    let  r = self . translate_region ( r_pred. 1 ) ; 
397397                    OutlivesPredicate ( l,  r) 
398-                 } ) ) 
398+                 } ) 
399399                . to_predicate ( self . tcx ) 
400400            } 
401-             PredicateKind :: TypeOutlives ( type_outlives_predicate)  => { 
402-                 PredicateKind :: TypeOutlives ( type_outlives_predicate. map_bound ( |r_pred| { 
401+             PredicateAtom :: TypeOutlives ( type_outlives_predicate)  => { 
402+                 PredicateAtom :: TypeOutlives ( { 
403+                     let  r_pred = type_outlives_predicate; 
403404                    let  l = self . translate ( index_map,  & r_pred. 0 ) ; 
404405                    let  r = self . translate_region ( r_pred. 1 ) ; 
405406                    OutlivesPredicate ( l,  r) 
406-                 } ) ) 
407+                 } ) 
407408                . to_predicate ( self . tcx ) 
408409            } 
409-             PredicateKind :: Projection ( projection_predicate)  => { 
410-                 PredicateKind :: Projection ( Binder :: bind ( 
410+             PredicateAtom :: Projection ( projection_predicate)  => { 
411+                 PredicateAtom :: Projection ( 
411412                    if  let  Some ( ( target_def_id,  target_substs) )  = self . translate_orig_substs ( 
412413                        index_map, 
413-                         projection_predicate. skip_binder ( ) . projection_ty . item_def_id , 
414-                         projection_predicate. skip_binder ( ) . projection_ty . substs , 
414+                         projection_predicate. projection_ty . item_def_id , 
415+                         projection_predicate. projection_ty . substs , 
415416                    )  { 
416417                        ProjectionPredicate  { 
417418                            projection_ty :  ProjectionTy  { 
418419                                substs :  target_substs, 
419420                                item_def_id :  target_def_id, 
420421                            } , 
421-                             ty :  self . translate ( index_map,  & projection_predicate. skip_binder ( ) . ty ) , 
422+                             ty :  self . translate ( index_map,  & projection_predicate. ty ) , 
422423                        } 
423424                    }  else  { 
424425                        return  None ; 
425426                    } , 
426-                 ) ) 
427+                 ) 
427428                . to_predicate ( self . tcx ) 
428429            } 
429-             PredicateKind :: WellFormed ( ty)  => { 
430-                 PredicateKind :: WellFormed ( self . translate ( index_map,  & ty) ) . to_predicate ( self . tcx ) 
430+             PredicateAtom :: WellFormed ( ty)  => { 
431+                 PredicateAtom :: WellFormed ( self . translate ( index_map,  & ty) ) . to_predicate ( self . tcx ) 
431432            } 
432-             PredicateKind :: ObjectSafe ( did)  => { 
433-                 PredicateKind :: ObjectSafe ( self . translate_orig ( * did) ) . to_predicate ( self . tcx ) 
433+             PredicateAtom :: ObjectSafe ( did)  => { 
434+                 PredicateAtom :: ObjectSafe ( self . translate_orig ( did) ) . to_predicate ( self . tcx ) 
434435            } 
435-             PredicateKind :: ClosureKind ( did,  substs,  kind)  => PredicateKind :: ClosureKind ( 
436-                 self . translate_orig ( * did) , 
436+             PredicateAtom :: ClosureKind ( did,  substs,  kind)  => PredicateAtom :: ClosureKind ( 
437+                 self . translate_orig ( did) , 
437438                self . translate ( index_map,  & substs) , 
438-                 * kind, 
439+                 kind, 
439440            ) 
440441            . to_predicate ( self . tcx ) , 
441-             PredicateKind :: Subtype ( subtype_predicate)  => { 
442-                 PredicateKind :: Subtype ( subtype_predicate. map_bound ( |s_pred| { 
442+             PredicateAtom :: Subtype ( subtype_predicate)  => { 
443+                 PredicateAtom :: Subtype ( { 
444+                     let  s_pred = subtype_predicate; 
443445                    let  l = self . translate ( index_map,  & s_pred. a ) ; 
444446                    let  r = self . translate ( index_map,  & s_pred. b ) ; 
445447                    SubtypePredicate  { 
446448                        a_is_expected :  s_pred. a_is_expected , 
447449                        a :  l, 
448450                        b :  r, 
449451                    } 
450-                 } ) ) 
452+                 } ) 
451453                . to_predicate ( self . tcx ) 
452454            } 
453-             PredicateKind :: ConstEvaluatable ( param,  orig_substs)  => { 
455+             PredicateAtom :: ConstEvaluatable ( param,  orig_substs)  => { 
454456                if  let  Some ( ( target_def_id,  target_substs) )  =
455457                    self . translate_orig_substs ( index_map,  param. did ,  orig_substs) 
456458                { 
457459                    // TODO: We could probably use translated version for 
458460                    // `WithOptConstParam::const_param_did` 
459461                    let  const_param = WithOptConstParam :: unknown ( target_def_id) ; 
460-                     PredicateKind :: ConstEvaluatable ( const_param,  target_substs) 
462+                     PredicateAtom :: ConstEvaluatable ( const_param,  target_substs) 
461463                        . to_predicate ( self . tcx ) 
462464                }  else  { 
463465                    return  None ; 
464466                } 
465467            } 
466-             PredicateKind :: ConstEquate ( c1,  c2)  => PredicateKind :: ConstEquate ( 
468+             PredicateAtom :: ConstEquate ( c1,  c2)  => PredicateAtom :: ConstEquate ( 
467469                self . translate ( index_map,  & c1) , 
468470                self . translate ( index_map,  & c2) , 
469471            ) 
0 commit comments