@@ -1593,7 +1593,17 @@ fn parse_auto_local(&parser p) -> @ast::local {
1593
1593
ret parse_local_full ( none, p) ;
1594
1594
}
1595
1595
1596
+ // FIXME simplify when old syntax is no longer supported
1596
1597
fn parse_let ( & parser p) -> @ast:: decl {
1598
+ if alt p. peek ( ) { token:: IDENT ( _, false ) { true } _ { false } } {
1599
+ alt p. look_ahead ( 1 u) {
1600
+ token:: COLON | token:: SEMI | token:: COMMA | token:: EQ |
1601
+ token:: LARROW {
1602
+ ret parse_let_modern( p) ;
1603
+ }
1604
+ _ { }
1605
+ }
1606
+ }
1597
1607
auto lo = p. get_last_lo_pos ( ) ;
1598
1608
auto locals = ~[ parse_typed_local ( p) ] ;
1599
1609
while p. peek ( ) == token:: COMMA {
@@ -1603,6 +1613,29 @@ fn parse_let(&parser p) -> @ast::decl {
1603
1613
ret @spanned ( lo, p. get_hi_pos ( ) , ast:: decl_local ( locals) ) ;
1604
1614
}
1605
1615
1616
+ fn parse_let_modern ( & parser p) -> @ast:: decl {
1617
+ fn parse_local ( & parser p) -> @ast:: local {
1618
+ auto lo = p. get_lo_pos ( ) ;
1619
+ auto ident = parse_value_ident ( p) ;
1620
+ auto ty = none;
1621
+ if p. peek ( ) == token:: COLON {
1622
+ p. bump ( ) ;
1623
+ ty = some ( parse_ty ( p) ) ;
1624
+ }
1625
+ auto init = parse_initializer ( p) ;
1626
+ ret @spanned ( lo, p. get_last_hi_pos ( ) ,
1627
+ rec ( ty=ty, infer=false , ident=ident,
1628
+ init=init, id=p. get_id ( ) ) ) ;
1629
+ }
1630
+ auto lo = p. get_lo_pos ( ) ;
1631
+ auto locals = ~[ parse_local ( p) ] ;
1632
+ while p. peek ( ) == token:: COMMA {
1633
+ p. bump ( ) ;
1634
+ locals += ~[ parse_local ( p) ] ;
1635
+ }
1636
+ ret @spanned ( lo, p. get_last_hi_pos ( ) , ast:: decl_local ( locals) ) ;
1637
+ }
1638
+
1606
1639
fn parse_auto ( & parser p) -> @ast:: decl {
1607
1640
auto lo = p. get_last_lo_pos ( ) ;
1608
1641
auto locals = ~[ parse_auto_local ( p) ] ;
0 commit comments