@@ -266,42 +266,10 @@ impl LoweringContext<'_> {
266
266
ExprKind :: Await ( ref expr) => self . lower_await ( e. span , expr) ,
267
267
ExprKind :: Closure (
268
268
capture_clause, asyncness, movability, ref decl, ref body, fn_decl_span
269
- ) => {
270
- if let IsAsync :: Async { closure_id, .. } = asyncness {
271
- self . lower_expr_async_closure (
272
- capture_clause,
273
- closure_id,
274
- decl,
275
- body,
276
- fn_decl_span,
277
- )
278
- } else {
279
- // Lower outside new scope to preserve `is_in_loop_condition`.
280
- let fn_decl = self . lower_fn_decl ( decl, None , false , None ) ;
281
-
282
- self . with_new_scopes ( |this| {
283
- this. current_item = Some ( fn_decl_span) ;
284
- let mut generator_kind = None ;
285
- let body_id = this. lower_fn_body ( decl, |this| {
286
- let e = this. lower_expr ( body) ;
287
- generator_kind = this. generator_kind ;
288
- e
289
- } ) ;
290
- let generator_option = this. generator_movability_for_fn (
291
- & decl,
292
- fn_decl_span,
293
- generator_kind,
294
- movability,
295
- ) ;
296
- hir:: ExprKind :: Closure (
297
- this. lower_capture_clause ( capture_clause) ,
298
- fn_decl,
299
- body_id,
300
- fn_decl_span,
301
- generator_option,
302
- )
303
- } )
304
- }
269
+ ) => if let IsAsync :: Async { closure_id, .. } = asyncness {
270
+ self . lower_expr_async_closure ( capture_clause, closure_id, decl, body, fn_decl_span)
271
+ } else {
272
+ self . lower_expr_closure ( capture_clause, movability, decl, body, fn_decl_span)
305
273
}
306
274
ExprKind :: Block ( ref blk, opt_label) => {
307
275
hir:: ExprKind :: Block ( self . lower_block ( blk,
@@ -407,6 +375,41 @@ impl LoweringContext<'_> {
407
375
}
408
376
}
409
377
378
+ fn lower_expr_closure (
379
+ & mut self ,
380
+ capture_clause : CaptureBy ,
381
+ movability : Movability ,
382
+ decl : & FnDecl ,
383
+ body : & Expr ,
384
+ fn_decl_span : Span ,
385
+ ) -> hir:: ExprKind {
386
+ // Lower outside new scope to preserve `is_in_loop_condition`.
387
+ let fn_decl = self . lower_fn_decl ( decl, None , false , None ) ;
388
+
389
+ self . with_new_scopes ( |this| {
390
+ this. current_item = Some ( fn_decl_span) ;
391
+ let mut generator_kind = None ;
392
+ let body_id = this. lower_fn_body ( decl, |this| {
393
+ let e = this. lower_expr ( body) ;
394
+ generator_kind = this. generator_kind ;
395
+ e
396
+ } ) ;
397
+ let generator_option = this. generator_movability_for_fn (
398
+ & decl,
399
+ fn_decl_span,
400
+ generator_kind,
401
+ movability,
402
+ ) ;
403
+ hir:: ExprKind :: Closure (
404
+ this. lower_capture_clause ( capture_clause) ,
405
+ fn_decl,
406
+ body_id,
407
+ fn_decl_span,
408
+ generator_option,
409
+ )
410
+ } )
411
+ }
412
+
410
413
fn lower_expr_async_closure (
411
414
& mut self ,
412
415
capture_clause : CaptureBy ,
0 commit comments