From 71f058499a0e551d2b8deb5d098bdb04387dc021 Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Thu, 24 Mar 2011 21:04:29 -0400 Subject: Refactor ast.local to make room for initialization via recv --- src/comp/front/ast.rs | 10 +++++++++- src/comp/front/parser.rs | 7 ++++--- 2 files changed, 13 insertions(+), 4 deletions(-) (limited to 'src/comp/front') diff --git a/src/comp/front/ast.rs b/src/comp/front/ast.rs index 349f887a..0d70c993 100644 --- a/src/comp/front/ast.rs +++ b/src/comp/front/ast.rs @@ -194,10 +194,18 @@ tag stmt_ { stmt_crate_directive(@crate_directive); } +tag init_op { + init_assign; + init_recv; +} + +type initializer = rec(init_op op, + @expr expr); + type local = rec(option.t[@ty] ty, bool infer, ident ident, - option.t[@expr] init, + option.t[initializer] init, def_id id, ann ann); diff --git a/src/comp/front/parser.rs b/src/comp/front/parser.rs index 063bc0e1..23b4a936 100644 --- a/src/comp/front/parser.rs +++ b/src/comp/front/parser.rs @@ -1364,13 +1364,14 @@ impure fn parse_expr_inner(parser p) -> @ast.expr { } } -impure fn parse_initializer(parser p) -> option.t[@ast.expr] { +impure fn parse_initializer(parser p) -> option.t[ast.initializer] { if (p.peek() == token.EQ) { p.bump(); - ret some(parse_expr(p)); + ret some(rec(op = ast.init_assign, + expr = parse_expr(p))); } - ret none[@ast.expr]; + ret none[ast.initializer]; } impure fn parse_pat(parser p) -> @ast.pat { -- cgit v1.2.3