diff options
| author | Marijn Haverbeke <marijnh@gmail.com> | 2011-09-12 11:46:40 +0200 |
|---|---|---|
| committer | Marijn Haverbeke <marijnh@gmail.com> | 2011-09-12 12:04:41 +0200 |
| commit | 3667137a4104ecde5c37f128d6d8c6080529f89f (patch) | |
| tree | c35492bf86160c2b11ecd60253d5717e765f2b50 /src/comp/syntax/parse | |
| parent | fc6b7c8b381bcb506eab0f50c69b6cc18aafacb2 (diff) | |
| download | rust-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.rs | 12 |
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, |
