diff options
| author | Tim Chevalier <chevalier@alum.wellesley.edu> | 2012-10-30 15:00:57 -0700 |
|---|---|---|
| committer | Tim Chevalier <chevalier@alum.wellesley.edu> | 2012-10-30 15:06:13 -0700 |
| commit | 4e5865f2ad13c4efe12a4c02f134ff761d16b26b (patch) | |
| tree | 0cc6b4f340ed1ee5fa23b0d67be30420ab9539a4 /src | |
| parent | 165ce14f687e4d20733795e3465dedc5d77ec49b (diff) | |
| download | rust-4e5865f2ad13c4efe12a4c02f134ff761d16b26b.tar.gz rust-4e5865f2ad13c4efe12a4c02f134ff761d16b26b.zip | |
Fix #1458 (allow paren'd exprs to be the operator in a `do`)
Closes #1458
Diffstat (limited to 'src')
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 2 | ||||
| -rw-r--r-- | src/test/run-pass/issue-1458.rs | 12 |
2 files changed, 13 insertions, 1 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index a5bc5013c17..6615bc75169 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -1576,7 +1576,7 @@ impl Parser { @{node: expr_call(f, args, true), .. *e} } - expr_path(*) | expr_field(*) | expr_call(*) => { + expr_path(*) | expr_field(*) | expr_call(*) | expr_paren(*) => { let block = self.parse_lambda_block_expr(); let last_arg = self.mk_expr(block.span.lo, block.span.hi, ctor(block)); diff --git a/src/test/run-pass/issue-1458.rs b/src/test/run-pass/issue-1458.rs new file mode 100644 index 00000000000..cc51a42e893 --- /dev/null +++ b/src/test/run-pass/issue-1458.rs @@ -0,0 +1,12 @@ +fn plus_one(f: fn() -> int) -> int { + return f() + 1; +} + +fn ret_plus_one() -> fn(fn() -> int) -> int { + return plus_one; +} + +fn main() { + let z = do (ret_plus_one()) || { 2 }; + assert z == 3; +} |
