about summary refs log tree commit diff
path: root/src/comp/front
diff options
context:
space:
mode:
authorBrian Anderson <andersrb@gmail.com>2011-03-24 21:04:29 -0400
committerGraydon Hoare <graydon@mozilla.com>2011-03-25 11:01:52 -0700
commit71f058499a0e551d2b8deb5d098bdb04387dc021 (patch)
tree4e14a52c8c0092f332c3c9477b85b97799310244 /src/comp/front
parentef1bcdea7025f6fd18fcd645804f83186546fa97 (diff)
downloadrust-71f058499a0e551d2b8deb5d098bdb04387dc021.tar.gz
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.rs10
-rw-r--r--src/comp/front/parser.rs7
2 files changed, 13 insertions, 4 deletions
diff --git a/src/comp/front/ast.rs b/src/comp/front/ast.rs
index 349f887a2f9..0d70c993b3b 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 063bc0e178f..23b4a9366fc 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 {