@@ -951,24 +951,38 @@ impl<'a, 'tcx> ProbeContext<'a, 'tcx> {
951951        let  trait_ref = self . tcx . mk_trait_ref ( trait_def_id,  trait_substs) ; 
952952
953953        if  self . tcx . is_trait_alias ( trait_def_id)  { 
954-             // For trait aliases, assume all supertraits are relevant. 
955-             let  bounds = iter:: once ( ty:: Binder :: dummy ( trait_ref) ) ; 
956-             self . elaborate_bounds ( bounds,  |this,  new_trait_ref,  item| { 
957-                 let  new_trait_ref = this. erase_late_bound_regions ( new_trait_ref) ; 
954+             // For trait aliases, recursively assume all explicitly named traits are relevant 
955+             for  expansion in  traits:: expand_trait_aliases ( 
956+                 self . tcx , 
957+                 iter:: once ( ( ty:: Binder :: dummy ( trait_ref) ,  self . span ) ) , 
958+             )  { 
959+                 let  bound_trait_ref = expansion. trait_ref ( ) ; 
960+                 for  item in  self . impl_or_trait_item ( bound_trait_ref. def_id ( ) )  { 
961+                     if  !self . has_applicable_self ( & item)  { 
962+                         self . record_static_candidate ( CandidateSource :: Trait ( 
963+                             bound_trait_ref. def_id ( ) , 
964+                         ) ) ; 
965+                     }  else  { 
966+                         let  new_trait_ref = self . erase_late_bound_regions ( bound_trait_ref) ; 
958967
959-                 let  ( xform_self_ty,  xform_ret_ty)  =
960-                     this. xform_self_ty ( & item,  new_trait_ref. self_ty ( ) ,  new_trait_ref. substs ) ; 
961-                 this. push_candidate ( 
962-                     Candidate  { 
963-                         xform_self_ty, 
964-                         xform_ret_ty, 
965-                         item, 
966-                         import_ids :  import_ids. clone ( ) , 
967-                         kind :  TraitCandidate ( new_trait_ref) , 
968-                     } , 
969-                     false , 
970-                 ) ; 
971-             } ) ; 
968+                         let  ( xform_self_ty,  xform_ret_ty)  = self . xform_self_ty ( 
969+                             & item, 
970+                             new_trait_ref. self_ty ( ) , 
971+                             new_trait_ref. substs , 
972+                         ) ; 
973+                         self . push_candidate ( 
974+                             Candidate  { 
975+                                 xform_self_ty, 
976+                                 xform_ret_ty, 
977+                                 item, 
978+                                 import_ids :  import_ids. clone ( ) , 
979+                                 kind :  TraitCandidate ( new_trait_ref) , 
980+                             } , 
981+                             false , 
982+                         ) ; 
983+                     } 
984+                 } 
985+             } 
972986        }  else  { 
973987            debug_assert ! ( self . tcx. is_trait( trait_def_id) ) ; 
974988            if  self . tcx . trait_is_auto ( trait_def_id)  { 
0 commit comments