@@ -1223,9 +1223,7 @@ fn parse_if_expr_1(&parser p) -> tup(@ast::expr,
1223
1223
ast:: block , option:: t[ @ast:: expr ] ,
1224
1224
uint , uint ) {
1225
1225
auto lo = p. get_last_lo_pos ( ) ;
1226
- expect ( p, token:: LPAREN ) ;
1227
1226
auto cond = parse_expr ( p) ;
1228
- expect ( p, token:: RPAREN ) ;
1229
1227
auto thn = parse_block ( p) ;
1230
1228
let option:: t[ @ast:: expr] els = none;
1231
1229
auto hi = thn. span . hi ;
@@ -1292,9 +1290,7 @@ fn parse_for_expr(&parser p) -> @ast::expr {
1292
1290
1293
1291
fn parse_while_expr ( & parser p) -> @ast:: expr {
1294
1292
auto lo = p. get_last_lo_pos ( ) ;
1295
- expect ( p, token:: LPAREN ) ;
1296
1293
auto cond = parse_expr ( p) ;
1297
- expect ( p, token:: RPAREN ) ;
1298
1294
auto body = parse_block ( p) ;
1299
1295
auto hi = body. span . hi ;
1300
1296
ret mk_expr( p, lo, hi, ast:: expr_while ( cond, body) ) ;
@@ -1304,34 +1300,27 @@ fn parse_do_while_expr(&parser p) -> @ast::expr {
1304
1300
auto lo = p. get_last_lo_pos ( ) ;
1305
1301
auto body = parse_block ( p) ;
1306
1302
expect_word ( p, "while" ) ;
1307
- expect ( p, token:: LPAREN ) ;
1308
1303
auto cond = parse_expr ( p) ;
1309
- expect ( p, token:: RPAREN ) ;
1310
1304
auto hi = cond. span . hi ;
1311
1305
ret mk_expr( p, lo, hi, ast:: expr_do_while ( body, cond) ) ;
1312
1306
}
1313
1307
1314
1308
fn parse_alt_expr ( & parser p) -> @ast:: expr {
1315
1309
auto lo = p. get_last_lo_pos ( ) ;
1316
- expect ( p, token:: LPAREN ) ;
1317
1310
auto discriminant = parse_expr ( p) ;
1318
- expect ( p, token:: RPAREN ) ;
1319
1311
expect ( p, token:: LBRACE ) ;
1320
1312
let vec[ ast:: arm] arms = [ ] ;
1321
1313
while ( p. peek ( ) != token:: RBRACE ) {
1322
- if ( eat_word ( p, "case" ) ) {
1323
- expect ( p, token:: LPAREN ) ;
1324
- auto pat = parse_pat ( p) ;
1325
- expect ( p, token:: RPAREN ) ;
1326
- auto block = parse_block ( p) ;
1327
- arms += [ rec ( pat=pat, block=block) ] ;
1328
- } else if ( p. peek ( ) == token:: RBRACE ) {
1329
- /* empty */
1330
-
1331
- } else {
1332
- p. fatal ( "expected 'case' or '}' when parsing 'alt' statement " +
1333
- "but found " + token:: to_str ( p. get_reader ( ) , p. peek ( ) ) ) ;
1334
- }
1314
+ // Optionally eat the case keyword.
1315
+ // FIXME remove this (and the optional parens) once we've updated our
1316
+ // code to not use the old syntax
1317
+ eat_word ( p, "case" ) ;
1318
+ auto parens = false ;
1319
+ if ( p. peek ( ) == token:: LPAREN ) { parens = true ; p. bump ( ) ; }
1320
+ auto pat = parse_pat ( p) ;
1321
+ if ( parens) { expect ( p, token:: RPAREN ) ; }
1322
+ auto block = parse_block ( p) ;
1323
+ arms += [ rec ( pat=pat, block=block) ] ;
1335
1324
}
1336
1325
auto hi = p. get_hi_pos ( ) ;
1337
1326
p. bump ( ) ;
0 commit comments