@@ -9,13 +9,13 @@ use rustc_span::{ErrorGuaranteed, Span};
99use rustc_trait_selection:: traits;
1010use smallvec:: SmallVec ;
1111
12- use crate :: astconv:: { AstConv , OnlySelfBounds , PredicateFilter } ;
12+ use crate :: astconv:: { HirTyLowerer , OnlySelfBounds , PredicateFilter } ;
1313use crate :: bounds:: Bounds ;
1414use crate :: errors;
1515
16- impl < ' tcx > dyn AstConv < ' tcx > + ' _ {
16+ impl < ' tcx > dyn HirTyLowerer < ' tcx > + ' _ {
1717 /// Sets `implicitly_sized` to true on `Bounds` if necessary
18- pub ( crate ) fn add_implicitly_sized (
18+ pub ( crate ) fn add_implicit_sized_bound (
1919 & self ,
2020 bounds : & mut Bounds < ' tcx > ,
2121 self_ty : Ty < ' tcx > ,
@@ -114,7 +114,7 @@ impl<'tcx> dyn AstConv<'tcx> + '_ {
114114 /// `param_ty` and `ast_bounds`. See `instantiate_poly_trait_ref`
115115 /// for more details.
116116 #[ instrument( level = "debug" , skip( self , ast_bounds, bounds) ) ]
117- pub ( crate ) fn add_bounds < ' hir , I : Iterator < Item = & ' hir hir:: GenericBound < ' tcx > > > (
117+ pub ( crate ) fn lower_bounds < ' hir , I : Iterator < Item = & ' hir hir:: GenericBound < ' tcx > > > (
118118 & self ,
119119 param_ty : Ty < ' tcx > ,
120120 ast_bounds : I ,
@@ -142,7 +142,7 @@ impl<'tcx> dyn AstConv<'tcx> + '_ {
142142 }
143143 hir:: TraitBoundModifier :: Maybe => continue ,
144144 } ;
145- let _ = self . instantiate_poly_trait_ref (
145+ let _ = self . lower_poly_trait_ref (
146146 & poly_trait_ref. trait_ref ,
147147 poly_trait_ref. span ,
148148 constness,
@@ -154,7 +154,7 @@ impl<'tcx> dyn AstConv<'tcx> + '_ {
154154 ) ;
155155 }
156156 hir:: GenericBound :: Outlives ( lifetime) => {
157- let region = self . ast_region_to_region ( lifetime, None ) ;
157+ let region = self . lower_region ( lifetime, None ) ;
158158 bounds. push_region_bound (
159159 self . tcx ( ) ,
160160 ty:: Binder :: bind_with_vars (
@@ -199,7 +199,7 @@ impl<'tcx> dyn AstConv<'tcx> + '_ {
199199 PredicateFilter :: SelfOnly | PredicateFilter :: SelfThatDefines ( _) => OnlySelfBounds ( true ) ,
200200 } ;
201201
202- self . add_bounds (
202+ self . lower_bounds (
203203 param_ty,
204204 ast_bounds. iter ( ) . filter ( |bound| match filter {
205205 PredicateFilter :: All
@@ -232,7 +232,7 @@ impl<'tcx> dyn AstConv<'tcx> + '_ {
232232 /// `trait_ref` here will be `for<'a> T: Iterator`. The `binding` data however is from *inside*
233233 /// the binder (e.g., `&'a u32`) and hence may reference bound regions.
234234 #[ instrument( level = "debug" , skip( self , bounds, speculative, dup_bindings, path_span) ) ]
235- pub ( super ) fn add_predicates_for_ast_type_binding (
235+ pub ( super ) fn lower_assoc_item_binding (
236236 & self ,
237237 hir_ref_id : hir:: HirId ,
238238 trait_ref : ty:: PolyTraitRef < ' tcx > ,
@@ -271,26 +271,23 @@ impl<'tcx> dyn AstConv<'tcx> + '_ {
271271 ty:: AssocKind :: Type
272272 } ;
273273
274- let candidate = if self . trait_defines_associated_item_named (
275- trait_ref. def_id ( ) ,
276- assoc_kind,
277- binding. ident ,
278- ) {
279- // Simple case: The assoc item is defined in the current trait.
280- trait_ref
281- } else {
282- // Otherwise, we have to walk through the supertraits to find
283- // one that does define it.
284- self . one_bound_for_assoc_item (
285- || traits:: supertraits ( tcx, trait_ref) ,
286- trait_ref. skip_binder ( ) . print_only_trait_name ( ) ,
287- None ,
288- assoc_kind,
289- binding. ident ,
290- path_span,
291- Some ( binding) ,
292- ) ?
293- } ;
274+ let candidate =
275+ if self . trait_defines_assoc_item_named ( trait_ref. def_id ( ) , assoc_kind, binding. ident ) {
276+ // Simple case: The assoc item is defined in the current trait.
277+ trait_ref
278+ } else {
279+ // Otherwise, we have to walk through the supertraits to find
280+ // one that does define it.
281+ self . find_single_bound_for_assoc_item (
282+ || traits:: supertraits ( tcx, trait_ref) ,
283+ trait_ref. skip_binder ( ) . print_only_trait_name ( ) ,
284+ None ,
285+ assoc_kind,
286+ binding. ident ,
287+ path_span,
288+ Some ( binding) ,
289+ ) ?
290+ } ;
294291
295292 let ( assoc_ident, def_scope) =
296293 tcx. adjust_ident_and_get_scope ( binding. ident , candidate. def_id ( ) , hir_ref_id) ;
@@ -418,7 +415,7 @@ impl<'tcx> dyn AstConv<'tcx> + '_ {
418415 infer_args : false ,
419416 } ;
420417
421- let alias_args = self . create_args_for_associated_item (
418+ let alias_args = self . lower_args_for_assoc_item (
422419 path_span,
423420 assoc_item. def_id ,
424421 & item_segment,
@@ -441,7 +438,7 @@ impl<'tcx> dyn AstConv<'tcx> + '_ {
441438 }
442439 hir:: TypeBindingKind :: Equality { term } => {
443440 let term = match term {
444- hir:: Term :: Ty ( ty) => self . ast_ty_to_ty ( ty) . into ( ) ,
441+ hir:: Term :: Ty ( ty) => self . lower_ty ( ty) . into ( ) ,
445442 hir:: Term :: Const ( ct) => ty:: Const :: from_anon_const ( tcx, ct. def_id ) . into ( ) ,
446443 } ;
447444
@@ -506,7 +503,7 @@ impl<'tcx> dyn AstConv<'tcx> + '_ {
506503 // for the `Self` type.
507504 if !only_self_bounds. 0 {
508505 let param_ty = Ty :: new_alias ( tcx, ty:: Projection , projection_ty. skip_binder ( ) ) ;
509- self . add_bounds (
506+ self . lower_bounds (
510507 param_ty,
511508 ast_bounds. iter ( ) ,
512509 bounds,
0 commit comments