about summary refs log tree commit diff
path: root/src/comp/syntax/parse
diff options
context:
space:
mode:
authorMarijn Haverbeke <marijnh@gmail.com>2011-09-12 11:46:40 +0200
committerMarijn Haverbeke <marijnh@gmail.com>2011-09-12 12:04:41 +0200
commit3667137a4104ecde5c37f128d6d8c6080529f89f (patch)
treec35492bf86160c2b11ecd60253d5717e765f2b50 /src/comp/syntax/parse
parentfc6b7c8b381bcb506eab0f50c69b6cc18aafacb2 (diff)
downloadrust-3667137a4104ecde5c37f128d6d8c6080529f89f.tar.gz
rust-3667137a4104ecde5c37f128d6d8c6080529f89f.zip
Accept {|| ... } for argument-less block syntax
Closes #880
Diffstat (limited to 'src/comp/syntax/parse')
-rw-r--r--src/comp/syntax/parse/parser.rs12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/comp/syntax/parse/parser.rs b/src/comp/syntax/parse/parser.rs
index 3d115197794..b6abb899135 100644
--- a/src/comp/syntax/parse/parser.rs
+++ b/src/comp/syntax/parse/parser.rs
@@ -826,7 +826,8 @@ fn parse_bottom_expr(p: parser) -> @ast::expr {
             hi = p.get_hi_pos();
             expect(p, token::RBRACE);
             ex = ast::expr_rec(fields, base);
-        } else if p.peek() == token::BINOP(token::OR) {
+        } else if p.peek() == token::BINOP(token::OR) ||
+                  p.peek() == token::OROR {
             ret parse_fn_block_expr(p);
         } else {
             let blk = parse_block_tail(p, lo, ast::checked);
@@ -1772,10 +1773,13 @@ fn parse_fn_decl(p: parser, purity: ast::purity, il: ast::inlineness) ->
 }
 
 fn parse_fn_block_decl(p: parser) -> ast::fn_decl {
-    let inputs: ast::spanned<[ast::arg]> =
+    let inputs = if p.peek() == token::OROR {
+        p.bump(); []
+    } else {
         parse_seq(token::BINOP(token::OR), token::BINOP(token::OR),
-                  some(token::COMMA), parse_fn_block_arg, p);
-    ret {inputs: inputs.node,
+                  some(token::COMMA), parse_fn_block_arg, p).node
+    };
+    ret {inputs: inputs,
          output: @spanned(p.get_lo_pos(), p.get_hi_pos(), ast::ty_infer),
          purity: ast::impure_fn,
          il: ast::il_normal,