summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang/lib/Parse/ParseExpr.cpp4
-rw-r--r--clang/test/Parser/cxx-ambig-paren-expr.cpp1
2 files changed, 3 insertions, 2 deletions
diff --git a/clang/lib/Parse/ParseExpr.cpp b/clang/lib/Parse/ParseExpr.cpp
index f76e2297337..8a6bcb3b37b 100644
--- a/clang/lib/Parse/ParseExpr.cpp
+++ b/clang/lib/Parse/ParseExpr.cpp
@@ -516,7 +516,7 @@ class CastExpressionIdValidator : public CorrectionCandidateCallback {
/// \p isAddressOfOperand exists because an id-expression that is the operand
/// of address-of gets special treatment due to member pointers. NotCastExpr
/// is set to true if the token is not the start of a cast-expression, and no
-/// diagnostic is emitted in this case.
+/// diagnostic is emitted in this case and no tokens are consumed.
///
/// \verbatim
/// cast-expression: [C99 6.5.4]
@@ -1020,7 +1020,7 @@ ExprResult Parser::ParseCastExpression(bool isUnaryExpression,
// determine whether the '++' is prefix or postfix.
Res = ParseCastExpression(!getLangOpts().CPlusPlus,
/*isAddressOfOperand*/false, NotCastExpr,
- isTypeCast);
+ NotTypeCast);
if (NotCastExpr) {
// If we return with NotCastExpr = true, we must not consume any tokens,
// so put the token back where we found it.
diff --git a/clang/test/Parser/cxx-ambig-paren-expr.cpp b/clang/test/Parser/cxx-ambig-paren-expr.cpp
index 1535b009725..cc509f7b059 100644
--- a/clang/test/Parser/cxx-ambig-paren-expr.cpp
+++ b/clang/test/Parser/cxx-ambig-paren-expr.cpp
@@ -28,6 +28,7 @@ void f() {
int &postfix_incr = (X()[3])++;
(X())++ ++; // ok, not a C-style cast
(X())++ ++X(); // expected-error {{C-style cast from 'int' to 'X ()'}}
+ int q = (int)++(x);
}
// Make sure we do tentative parsing correctly in conditions.
OpenPOWER on IntegriCloud