summaryrefslogtreecommitdiff
path: root/src/shared/cplusplus/Parser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/shared/cplusplus/Parser.cpp')
-rw-r--r--src/shared/cplusplus/Parser.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/shared/cplusplus/Parser.cpp b/src/shared/cplusplus/Parser.cpp
index 3ed4839928..654fa26c7c 100644
--- a/src/shared/cplusplus/Parser.cpp
+++ b/src/shared/cplusplus/Parser.cpp
@@ -3076,7 +3076,12 @@ bool Parser::parseObjCSelectorArg(ObjCSelectorArgumentAST *&selNode, ObjCMessage
selNode->colon_token = consumeToken();
argNode = new (_pool) ObjCMessageArgumentAST;
- parseAssignmentExpression(argNode->parameter_value_expression);
+ ExpressionAST *expr = argNode->parameter_value_expression;
+ unsigned expressionStart = cursor();
+ if (parseAssignmentExpression(expr) && LA() == T_COLON && expr->asCastExpression()) {
+ rewind(expressionStart);
+ parseUnaryExpression(expr);
+ }
return true;
}