about summary refs log tree commit diff
path: root/src/libsyntax/parse
diff options
context:
space:
mode:
authorAaron Keen <aaronkeen@gmail.com>2015-12-14 21:32:16 +0100
committerAaron Keen <aaronkeen@gmail.com>2015-12-14 21:32:16 +0100
commit35f2fe52c2d4c55236446ebdac11ba44cc3704cd (patch)
treef845cd245acbe206265c4d82c0708a1a10202c53 /src/libsyntax/parse
parent6b3a3f270219819f8f98c2b6807ff70b92a941ac (diff)
downloadrust-35f2fe52c2d4c55236446ebdac11ba44cc3704cd.tar.gz
rust-35f2fe52c2d4c55236446ebdac11ba44cc3704cd.zip
Corrects issue #28777 by removing, once a binary operator is found, the
RESTRICTION_STMT_EXPR restriction to allow subsequent expressions to
contain braces.

https://github.com/rust-lang/rust/issues/28777
Diffstat (limited to 'src/libsyntax/parse')
-rw-r--r--src/libsyntax/parse/parser.rs21
1 files changed, 15 insertions, 6 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs
index 7502a8cbc35..6cbdd9f3411 100644
--- a/src/libsyntax/parse/parser.rs
+++ b/src/libsyntax/parse/parser.rs
@@ -2813,16 +2813,25 @@ impl<'a> Parser<'a> {
 
 
             let rhs = try!(match op.fixity() {
-                Fixity::Right => self.with_res(restrictions, |this|{
-                    this.parse_assoc_expr_with(op.precedence(), LhsExpr::NotYetParsed)
+                Fixity::Right => self.with_res(
+                    restrictions & !Restrictions::RESTRICTION_STMT_EXPR,
+                    |this|{
+                        this.parse_assoc_expr_with(op.precedence(),
+                        LhsExpr::NotYetParsed)
                 }),
-                Fixity::Left => self.with_res(restrictions, |this|{
-                    this.parse_assoc_expr_with(op.precedence() + 1, LhsExpr::NotYetParsed)
+                Fixity::Left => self.with_res(
+                    restrictions & !Restrictions::RESTRICTION_STMT_EXPR,
+                    |this|{
+                        this.parse_assoc_expr_with(op.precedence() + 1,
+                            LhsExpr::NotYetParsed)
                 }),
                 // We currently have no non-associative operators that are not handled above by
                 // the special cases. The code is here only for future convenience.
-                Fixity::None => self.with_res(restrictions, |this|{
-                    this.parse_assoc_expr_with(op.precedence() + 1, LhsExpr::NotYetParsed)
+                Fixity::None => self.with_res(
+                    restrictions & !Restrictions::RESTRICTION_STMT_EXPR,
+                    |this|{
+                        this.parse_assoc_expr_with(op.precedence() + 1,
+                            LhsExpr::NotYetParsed)
                 }),
             });