diff options
| author | Brian Anderson <[email protected]> | 2011-03-24 21:04:29 -0400 |
|---|---|---|
| committer | Graydon Hoare <[email protected]> | 2011-03-25 11:01:52 -0700 |
| commit | 71f058499a0e551d2b8deb5d098bdb04387dc021 (patch) | |
| tree | 4e14a52c8c0092f332c3c9477b85b97799310244 /src/comp/front | |
| parent | Add test for local declarations with receive. XFAIL in rustc. (diff) | |
| download | rust-71f058499a0e551d2b8deb5d098bdb04387dc021.tar.xz rust-71f058499a0e551d2b8deb5d098bdb04387dc021.zip | |
Refactor ast.local to make room for initialization via recv
Diffstat (limited to 'src/comp/front')
| -rw-r--r-- | src/comp/front/ast.rs | 10 | ||||
| -rw-r--r-- | src/comp/front/parser.rs | 7 |
2 files changed, 13 insertions, 4 deletions
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 { |