@@ -4,7 +4,7 @@ use rustc_hir::def_id::DefId;
44use rustc_hir:: { Expr , ExprKind , StmtKind } ;
55use rustc_lint:: { LateContext , LateLintPass } ;
66use rustc_middle:: ty;
7- use rustc_middle:: ty:: { GenericPredicates , PredicateKind , ProjectionPredicate , TraitPredicate } ;
7+ use rustc_middle:: ty:: { GenericPredicates , PredicateAtom , ProjectionPredicate , TraitPredicate } ;
88use rustc_session:: { declare_lint_pass, declare_tool_lint} ;
99use rustc_span:: { BytePos , Span } ;
1010
@@ -42,8 +42,8 @@ fn get_trait_predicates_for_trait_id<'tcx>(
4242 let mut preds = Vec :: new ( ) ;
4343 for ( pred, _) in generics. predicates {
4444 if_chain ! {
45- if let PredicateKind :: Trait ( poly_trait_pred, _) = pred. kind ( ) ;
46- let trait_pred = cx. tcx. erase_late_bound_regions( & poly_trait_pred) ;
45+ if let PredicateAtom :: Trait ( poly_trait_pred, _) = pred. skip_binders ( ) ;
46+ let trait_pred = cx. tcx. erase_late_bound_regions( & ty :: Binder :: bind ( poly_trait_pred) ) ;
4747 if let Some ( trait_def_id) = trait_id;
4848 if trait_def_id == trait_pred. trait_ref. def_id;
4949 then {
@@ -60,8 +60,8 @@ fn get_projection_pred<'tcx>(
6060 pred : TraitPredicate < ' tcx > ,
6161) -> Option < ProjectionPredicate < ' tcx > > {
6262 generics. predicates . iter ( ) . find_map ( |( proj_pred, _) | {
63- if let PredicateKind :: Projection ( proj_pred) = proj_pred. kind ( ) {
64- let projection_pred = cx. tcx . erase_late_bound_regions ( proj_pred) ;
63+ if let ty :: PredicateAtom :: Projection ( proj_pred) = proj_pred. skip_binders ( ) {
64+ let projection_pred = cx. tcx . erase_late_bound_regions ( & ty :: Binder :: bind ( proj_pred) ) ;
6565 if projection_pred. projection_ty . substs == pred. trait_ref . substs {
6666 return Some ( projection_pred) ;
6767 }
0 commit comments