@@ -839,31 +839,23 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
839
839
/// name resolver owing to lifetime elision; this also populates the resolver's node-id->def-id
840
840
/// map, so that later calls to `opt_node_id_to_def_id` that refer to these extra lifetime
841
841
/// parameters will be successful.
842
- #[ instrument( level = "debug" , skip( self , in_binder ) ) ]
842
+ #[ instrument( level = "debug" , skip( self ) ) ]
843
843
#[ inline]
844
- fn lower_lifetime_binder < R > (
844
+ fn lower_lifetime_binder (
845
845
& mut self ,
846
846
binder : NodeId ,
847
847
generic_params : & [ GenericParam ] ,
848
- in_binder : impl FnOnce ( & mut Self , & ' hir [ hir:: GenericParam < ' hir > ] ) -> R ,
849
- ) -> R {
848
+ ) -> & ' hir [ hir:: GenericParam < ' hir > ] {
849
+ let mut generic_params : Vec < _ > = self . lower_generic_params_mut ( generic_params ) . collect ( ) ;
850
850
let extra_lifetimes = self . resolver . take_extra_lifetime_params ( binder) ;
851
851
debug ! ( ?extra_lifetimes) ;
852
- let extra_lifetimes: Vec < _ > = extra_lifetimes
853
- . into_iter ( )
854
- . filter_map ( |( ident, node_id, res) | {
855
- self . lifetime_res_to_generic_param ( ident, node_id, res)
856
- } )
857
- . collect ( ) ;
858
-
859
- let generic_params: Vec < _ > = self
860
- . lower_generic_params_mut ( generic_params)
861
- . chain ( extra_lifetimes. into_iter ( ) )
862
- . collect ( ) ;
852
+ generic_params. extend ( extra_lifetimes. into_iter ( ) . filter_map ( |( ident, node_id, res) | {
853
+ self . lifetime_res_to_generic_param ( ident, node_id, res)
854
+ } ) ) ;
863
855
let generic_params = self . arena . alloc_from_iter ( generic_params) ;
864
856
debug ! ( ?generic_params) ;
865
857
866
- in_binder ( self , generic_params)
858
+ generic_params
867
859
}
868
860
869
861
fn with_dyn_type_scope < T > ( & mut self , in_scope : bool , f : impl FnOnce ( & mut Self ) -> T ) -> T {
@@ -1268,15 +1260,14 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
1268
1260
hir:: TyKind :: Rptr ( lifetime, self . lower_mt ( mt, itctx) )
1269
1261
}
1270
1262
TyKind :: BareFn ( ref f) => {
1271
- self . lower_lifetime_binder ( t. id , & f. generic_params , |lctx, generic_params| {
1272
- hir:: TyKind :: BareFn ( lctx. arena . alloc ( hir:: BareFnTy {
1273
- generic_params,
1274
- unsafety : lctx. lower_unsafety ( f. unsafety ) ,
1275
- abi : lctx. lower_extern ( f. ext ) ,
1276
- decl : lctx. lower_fn_decl ( & f. decl , None , t. span , FnDeclKind :: Pointer , None ) ,
1277
- param_names : lctx. lower_fn_params_to_names ( & f. decl ) ,
1278
- } ) )
1279
- } )
1263
+ let generic_params = self . lower_lifetime_binder ( t. id , & f. generic_params ) ;
1264
+ hir:: TyKind :: BareFn ( self . arena . alloc ( hir:: BareFnTy {
1265
+ generic_params,
1266
+ unsafety : self . lower_unsafety ( f. unsafety ) ,
1267
+ abi : self . lower_extern ( f. ext ) ,
1268
+ decl : self . lower_fn_decl ( & f. decl , None , t. span , FnDeclKind :: Pointer , None ) ,
1269
+ param_names : self . lower_fn_params_to_names ( & f. decl ) ,
1270
+ } ) )
1280
1271
}
1281
1272
TyKind :: Never => hir:: TyKind :: Never ,
1282
1273
TyKind :: Tup ( ref tys) => hir:: TyKind :: Tup (
@@ -2246,14 +2237,10 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
2246
2237
p : & PolyTraitRef ,
2247
2238
itctx : & mut ImplTraitContext ,
2248
2239
) -> hir:: PolyTraitRef < ' hir > {
2249
- self . lower_lifetime_binder (
2250
- p. trait_ref . ref_id ,
2251
- & p. bound_generic_params ,
2252
- |lctx, bound_generic_params| {
2253
- let trait_ref = lctx. lower_trait_ref ( & p. trait_ref , itctx) ;
2254
- hir:: PolyTraitRef { bound_generic_params, trait_ref, span : lctx. lower_span ( p. span ) }
2255
- } ,
2256
- )
2240
+ let bound_generic_params =
2241
+ self . lower_lifetime_binder ( p. trait_ref . ref_id , & p. bound_generic_params ) ;
2242
+ let trait_ref = self . lower_trait_ref ( & p. trait_ref , itctx) ;
2243
+ hir:: PolyTraitRef { bound_generic_params, trait_ref, span : self . lower_span ( p. span ) }
2257
2244
}
2258
2245
2259
2246
fn lower_mt ( & mut self , mt : & MutTy , itctx : & mut ImplTraitContext ) -> hir:: MutTy < ' hir > {
0 commit comments