@@ -941,14 +941,14 @@ impl<'hir> LoweringContext<'_, 'hir> {
941941 hir:: ExprKind :: Break ( this. lower_loop_destination ( None ) , Some ( x_expr) ) ;
942942 this. arena . alloc ( this. expr ( gen_future_span, expr_break) )
943943 } ) ;
944- self . arm ( ready_pat, break_x)
944+ self . arm ( ready_pat, break_x, span )
945945 } ;
946946
947947 // `::std::task::Poll::Pending => {}`
948948 let pending_arm = {
949949 let pending_pat = self . pat_lang_item_variant ( span, hir:: LangItem :: PollPending , & [ ] ) ;
950950 let empty_block = self . expr_block_empty ( span) ;
951- self . arm ( pending_pat, empty_block)
951+ self . arm ( pending_pat, empty_block, span )
952952 } ;
953953
954954 let inner_match_stmt = {
@@ -1002,7 +1002,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
10021002 } ) ;
10031003
10041004 // mut __awaitee => loop { ... }
1005- let awaitee_arm = self . arm ( awaitee_pat, loop_expr) ;
1005+ let awaitee_arm = self . arm ( awaitee_pat, loop_expr, span ) ;
10061006
10071007 // `match ::std::future::IntoFuture::into_future(<expr>) { ... }`
10081008 let into_future_expr = match await_kind {
@@ -1788,7 +1788,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
17881788 let break_expr =
17891789 self . with_loop_scope ( loop_hir_id, |this| this. expr_break_alloc ( for_span) ) ;
17901790 let pat = self . pat_none ( for_span) ;
1791- self . arm ( pat, break_expr)
1791+ self . arm ( pat, break_expr, for_span )
17921792 } ;
17931793
17941794 // Some(<pat>) => <body>,
@@ -1797,7 +1797,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
17971797 let body_block =
17981798 self . with_loop_scope ( loop_hir_id, |this| this. lower_block ( body, false ) ) ;
17991799 let body_expr = self . arena . alloc ( self . expr_block ( body_block) ) ;
1800- self . arm ( some_pat, body_expr)
1800+ self . arm ( some_pat, body_expr, for_span )
18011801 } ;
18021802
18031803 // `mut iter`
@@ -1856,7 +1856,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
18561856 let loop_expr = self . arena . alloc ( hir:: Expr { hir_id : loop_hir_id, kind, span : for_span } ) ;
18571857
18581858 // `mut iter => { ... }`
1859- let iter_arm = self . arm ( iter_pat, loop_expr) ;
1859+ let iter_arm = self . arm ( iter_pat, loop_expr, for_span ) ;
18601860
18611861 let match_expr = match loop_kind {
18621862 ForLoopKind :: For => {
@@ -1901,7 +1901,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
19011901 hir:: LangItem :: IntoAsyncIterIntoIter ,
19021902 arena_vec ! [ self ; head] ,
19031903 ) ;
1904- let iter_arm = self . arm ( async_iter_pat, inner_match_expr) ;
1904+ let iter_arm = self . arm ( async_iter_pat, inner_match_expr, for_span ) ;
19051905 self . arena . alloc ( self . expr_match (
19061906 for_span,
19071907 iter,
@@ -1968,7 +1968,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
19681968 let val_expr = self . expr_ident ( span, val_ident, val_pat_nid) ;
19691969 self . lower_attrs ( val_expr. hir_id , & attrs, span, Target :: Expression ) ;
19701970 let continue_pat = self . pat_cf_continue ( unstable_span, val_pat) ;
1971- self . arm ( continue_pat, val_expr)
1971+ self . arm ( continue_pat, val_expr, try_span )
19721972 } ;
19731973
19741974 // `ControlFlow::Break(residual) =>
@@ -2004,7 +2004,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
20042004 self . lower_attrs ( ret_expr. hir_id , & attrs, span, Target :: Expression ) ;
20052005
20062006 let break_pat = self . pat_cf_break ( try_span, residual_local) ;
2007- self . arm ( break_pat, ret_expr)
2007+ self . arm ( break_pat, ret_expr, try_span )
20082008 } ;
20092009
20102010 hir:: ExprKind :: Match (
@@ -2329,12 +2329,13 @@ impl<'hir> LoweringContext<'_, 'hir> {
23292329 & mut self ,
23302330 pat : & ' hir hir:: Pat < ' hir > ,
23312331 expr : & ' hir hir:: Expr < ' hir > ,
2332+ span : Span ,
23322333 ) -> hir:: Arm < ' hir > {
23332334 hir:: Arm {
23342335 hir_id : self . next_id ( ) ,
23352336 pat,
23362337 guard : None ,
2337- span : self . lower_span ( expr . span ) ,
2338+ span : self . lower_span ( span) ,
23382339 body : expr,
23392340 }
23402341 }
0 commit comments