diff options
| author | Aaron Keen <aaronkeen@gmail.com> | 2015-12-14 21:32:16 +0100 |
|---|---|---|
| committer | Aaron Keen <aaronkeen@gmail.com> | 2015-12-14 21:32:16 +0100 |
| commit | 35f2fe52c2d4c55236446ebdac11ba44cc3704cd (patch) | |
| tree | f845cd245acbe206265c4d82c0708a1a10202c53 /src/libsyntax | |
| parent | 6b3a3f270219819f8f98c2b6807ff70b92a941ac (diff) | |
| download | rust-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')
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 21 |
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) }), }); |
