@@ -1564,14 +1564,14 @@ fn stmt_ends_with_semi(@ast.stmt stmt) -> bool {
1564
1564
case ( ast. expr_if ( _, _, _, _, _) ) { ret false ; }
1565
1565
case ( ast. expr_for ( _, _, _, _) ) { ret false ; }
1566
1566
case ( ast. expr_for_each ( _, _, _, _) )
1567
- { ret false ; }
1567
+ { ret false ; }
1568
1568
case ( ast. expr_while ( _, _, _) ) { ret false ; }
1569
1569
case ( ast. expr_do_while ( _, _, _) ) { ret false ; }
1570
1570
case ( ast. expr_alt ( _, _, _) ) { ret false ; }
1571
1571
case ( ast. expr_block ( _, _) ) { ret false ; }
1572
1572
case ( ast. expr_assign ( _, _, _) ) { ret true ; }
1573
1573
case ( ast. expr_assign_op ( _, _, _, _) )
1574
- { ret true ; }
1574
+ { ret true ; }
1575
1575
case ( ast. expr_field ( _, _, _) ) { ret true ; }
1576
1576
case ( ast. expr_index ( _, _, _) ) { ret true ; }
1577
1577
case ( ast. expr_path ( _, _, _) ) { ret true ; }
@@ -1583,16 +1583,8 @@ fn stmt_ends_with_semi(@ast.stmt stmt) -> bool {
1583
1583
case ( ast. expr_check_expr ( _) ) { ret true ; }
1584
1584
}
1585
1585
}
1586
- case ( ast. stmt_crate_directive ( ?cdir) ) {
1587
- alt ( cdir. node ) {
1588
- case ( ast. cdir_src_mod ( _, _) ) { ret true ; }
1589
- case ( ast. cdir_view_item ( _) ) { ret true ; }
1590
- case ( ast. cdir_meta ( _) ) { ret true ; }
1591
- case ( ast. cdir_syntax ( _) ) { ret true ; }
1592
- case ( ast. cdir_auth ( _, _) ) { ret true ; }
1593
- case ( _) { ret false ; }
1594
- }
1595
- }
1586
+ // We should not be calling this on a cdir.
1587
+ case ( ast. stmt_crate_directive ( ?cdir) ) { fail; }
1596
1588
}
1597
1589
}
1598
1590
@@ -1636,8 +1628,13 @@ impure fn parse_block(parser p) -> ast.block {
1636
1628
case ( none[ @ast. expr ] ) {
1637
1629
// Not an expression statement.
1638
1630
stmts += vec ( stmt) ;
1639
- if ( stmt_ends_with_semi ( stmt) ) {
1640
- expect ( p, token. SEMI ) ;
1631
+ // FIXME: crazy differentiation between conditions
1632
+ // used in branches and binary expressions in rustboot
1633
+ // means we cannot use && here. I know, right?
1634
+ if ( p. get_file_type ( ) == SOURCE_FILE ) {
1635
+ if ( stmt_ends_with_semi ( stmt) ) {
1636
+ expect ( p, token. SEMI ) ;
1637
+ }
1641
1638
}
1642
1639
}
1643
1640
}
@@ -2261,6 +2258,16 @@ impure fn parse_crate_directive(parser p) -> ast.crate_directive
2261
2258
ret spanned( lo, hi, ast. cdir_auth ( n, e) ) ;
2262
2259
}
2263
2260
2261
+ case ( token. META ) {
2262
+ // FIXME: currently dropping meta clauses on the floor,
2263
+ // as there is no crate metadata system
2264
+ p. bump ( ) ;
2265
+ auto mis = parse_meta ( p) ;
2266
+ hi = p. get_span ( ) ;
2267
+ expect ( p, token. SEMI ) ;
2268
+ ret spanned( lo, hi, ast. cdir_meta ( mis) ) ;
2269
+ }
2270
+
2264
2271
case ( token. MOD ) {
2265
2272
p. bump ( ) ;
2266
2273
auto id = parse_ident ( p) ;
0 commit comments