@@ -1810,10 +1810,11 @@ impl Parser {
1810
1810
let lifetime = self . get_lifetime ( ) ;
1811
1811
self . bump ( ) ;
1812
1812
self . expect ( & token:: COLON ) ;
1813
+ let name = Some ( lifetime. name ) ;
1813
1814
if self . eat_keyword ( keywords:: For ) {
1814
- return self . parse_for_expr ( Some ( lifetime ) )
1815
+ return self . parse_for_expr ( name )
1815
1816
} else if self . eat_keyword ( keywords:: Loop ) {
1816
- return self . parse_loop_expr ( Some ( lifetime ) )
1817
+ return self . parse_loop_expr ( name )
1817
1818
} else {
1818
1819
self . fatal ( "expected `for` or `loop` after a label" )
1819
1820
}
@@ -2535,7 +2536,7 @@ impl Parser {
2535
2536
}
2536
2537
2537
2538
// parse a 'for' .. 'in' expression ('for' token already eaten)
2538
- pub fn parse_for_expr ( & mut self , opt_ident : Option < ast:: Ident > ) -> @Expr {
2539
+ pub fn parse_for_expr ( & mut self , opt_name : Option < ast:: Name > ) -> @Expr {
2539
2540
// Parse: `for <src_pat> in <src_expr> <src_loop_block>`
2540
2541
2541
2542
let lo = self . last_span . lo ;
@@ -2545,7 +2546,7 @@ impl Parser {
2545
2546
let loop_block = self . parse_block ( ) ;
2546
2547
let hi = self . span . hi ;
2547
2548
2548
- self . mk_expr ( lo, hi, ExprForLoop ( pat, expr, loop_block, opt_ident ) )
2549
+ self . mk_expr ( lo, hi, ExprForLoop ( pat, expr, loop_block, opt_name ) )
2549
2550
}
2550
2551
2551
2552
pub fn parse_while_expr ( & mut self ) -> @Expr {
@@ -2556,7 +2557,7 @@ impl Parser {
2556
2557
return self . mk_expr ( lo, hi, ExprWhile ( cond, body) ) ;
2557
2558
}
2558
2559
2559
- pub fn parse_loop_expr ( & mut self , opt_ident : Option < ast:: Ident > ) -> @Expr {
2560
+ pub fn parse_loop_expr ( & mut self , opt_name : Option < ast:: Name > ) -> @Expr {
2560
2561
// loop headers look like 'loop {' or 'loop unsafe {'
2561
2562
let is_loop_header =
2562
2563
self . token == token:: LBRACE
@@ -2568,10 +2569,10 @@ impl Parser {
2568
2569
let lo = self . last_span . lo ;
2569
2570
let body = self . parse_block ( ) ;
2570
2571
let hi = body. span . hi ;
2571
- return self . mk_expr ( lo, hi, ExprLoop ( body, opt_ident ) ) ;
2572
+ return self . mk_expr ( lo, hi, ExprLoop ( body, opt_name ) ) ;
2572
2573
} else {
2573
2574
// This is an obsolete 'continue' expression
2574
- if opt_ident . is_some ( ) {
2575
+ if opt_name . is_some ( ) {
2575
2576
self . span_err ( self . last_span ,
2576
2577
"a label may not be used with a `loop` expression" ) ;
2577
2578
}
0 commit comments