summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorTim Chevalier <chevalier@alum.wellesley.edu>2012-10-30 15:00:57 -0700
committerTim Chevalier <chevalier@alum.wellesley.edu>2012-10-30 15:06:13 -0700
commit4e5865f2ad13c4efe12a4c02f134ff761d16b26b (patch)
tree0cc6b4f340ed1ee5fa23b0d67be30420ab9539a4 /src
parent165ce14f687e4d20733795e3465dedc5d77ec49b (diff)
downloadrust-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.rs2
-rw-r--r--src/test/run-pass/issue-1458.rs12
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;
+}