@@ -1335,6 +1335,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
1335
1335
let head = self . lower_expr_mut ( head) ;
1336
1336
let desugared_span =
1337
1337
self . mark_span_with_reason ( DesugaringKind :: ForLoop ( ForLoopLoc :: Head ) , head. span , None ) ;
1338
+ let e_span = self . lower_span ( e. span ) ;
1338
1339
1339
1340
let iter = Ident :: with_dummy_span ( sym:: iter) ;
1340
1341
@@ -1348,23 +1349,24 @@ impl<'hir> LoweringContext<'_, 'hir> {
1348
1349
// `::std::option::Option::Some(val) => __next = val`
1349
1350
let pat_arm = {
1350
1351
let val_ident = Ident :: with_dummy_span ( sym:: val) ;
1351
- let ( val_pat, val_pat_hid) = self . pat_ident ( pat. span , val_ident) ;
1352
- let val_expr = self . expr_ident ( pat. span , val_ident, val_pat_hid) ;
1353
- let next_expr = self . expr_ident ( pat. span , next_ident, next_pat_hid) ;
1352
+ let pat_span = self . lower_span ( pat. span ) ;
1353
+ let ( val_pat, val_pat_hid) = self . pat_ident ( pat_span, val_ident) ;
1354
+ let val_expr = self . expr_ident ( pat_span, val_ident, val_pat_hid) ;
1355
+ let next_expr = self . expr_ident ( pat_span, next_ident, next_pat_hid) ;
1354
1356
let assign = self . arena . alloc ( self . expr (
1355
- pat . span ,
1356
- hir:: ExprKind :: Assign ( next_expr, val_expr, self . lower_span ( pat . span ) ) ,
1357
+ pat_span ,
1358
+ hir:: ExprKind :: Assign ( next_expr, val_expr, self . lower_span ( pat_span ) ) ,
1357
1359
ThinVec :: new ( ) ,
1358
1360
) ) ;
1359
- let some_pat = self . pat_some ( pat . span , val_pat) ;
1361
+ let some_pat = self . pat_some ( pat_span , val_pat) ;
1360
1362
self . arm ( some_pat, assign)
1361
1363
} ;
1362
1364
1363
1365
// `::std::option::Option::None => break`
1364
1366
let break_arm = {
1365
1367
let break_expr =
1366
- self . with_loop_scope ( e. id , |this| this. expr_break_alloc ( e . span , ThinVec :: new ( ) ) ) ;
1367
- let pat = self . pat_none ( e . span ) ;
1368
+ self . with_loop_scope ( e. id , |this| this. expr_break_alloc ( e_span , ThinVec :: new ( ) ) ) ;
1369
+ let pat = self . pat_none ( e_span ) ;
1368
1370
self . arm ( pat, break_expr)
1369
1371
} ;
1370
1372
@@ -1410,10 +1412,10 @@ impl<'hir> LoweringContext<'_, 'hir> {
1410
1412
1411
1413
let body_block = self . with_loop_scope ( e. id , |this| this. lower_block ( body, false ) ) ;
1412
1414
let body_expr = self . expr_block ( body_block, ThinVec :: new ( ) ) ;
1413
- let body_stmt = self . stmt_expr ( body . span , body_expr) ;
1415
+ let body_stmt = self . stmt_expr ( body_block . span , body_expr) ;
1414
1416
1415
1417
let loop_block = self . block_all (
1416
- e . span ,
1418
+ e_span ,
1417
1419
arena_vec ! [ self ; next_let, match_stmt, pat_let, body_stmt] ,
1418
1420
None ,
1419
1421
) ;
@@ -1423,7 +1425,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
1423
1425
loop_block,
1424
1426
self . lower_label ( opt_label) ,
1425
1427
hir:: LoopSource :: ForLoop ,
1426
- self . lower_span ( e . span . with_hi ( head. span . hi ( ) ) ) ,
1428
+ self . lower_span ( e_span . with_hi ( head. span . hi ( ) ) ) ,
1427
1429
) ;
1428
1430
let loop_expr = self . arena . alloc ( hir:: Expr {
1429
1431
hir_id : self . lower_node_id ( e. id ) ,
@@ -1452,7 +1454,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
1452
1454
// #82462: to correctly diagnose borrow errors, the block that contains
1453
1455
// the iter expr needs to have a span that covers the loop body.
1454
1456
let desugared_full_span =
1455
- self . mark_span_with_reason ( DesugaringKind :: ForLoop ( ForLoopLoc :: Head ) , e . span , None ) ;
1457
+ self . mark_span_with_reason ( DesugaringKind :: ForLoop ( ForLoopLoc :: Head ) , e_span , None ) ;
1456
1458
1457
1459
let match_expr = self . arena . alloc ( self . expr_match (
1458
1460
desugared_full_span,
0 commit comments