diff options
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/Parse/ParseExpr.cpp | 4 | ||||
-rw-r--r-- | clang/lib/Parse/ParseTemplate.cpp | 2 |
2 files changed, 3 insertions, 3 deletions
diff --git a/clang/lib/Parse/ParseExpr.cpp b/clang/lib/Parse/ParseExpr.cpp index fada2e319c5..d2e87524689 100644 --- a/clang/lib/Parse/ParseExpr.cpp +++ b/clang/lib/Parse/ParseExpr.cpp @@ -249,7 +249,7 @@ Parser::ParseAssignmentExprWithObjCMessageExprStart(SourceLocation LBracLoc, } -ExprResult Parser::ParseConstantExpression() { +ExprResult Parser::ParseConstantExpression(TypeCastState isTypeCast) { // C++03 [basic.def.odr]p2: // An expression is potentially evaluated unless it appears where an // integral constant expression is required (see 5.19) [...]. @@ -257,7 +257,7 @@ ExprResult Parser::ParseConstantExpression() { EnterExpressionEvaluationContext Unevaluated(Actions, Sema::ConstantEvaluated); - ExprResult LHS(ParseCastExpression(false)); + ExprResult LHS(ParseCastExpression(false, false, isTypeCast)); return ParseRHSOfBinaryExpression(LHS, prec::Conditional); } diff --git a/clang/lib/Parse/ParseTemplate.cpp b/clang/lib/Parse/ParseTemplate.cpp index a30ef96d63e..d4a0502859d 100644 --- a/clang/lib/Parse/ParseTemplate.cpp +++ b/clang/lib/Parse/ParseTemplate.cpp @@ -1037,7 +1037,7 @@ ParsedTemplateArgument Parser::ParseTemplateArgument() { // Parse a non-type template argument. SourceLocation Loc = Tok.getLocation(); - ExprResult ExprArg = ParseConstantExpression(); + ExprResult ExprArg = ParseConstantExpression(MaybeTypeCast); if (ExprArg.isInvalid() || !ExprArg.get()) return ParsedTemplateArgument(); |