summaryrefslogtreecommitdiff
path: root/src/shared/cplusplus/Parser.cpp
diff options
context:
space:
mode:
authorErik Verbruggen <erik.verbruggen@nokia.com>2009-08-10 12:44:52 +0200
committerErik Verbruggen <erik.verbruggen@nokia.com>2009-08-10 12:44:52 +0200
commitffccb612af75d72ef851af54c3cd1d8523950443 (patch)
treeb9a2f6debda85b3f91c6849c9e5f92692032e333 /src/shared/cplusplus/Parser.cpp
parent0ab8f1ed462d9202a3d925c52448b35490ac658c (diff)
downloadqt-creator-ffccb612af75d72ef851af54c3cd1d8523950443.tar.gz
Parsing fix for casts in ObjC message expressions.
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;
}