From d358c89f09d41e44a9ab23efd7d18b3fda5a70ce Mon Sep 17 00:00:00 2001 From: Roberto Raggi <roberto.raggi@nokia.com> Date: Tue, 10 Nov 2009 12:43:15 +0100 Subject: [PATCH] Removed ObjCMessageArgumentListAST Done with Erik Verbruggen --- src/shared/cplusplus/AST.cpp | 19 ------------------- src/shared/cplusplus/AST.h | 16 ---------------- src/shared/cplusplus/ASTVisit.cpp | 8 -------- src/shared/cplusplus/ASTVisitor.h | 7 +++++++ src/shared/cplusplus/ASTfwd.h | 2 +- src/shared/cplusplus/CheckExpression.cpp | 2 +- src/shared/cplusplus/Parser.cpp | 6 +++--- 7 files changed, 12 insertions(+), 48 deletions(-) diff --git a/src/shared/cplusplus/AST.cpp b/src/shared/cplusplus/AST.cpp index 4cefd9a0129..fe28c1d27d8 100644 --- a/src/shared/cplusplus/AST.cpp +++ b/src/shared/cplusplus/AST.cpp @@ -1959,25 +1959,6 @@ unsigned ObjCMessageExpressionAST::lastToken() const return lbracket_token + 1; } -unsigned ObjCMessageArgumentListAST::firstToken() const -{ - if (arg) - return arg->firstToken(); - // ### assert? - return 0; -} - -unsigned ObjCMessageArgumentListAST::lastToken() const -{ - for (const ObjCMessageArgumentListAST *it = this; it; it = it->next) { - if (! it->next && it->arg) { - return it->arg->lastToken(); - } - } - // ### assert? - return 0; -} - unsigned ObjCMessageArgumentAST::firstToken() const { return parameter_value_expression->firstToken(); diff --git a/src/shared/cplusplus/AST.h b/src/shared/cplusplus/AST.h index 084913fc91f..129c132f94c 100644 --- a/src/shared/cplusplus/AST.h +++ b/src/shared/cplusplus/AST.h @@ -2211,22 +2211,6 @@ protected: virtual void accept0(ASTVisitor *visitor); }; -class CPLUSPLUS_EXPORT ObjCMessageArgumentListAST: public AST -{ -public: - ObjCMessageArgumentAST *arg; - ObjCMessageArgumentListAST *next; - -public: - virtual ObjCMessageArgumentListAST *asObjCMessageArgumentList() { return this; } - - virtual unsigned firstToken() const; - virtual unsigned lastToken() const; - -protected: - virtual void accept0(ASTVisitor *visitor); -}; - class CPLUSPLUS_EXPORT ObjCMessageExpressionAST: public ExpressionAST { public: diff --git a/src/shared/cplusplus/ASTVisit.cpp b/src/shared/cplusplus/ASTVisit.cpp index 8095946f0a2..2f60cdf4616 100644 --- a/src/shared/cplusplus/ASTVisit.cpp +++ b/src/shared/cplusplus/ASTVisit.cpp @@ -958,14 +958,6 @@ void ObjCMessageArgumentAST::accept0(ASTVisitor *visitor) visitor->endVisit(this); } -void ObjCMessageArgumentListAST::accept0(ASTVisitor *visitor) -{ - if (visitor->visit(this)) { - accept(arg, visitor); - } - visitor->endVisit(this); -} - void ObjCMessageExpressionAST::accept0(ASTVisitor *visitor) { if (visitor->visit(this)) { diff --git a/src/shared/cplusplus/ASTVisitor.h b/src/shared/cplusplus/ASTVisitor.h index fff0c9f7d52..ddb4886e78e 100644 --- a/src/shared/cplusplus/ASTVisitor.h +++ b/src/shared/cplusplus/ASTVisitor.h @@ -91,6 +91,13 @@ public: void accept(AST *ast); + template <typename _Tp> + void accept(List<_Tp> *it) + { + for (; it; it = it->next) + accept(it->value); + } + virtual bool preVisit(AST *) { return true; } virtual void postVisit(AST *) {} diff --git a/src/shared/cplusplus/ASTfwd.h b/src/shared/cplusplus/ASTfwd.h index c562384bf9a..119758e63b5 100644 --- a/src/shared/cplusplus/ASTfwd.h +++ b/src/shared/cplusplus/ASTfwd.h @@ -132,7 +132,6 @@ class ObjCInstanceVariablesDeclarationAST; class ObjCMessageArgumentAST; class ObjCMessageArgumentDeclarationAST; class ObjCMessageArgumentDeclarationListAST; -class ObjCMessageArgumentListAST; class ObjCMessageExpressionAST; class ObjCMethodDeclarationAST; class ObjCMethodPrototypeAST; @@ -201,6 +200,7 @@ typedef List<DeclarationAST *> DeclarationListAST; typedef List<StatementAST *> StatementListAST; typedef List<DeclaratorAST *> DeclaratorListAST; typedef List<NameAST *> ObjCIdentifierListAST; +typedef List<ObjCMessageArgumentAST *> ObjCMessageArgumentListAST; typedef ExpressionListAST TemplateArgumentListAST; diff --git a/src/shared/cplusplus/CheckExpression.cpp b/src/shared/cplusplus/CheckExpression.cpp index 3703577ed0e..14ced9509a6 100644 --- a/src/shared/cplusplus/CheckExpression.cpp +++ b/src/shared/cplusplus/CheckExpression.cpp @@ -369,7 +369,7 @@ bool CheckExpression::visit(ObjCMessageExpressionAST *ast) semantic()->check(ast->receiver_expression, _scope); (void) semantic()->check(ast->selector, _scope); - accept(ast->argument_list); + accept(ast->argument_list); // ### not necessary. return false; } diff --git a/src/shared/cplusplus/Parser.cpp b/src/shared/cplusplus/Parser.cpp index 8cfa100c6ee..06a938763a6 100644 --- a/src/shared/cplusplus/Parser.cpp +++ b/src/shared/cplusplus/Parser.cpp @@ -3257,7 +3257,7 @@ bool Parser::parseObjCMessageArguments(ObjCSelectorAST *&selNode, ObjCMessageArg ObjCSelectorArgumentListAST *lastSelector = selAst; ObjCMessageArgumentListAST *argAst = new (_pool) ObjCMessageArgumentListAST; - argAst->arg = messageArgument; + argAst->value = messageArgument; ObjCMessageArgumentListAST *lastArgument = argAst; while (parseObjCSelectorArg(selectorArgument, messageArgument)) { @@ -3268,11 +3268,11 @@ bool Parser::parseObjCMessageArguments(ObjCSelectorAST *&selNode, ObjCMessageArg lastArgument->next = new (_pool) ObjCMessageArgumentListAST; lastArgument = lastArgument->next; - lastArgument->arg = messageArgument; + lastArgument->value = messageArgument; } if (LA() == T_COMMA) { - ExpressionAST **lastExpression = &(lastArgument->arg->parameter_value_expression); + ExpressionAST **lastExpression = &(lastArgument->value->parameter_value_expression); while (LA() == T_COMMA) { BinaryExpressionAST *binaryExpression = new (_pool) BinaryExpressionAST; -- GitLab