aboutsummaryrefslogtreecommitdiff
path: root/src/comp/front/parser.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/comp/front/parser.rs')
-rw-r--r--src/comp/front/parser.rs16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/comp/front/parser.rs b/src/comp/front/parser.rs
index 42ffc4c6..ceb68609 100644
--- a/src/comp/front/parser.rs
+++ b/src/comp/front/parser.rs
@@ -705,6 +705,22 @@ io fn parse_stmt(parser p) -> @ast.stmt {
}
}
+ case (token.RET) {
+ p.bump();
+ alt (p.peek()) {
+ case (token.SEMI) {
+ p.bump();
+ ret @spanned(lo, p.get_span(),
+ ast.stmt_ret(none[@ast.expr]));
+ }
+ case (_) {
+ auto e = parse_expr(p);
+ expect(p, token.SEMI);
+ ret @spanned(lo, e.span,
+ ast.stmt_ret(some[@ast.expr](e)));
+ }
+ }
+ }
case (token.LET) {
auto decl = parse_let(p);