@@ -49,10 +49,9 @@ pub trait AstConv<'tcx> {
4949
5050 fn default_constness_for_trait_bounds ( & self ) -> Constness ;
5151
52- /// Returns predicates in scope of the form `X: Foo<T>`, where `X`
53- /// is a type parameter `X` with the given id `def_id` and T
54- /// matches `assoc_name`. This is a subset of the full set of
55- /// predicates.
52+ /// Returns predicates in scope of the form `X: Foo`, where `X` is
53+ /// a type parameter `X` with the given id `def_id`. This is a
54+ /// subset of the full set of predicates.
5655 ///
5756 /// This is used for one specific purpose: resolving "short-hand"
5857 /// associated type references like `T::Item`. In principle, we
@@ -61,12 +60,7 @@ pub trait AstConv<'tcx> {
6160 /// but this can lead to cycle errors. The problem is that we have
6261 /// to do this resolution *in order to create the predicates in
6362 /// the first place*. Hence, we have this "special pass".
64- fn get_type_parameter_bounds (
65- & self ,
66- span : Span ,
67- def_id : DefId ,
68- assoc_name : Ident ,
69- ) -> ty:: GenericPredicates < ' tcx > ;
63+ fn get_type_parameter_bounds ( & self , span : Span , def_id : DefId ) -> ty:: GenericPredicates < ' tcx > ;
7064
7165 /// Returns the lifetime to use when a lifetime is omitted (and not elided).
7266 fn re_infer ( & self , param : Option < & ty:: GenericParamDef > , span : Span )
@@ -768,7 +762,7 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o {
768762 }
769763
770764 // Returns `true` if a bounds list includes `?Sized`.
771- pub fn is_unsized ( & self , ast_bounds : & [ & hir:: GenericBound < ' _ > ] , span : Span ) -> bool {
765+ pub fn is_unsized ( & self , ast_bounds : & [ hir:: GenericBound < ' _ > ] , span : Span ) -> bool {
772766 let tcx = self . tcx ( ) ;
773767
774768 // Try to find an unbound in bounds.
@@ -826,7 +820,7 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o {
826820 fn add_bounds (
827821 & self ,
828822 param_ty : Ty < ' tcx > ,
829- ast_bounds : & [ & hir:: GenericBound < ' _ > ] ,
823+ ast_bounds : & [ hir:: GenericBound < ' _ > ] ,
830824 bounds : & mut Bounds < ' tcx > ,
831825 ) {
832826 let constness = self . default_constness_for_trait_bounds ( ) ;
@@ -841,7 +835,7 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o {
841835 hir:: GenericBound :: Trait ( _, hir:: TraitBoundModifier :: Maybe ) => { }
842836 hir:: GenericBound :: LangItemTrait ( lang_item, span, hir_id, args) => self
843837 . instantiate_lang_item_trait_ref (
844- * lang_item, * span, * hir_id, args, param_ty, bounds,
838+ lang_item, span, hir_id, args, param_ty, bounds,
845839 ) ,
846840 hir:: GenericBound :: Outlives ( ref l) => {
847841 bounds. region_bounds . push ( ( self . ast_region_to_region ( l, None ) , l. span ) )
@@ -872,42 +866,6 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o {
872866 ast_bounds : & [ hir:: GenericBound < ' _ > ] ,
873867 sized_by_default : SizedByDefault ,
874868 span : Span ,
875- ) -> Bounds < ' tcx > {
876- let ast_bounds: Vec < _ > = ast_bounds. iter ( ) . collect ( ) ;
877- self . compute_bounds_inner ( param_ty, & ast_bounds, sized_by_default, span)
878- }
879-
880- /// Convert the bounds in `ast_bounds` that refer to traits which define an associated type
881- /// named `assoc_name` into ty::Bounds. Ignore the rest.
882- pub fn compute_bounds_that_match_assoc_type (
883- & self ,
884- param_ty : Ty < ' tcx > ,
885- ast_bounds : & [ hir:: GenericBound < ' _ > ] ,
886- sized_by_default : SizedByDefault ,
887- span : Span ,
888- assoc_name : Ident ,
889- ) -> Bounds < ' tcx > {
890- let mut result = Vec :: new ( ) ;
891-
892- for ast_bound in ast_bounds {
893- if let Some ( trait_ref) = ast_bound. trait_ref ( ) {
894- if let Some ( trait_did) = trait_ref. trait_def_id ( ) {
895- if self . tcx ( ) . trait_may_define_assoc_type ( trait_did, assoc_name) {
896- result. push ( ast_bound) ;
897- }
898- }
899- }
900- }
901-
902- self . compute_bounds_inner ( param_ty, & result, sized_by_default, span)
903- }
904-
905- fn compute_bounds_inner (
906- & self ,
907- param_ty : Ty < ' tcx > ,
908- ast_bounds : & [ & hir:: GenericBound < ' _ > ] ,
909- sized_by_default : SizedByDefault ,
910- span : Span ,
911869 ) -> Bounds < ' tcx > {
912870 let mut bounds = Bounds :: default ( ) ;
913871
@@ -1077,8 +1035,7 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o {
10771035 // Calling `skip_binder` is okay, because `add_bounds` expects the `param_ty`
10781036 // parameter to have a skipped binder.
10791037 let param_ty = tcx. mk_projection ( assoc_ty. def_id , candidate. skip_binder ( ) . substs ) ;
1080- let ast_bounds: Vec < _ > = ast_bounds. iter ( ) . collect ( ) ;
1081- self . add_bounds ( param_ty, & ast_bounds, bounds) ;
1038+ self . add_bounds ( param_ty, ast_bounds, bounds) ;
10821039 }
10831040 }
10841041 Ok ( ( ) )
@@ -1395,24 +1352,21 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o {
13951352 ty_param_def_id, assoc_name, span,
13961353 ) ;
13971354
1398- let predicates = & self
1399- . get_type_parameter_bounds ( span, ty_param_def_id. to_def_id ( ) , assoc_name)
1400- . predicates ;
1355+ let predicates =
1356+ & self . get_type_parameter_bounds ( span, ty_param_def_id. to_def_id ( ) ) . predicates ;
14011357
14021358 debug ! ( "find_bound_for_assoc_item: predicates={:#?}" , predicates) ;
14031359
14041360 let param_hir_id = tcx. hir ( ) . local_def_id_to_hir_id ( ty_param_def_id) ;
14051361 let param_name = tcx. hir ( ) . ty_param_name ( param_hir_id) ;
14061362 self . one_bound_for_assoc_type (
14071363 || {
1408- traits:: transitive_bounds_that_define_assoc_type (
1364+ traits:: transitive_bounds (
14091365 tcx,
14101366 predicates. iter ( ) . filter_map ( |( p, _) | {
14111367 p. to_opt_poly_trait_ref ( ) . map ( |trait_ref| trait_ref. value )
14121368 } ) ,
1413- assoc_name,
14141369 )
1415- . into_iter ( )
14161370 } ,
14171371 || param_name. to_string ( ) ,
14181372 assoc_name,
0 commit comments