aboutsummaryrefslogtreecommitdiff
path: root/src/comp/front/parser.rs
diff options
context:
space:
mode:
authorBrian Anderson <[email protected]>2011-03-24 21:54:19 -0400
committerGraydon Hoare <[email protected]>2011-03-25 11:01:52 -0700
commitebc4df3c7add208195e84940f69648be793b328f (patch)
tree18ef8e7b7dc9f6199679186755497dfa8421d86f /src/comp/front/parser.rs
parentRefactor ast.local to make room for initialization via recv (diff)
downloadrust-ebc4df3c7add208195e84940f69648be793b328f.tar.xz
rust-ebc4df3c7add208195e84940f69648be793b328f.zip
Implement local declarations with receive. Un-XFAIL decl-with-recv.rs.
Diffstat (limited to 'src/comp/front/parser.rs')
-rw-r--r--src/comp/front/parser.rs20
1 files changed, 14 insertions, 6 deletions
diff --git a/src/comp/front/parser.rs b/src/comp/front/parser.rs
index 23b4a936..a903124d 100644
--- a/src/comp/front/parser.rs
+++ b/src/comp/front/parser.rs
@@ -1365,13 +1365,21 @@ impure fn parse_expr_inner(parser p) -> @ast.expr {
}
impure fn parse_initializer(parser p) -> option.t[ast.initializer] {
- if (p.peek() == token.EQ) {
- p.bump();
- ret some(rec(op = ast.init_assign,
- expr = parse_expr(p)));
+ alt (p.peek()) {
+ case (token.EQ) {
+ p.bump();
+ ret some(rec(op = ast.init_assign,
+ expr = parse_expr(p)));
+ }
+ case (token.LARROW) {
+ p.bump();
+ ret some(rec(op = ast.init_recv,
+ expr = parse_expr(p)));
+ }
+ case (_) {
+ ret none[ast.initializer];
+ }
}
-
- ret none[ast.initializer];
}
impure fn parse_pat(parser p) -> @ast.pat {