@@ -608,14 +608,18 @@ impl<'hir> LoweringContext<'_, 'hir> {
608608 } ) ;
609609
610610 // `static |_task_context| -> <ret_ty> { body }`:
611- let generator_kind = hir:: ExprKind :: Closure {
612- binder : & hir:: ClosureBinder :: Default ,
613- capture_clause,
614- bound_generic_params : & [ ] ,
615- fn_decl,
616- body,
617- fn_decl_span : self . lower_span ( span) ,
618- movability : Some ( hir:: Movability :: Static ) ,
611+ let generator_kind = {
612+ let c = self . arena . alloc ( hir:: Closure {
613+ binder : hir:: ClosureBinder :: Default ,
614+ capture_clause,
615+ bound_generic_params : & [ ] ,
616+ fn_decl,
617+ body,
618+ fn_decl_span : self . lower_span ( span) ,
619+ movability : Some ( hir:: Movability :: Static ) ,
620+ } ) ;
621+
622+ hir:: ExprKind :: Closure ( c)
619623 } ;
620624 let generator = hir:: Expr {
621625 hir_id : self . lower_node_id ( closure_node_id) ,
@@ -864,15 +868,17 @@ impl<'hir> LoweringContext<'_, 'hir> {
864868 // Lower outside new scope to preserve `is_in_loop_condition`.
865869 let fn_decl = this. lower_fn_decl ( decl, None , FnDeclKind :: Closure , None ) ;
866870
867- hir:: ExprKind :: Closure {
871+ let c = self . arena . alloc ( hir:: Closure {
868872 binder : binder_clause,
869873 capture_clause,
870874 bound_generic_params,
871875 fn_decl,
872876 body : body_id,
873877 fn_decl_span : this. lower_span ( fn_decl_span) ,
874878 movability : generator_option,
875- }
879+ } ) ;
880+
881+ hir:: ExprKind :: Closure ( c)
876882 } )
877883 }
878884
@@ -917,7 +923,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
917923 fn lower_closure_binder < ' c > (
918924 & mut self ,
919925 binder : & ' c ClosureBinder ,
920- ) -> ( & ' hir hir:: ClosureBinder , & ' c [ GenericParam ] ) {
926+ ) -> ( hir:: ClosureBinder , & ' c [ GenericParam ] ) {
921927 let ( binder, params) = match binder {
922928 ClosureBinder :: NotPresent => ( hir:: ClosureBinder :: Default , & [ ] [ ..] ) ,
923929 & ClosureBinder :: For { span, ref generic_params } => {
@@ -926,7 +932,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
926932 }
927933 } ;
928934
929- ( self . arena . alloc ( binder) , params)
935+ ( binder, params)
930936 }
931937
932938 fn lower_expr_async_closure (
@@ -991,15 +997,16 @@ impl<'hir> LoweringContext<'_, 'hir> {
991997 // closure argument types.
992998 let fn_decl = this. lower_fn_decl ( & outer_decl, None , FnDeclKind :: Closure , None ) ;
993999
994- hir:: ExprKind :: Closure {
1000+ let c = self . arena . alloc ( hir:: Closure {
9951001 binder : binder_clause,
9961002 capture_clause,
9971003 bound_generic_params,
9981004 fn_decl,
9991005 body,
10001006 fn_decl_span : this. lower_span ( fn_decl_span) ,
10011007 movability : None ,
1002- }
1008+ } ) ;
1009+ hir:: ExprKind :: Closure ( c)
10031010 } )
10041011 }
10051012
0 commit comments