diff options
| author | Brian Anderson <[email protected]> | 2011-03-24 21:54:19 -0400 |
|---|---|---|
| committer | Graydon Hoare <[email protected]> | 2011-03-25 11:01:52 -0700 |
| commit | ebc4df3c7add208195e84940f69648be793b328f (patch) | |
| tree | 18ef8e7b7dc9f6199679186755497dfa8421d86f /src/comp/front/parser.rs | |
| parent | Refactor ast.local to make room for initialization via recv (diff) | |
| download | rust-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.rs | 20 |
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 { |