From 40eabdd008c04a605999f518e47691fa79e7241a Mon Sep 17 00:00:00 2001 From: Roberto Raggi Date: Wed, 4 Feb 2009 11:45:17 +0100 Subject: [PATCH] Improved parsing of objc message expressions. --- src/shared/cplusplus/Parser.cpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/shared/cplusplus/Parser.cpp b/src/shared/cplusplus/Parser.cpp index 0452b38ce18..4dfbcb995a2 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; }