@@ -541,24 +541,26 @@ io fn parse_expr(parser p) -> @ast.expr {
541
541
}
542
542
}
543
543
544
+ io fn parse_initializer ( parser p) -> option [ @ast. expr] {
545
+ if ( p. peek ( ) == token. EQ ) {
546
+ p. bump ( ) ;
547
+ ret some( parse_expr ( p) ) ;
548
+ }
549
+
550
+ ret none[ @ast. expr ] ;
551
+ }
552
+
544
553
io fn parse_let ( parser p) -> @ast. decl {
545
554
auto lo = p. get_span ( ) ;
546
555
547
556
expect ( p, token. LET ) ;
548
557
auto ty = parse_ty ( p) ;
549
558
auto id = parse_ident ( p) ;
559
+ auto init = parse_initializer ( p) ;
550
560
551
- auto init;
552
- if ( p. peek ( ) == token. EQ ) {
553
- p. bump ( ) ;
554
- init = some ( parse_expr ( p) ) ;
555
- } else {
556
- init = none[ @ast. expr ] ;
557
- }
558
-
561
+ auto hi = p. get_span ( ) ;
559
562
expect ( p, token. SEMI ) ;
560
563
561
- auto hi = p. get_span ( ) ;
562
564
ret @spanned ( lo, hi, ast. decl_local ( id, some ( ty) , init) ) ;
563
565
}
564
566
@@ -580,6 +582,17 @@ io fn parse_stmt(parser p) -> @ast.stmt {
580
582
ret @spanned ( lo, hi, ast. stmt_decl ( leht) ) ;
581
583
}
582
584
585
+ case ( token. AUTO ) {
586
+ p. bump ( ) ;
587
+ auto id = parse_ident ( p) ;
588
+ auto init = parse_initializer ( p) ;
589
+ auto hi = p. get_span ( ) ;
590
+ expect ( p, token. SEMI ) ;
591
+
592
+ auto decl = ast. decl_local ( id, none[ @ast. ty ] , init) ;
593
+ ret @spanned ( lo, hi, ast. stmt_decl ( @spanned ( lo, hi, decl) ) ) ;
594
+ }
595
+
583
596
// Handle the (few) block-expr stmts first.
584
597
585
598
case ( token. IF ) {
0 commit comments