@@ -10,9 +10,9 @@ use rustc_errors::struct_span_err;
1010use rustc_hir as hir;
1111use rustc_hir:: def:: Res ;
1212use rustc_session:: parse:: feature_err;
13- use rustc_span:: hygiene:: ForLoopLoc ;
1413use rustc_span:: source_map:: { respan, DesugaringKind , Span , Spanned } ;
1514use rustc_span:: symbol:: { sym, Ident , Symbol } ;
15+ use rustc_span:: { hygiene:: ForLoopLoc , DUMMY_SP } ;
1616use rustc_target:: asm;
1717use std:: collections:: hash_map:: Entry ;
1818use std:: fmt:: Write ;
@@ -102,6 +102,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
102102 this. lower_block ( body, false ) ,
103103 opt_label,
104104 hir:: LoopSource :: Loop ,
105+ DUMMY_SP ,
105106 )
106107 } ) ,
107108 ExprKind :: TryBlock ( ref body) => self . lower_expr_try_block ( body) ,
@@ -453,7 +454,12 @@ impl<'hir> LoweringContext<'_, 'hir> {
453454 self . expr_match ( span, scrutinee, arena_vec ! [ self ; then_arm, else_arm] , desugar) ;
454455
455456 // `[opt_ident]: loop { ... }`
456- hir:: ExprKind :: Loop ( self . block_expr ( self . arena . alloc ( match_expr) ) , opt_label, source)
457+ hir:: ExprKind :: Loop (
458+ self . block_expr ( self . arena . alloc ( match_expr) ) ,
459+ opt_label,
460+ source,
461+ span. with_hi ( cond. span . hi ( ) ) ,
462+ )
457463 }
458464
459465 /// Desugar `try { <stmts>; <expr> }` into `{ <stmts>; ::std::ops::Try::from_ok(<expr>) }`,
@@ -748,7 +754,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
748754 // loop { .. }
749755 let loop_expr = self . arena . alloc ( hir:: Expr {
750756 hir_id : loop_hir_id,
751- kind : hir:: ExprKind :: Loop ( loop_block, None , hir:: LoopSource :: Loop ) ,
757+ kind : hir:: ExprKind :: Loop ( loop_block, None , hir:: LoopSource :: Loop , span ) ,
752758 span,
753759 attrs : ThinVec :: new ( ) ,
754760 } ) ;
@@ -1709,7 +1715,12 @@ impl<'hir> LoweringContext<'_, 'hir> {
17091715 ) ;
17101716
17111717 // `[opt_ident]: loop { ... }`
1712- let kind = hir:: ExprKind :: Loop ( loop_block, opt_label, hir:: LoopSource :: ForLoop ) ;
1718+ let kind = hir:: ExprKind :: Loop (
1719+ loop_block,
1720+ opt_label,
1721+ hir:: LoopSource :: ForLoop ,
1722+ e. span . with_hi ( orig_head_span. hi ( ) ) ,
1723+ ) ;
17131724 let loop_expr = self . arena . alloc ( hir:: Expr {
17141725 hir_id : self . lower_node_id ( e. id ) ,
17151726 kind,
0 commit comments