diff options
-rw-r--r-- | lib/Parse/ParseExpr.cpp | 2 | ||||
-rw-r--r-- | test/Parser/cxx-throw.cpp | 3 |
2 files changed, 2 insertions, 3 deletions
diff --git a/lib/Parse/ParseExpr.cpp b/lib/Parse/ParseExpr.cpp index c3a38b1fe2..20c55a1ea3 100644 --- a/lib/Parse/ParseExpr.cpp +++ b/lib/Parse/ParseExpr.cpp @@ -225,7 +225,7 @@ Parser::ParseExpressionWithLeadingAt(SourceLocation AtLoc) { /// process of disambiguating between an expression and a declaration. Parser::OwningExprResult Parser::ParseExpressionWithLeadingExtension(SourceLocation ExtLoc) { - OwningExprResult LHS(ParseAssignmentExpression()); + OwningExprResult LHS(ParseCastExpression(false)); if (LHS.isInvalid()) return move(LHS); LHS = Actions.ActOnUnaryOp(CurScope, ExtLoc, tok::kw___extension__, diff --git a/test/Parser/cxx-throw.cpp b/test/Parser/cxx-throw.cpp index 968ef469f9..bcc49ec1b4 100644 --- a/test/Parser/cxx-throw.cpp +++ b/test/Parser/cxx-throw.cpp @@ -10,7 +10,6 @@ void foo() { throw 1; throw; 1 ? throw : (void)42; - // gcc doesn't parse the below, but we do - __extension__ throw 1; + __extension__ throw 1; // expected-error {{expected expression}} (void)throw; // expected-error {{expected expression}} } |