summaryrefslogtreecommitdiff
path: root/src/shared/cplusplus/Parser.cpp
diff options
context:
space:
mode:
authorRoberto Raggi <roberto.raggi@trolltech.com>2009-02-04 11:45:17 +0100
committerRoberto Raggi <qtc-committer@nokia.com>2009-02-05 14:30:24 +0100
commit40eabdd008c04a605999f518e47691fa79e7241a (patch)
tree64abde1b0abea661606270dceebf800572a12691 /src/shared/cplusplus/Parser.cpp
parent56b48c2362670189de95c3a992846f6671c46049 (diff)
downloadqt-creator-40eabdd008c04a605999f518e47691fa79e7241a.tar.gz
Improved parsing of objc message expressions.
Diffstat (limited to 'src/shared/cplusplus/Parser.cpp')
-rw-r--r--src/shared/cplusplus/Parser.cpp18
1 files changed, 11 insertions, 7 deletions
diff --git a/src/shared/cplusplus/Parser.cpp b/src/shared/cplusplus/Parser.cpp
index 0452b38ce1..4dfbcb995a 100644
--- a/src/shared/cplusplus/Parser.cpp
+++ b/src/shared/cplusplus/Parser.cpp
@@ -2556,6 +2556,7 @@ bool Parser::parsePrimaryExpression(ExpressionAST *&node)
case T_SLOT:
return parseQtMethod(node);
+ case T_LBRACKET:
case T_AT_STRING_LITERAL:
case T_AT_ENCODE:
case T_AT_PROTOCOL:
@@ -2680,16 +2681,19 @@ bool Parser::parseObjCMessageArguments()
unsigned start = cursor();
if (parseObjCSelectorArgs()) {
- while (LA() == T_COMMA) {
- consumeToken(); // skip T_COMMA
- ExpressionAST *expression = 0;
- parseAssignmentExpression(expression);
+ while (parseObjCSelectorArgs()) {
+ // accept the selector args.
}
- return true;
+ } else {
+ rewind(start);
+ parseObjCSelector();
}
- rewind(start);
- parseObjCSelector();
+ while (LA() == T_COMMA) {
+ consumeToken(); // skip T_COMMA
+ ExpressionAST *expression = 0;
+ parseAssignmentExpression(expression);
+ }
return true;
}