@@ -192,6 +192,10 @@ impl<'a> LoweringContext<'a> {
192
192
}
193
193
}
194
194
195
+ fn lower_opt_sp_ident ( & mut self , o_id : Option < Spanned < Ident > > ) -> Option < Spanned < Name > > {
196
+ o_id. map ( |sp_ident| respan ( sp_ident. span , self . lower_ident ( sp_ident. node ) ) )
197
+ }
198
+
195
199
fn lower_attrs ( & mut self , attrs : & Vec < Attribute > ) -> hir:: HirVec < Attribute > {
196
200
attrs. clone ( ) . into ( )
197
201
}
@@ -1122,11 +1126,10 @@ impl<'a> LoweringContext<'a> {
1122
1126
}
1123
1127
ExprKind :: While ( ref cond, ref body, opt_ident) => {
1124
1128
hir:: ExprWhile ( self . lower_expr ( cond) , self . lower_block ( body) ,
1125
- opt_ident . map ( |ident| self . lower_ident ( ident ) ) )
1129
+ self . lower_opt_sp_ident ( opt_ident ) )
1126
1130
}
1127
1131
ExprKind :: Loop ( ref body, opt_ident) => {
1128
- hir:: ExprLoop ( self . lower_block ( body) ,
1129
- opt_ident. map ( |ident| self . lower_ident ( ident) ) )
1132
+ hir:: ExprLoop ( self . lower_block ( body) , self . lower_opt_sp_ident ( opt_ident) )
1130
1133
}
1131
1134
ExprKind :: Match ( ref expr, ref arms) => {
1132
1135
hir:: ExprMatch ( self . lower_expr ( expr) ,
@@ -1243,12 +1246,8 @@ impl<'a> LoweringContext<'a> {
1243
1246
} ;
1244
1247
hir:: ExprPath ( hir_qself, self . lower_path_full ( path, rename) )
1245
1248
}
1246
- ExprKind :: Break ( opt_ident) => hir:: ExprBreak ( opt_ident. map ( |sp_ident| {
1247
- respan ( sp_ident. span , self . lower_ident ( sp_ident. node ) )
1248
- } ) ) ,
1249
- ExprKind :: Again ( opt_ident) => hir:: ExprAgain ( opt_ident. map ( |sp_ident| {
1250
- respan ( sp_ident. span , self . lower_ident ( sp_ident. node ) )
1251
- } ) ) ,
1249
+ ExprKind :: Break ( opt_ident) => hir:: ExprBreak ( self . lower_opt_sp_ident ( opt_ident) ) ,
1250
+ ExprKind :: Again ( opt_ident) => hir:: ExprAgain ( self . lower_opt_sp_ident ( opt_ident) ) ,
1252
1251
ExprKind :: Ret ( ref e) => hir:: ExprRet ( e. as_ref ( ) . map ( |x| self . lower_expr ( x) ) ) ,
1253
1252
ExprKind :: InlineAsm ( InlineAsm {
1254
1253
ref inputs,
@@ -1422,8 +1421,7 @@ impl<'a> LoweringContext<'a> {
1422
1421
1423
1422
// `[opt_ident]: loop { ... }`
1424
1423
let loop_block = self . block_expr ( match_expr) ;
1425
- let loop_expr = hir:: ExprLoop ( loop_block,
1426
- opt_ident. map ( |ident| self . lower_ident ( ident) ) ) ;
1424
+ let loop_expr = hir:: ExprLoop ( loop_block, self . lower_opt_sp_ident ( opt_ident) ) ;
1427
1425
// add attributes to the outer returned expr node
1428
1426
let attrs = e. attrs . clone ( ) ;
1429
1427
return P ( hir:: Expr { id : e. id , node : loop_expr, span : e. span , attrs : attrs } ) ;
@@ -1503,8 +1501,7 @@ impl<'a> LoweringContext<'a> {
1503
1501
1504
1502
// `[opt_ident]: loop { ... }`
1505
1503
let loop_block = self . block_expr ( match_expr) ;
1506
- let loop_expr = hir:: ExprLoop ( loop_block,
1507
- opt_ident. map ( |ident| self . lower_ident ( ident) ) ) ;
1504
+ let loop_expr = hir:: ExprLoop ( loop_block, self . lower_opt_sp_ident ( opt_ident) ) ;
1508
1505
let loop_expr =
1509
1506
P ( hir:: Expr { id : e. id , node : loop_expr, span : e. span , attrs : None } ) ;
1510
1507
0 commit comments