From ca34b0ca1c57a0ec0f8f61ad1b0dd4f8bfc9b554 Mon Sep 17 00:00:00 2001 From: Erik Verbruggen <erik.verbruggen@nokia.com> Date: Wed, 5 Aug 2009 17:14:08 +0200 Subject: [PATCH] Cleaned the ObjC AST up. --- src/shared/cplusplus/AST.cpp | 128 +++++----------------- src/shared/cplusplus/AST.h | 115 ++++--------------- src/shared/cplusplus/ASTClone.cpp | 69 +++--------- src/shared/cplusplus/ASTVisit.cpp | 51 ++------- src/shared/cplusplus/ASTVisitor.h | 14 +-- src/shared/cplusplus/ASTfwd.h | 7 +- src/shared/cplusplus/CheckDeclaration.cpp | 12 +- src/shared/cplusplus/CheckDeclaration.h | 4 +- src/shared/cplusplus/Parser.cpp | 103 ++++++++++------- src/shared/cplusplus/Parser.h | 2 +- src/shared/cplusplus/Symbols.cpp | 36 +----- src/shared/cplusplus/Symbols.h | 24 +--- src/shared/cplusplus/Type.cpp | 6 - src/shared/cplusplus/Type.h | 6 - src/shared/cplusplus/TypeVisitor.h | 2 - 15 files changed, 155 insertions(+), 424 deletions(-) diff --git a/src/shared/cplusplus/AST.cpp b/src/shared/cplusplus/AST.cpp index 266d49c999a..3f417543dc8 100644 --- a/src/shared/cplusplus/AST.cpp +++ b/src/shared/cplusplus/AST.cpp @@ -1924,14 +1924,14 @@ unsigned IdentifierListAST::lastToken() const } -unsigned ObjCClassDeclarationAST::firstToken() const +unsigned ObjCClassForwardDeclarationAST::firstToken() const { if (attributes) return attributes->firstToken(); return class_token; } -unsigned ObjCClassDeclarationAST::lastToken() const +unsigned ObjCClassForwardDeclarationAST::lastToken() const { if (semicolon_token) return semicolon_token + 1; @@ -1941,22 +1941,17 @@ unsigned ObjCClassDeclarationAST::lastToken() const return it->name->lastToken(); } - for (SpecifierAST *it = attributes; it; it = it->next) { - if (! it->next) - return it->lastToken(); - } - return class_token + 1; } -unsigned ObjCProtocolDeclarationAST::firstToken() const +unsigned ObjCProtocolForwardDeclarationAST::firstToken() const { if (attributes) return attributes->firstToken(); return protocol_token; } -unsigned ObjCProtocolDeclarationAST::lastToken() const +unsigned ObjCProtocolForwardDeclarationAST::lastToken() const { if (semicolon_token) return semicolon_token + 1; @@ -1966,69 +1961,52 @@ unsigned ObjCProtocolDeclarationAST::lastToken() const return it->name->lastToken(); } - for (SpecifierAST *it = attributes; it; it = it->next) { - if (! it->next) - return it->lastToken(); - } - return protocol_token + 1; } -unsigned ObjCClassInterfaceDefinitionAST::firstToken() const +unsigned ObjCClassDeclarationAST::firstToken() const { if (attributes) return attributes->firstToken(); - return interface_token; + + if (interface_token) + return interface_token; + else + return implementation_token; } -unsigned ObjCClassInterfaceDefinitionAST::lastToken() const +unsigned ObjCClassDeclarationAST::lastToken() const { if (end_token) return end_token + 1; if (member_declarations) return member_declarations->lastToken(); if (inst_vars_decl) return inst_vars_decl->lastToken(); - if (superclass_identifier_token) return superclass_identifier_token + 1; + if (protocol_refs) + return protocol_refs->lastToken(); + if (superclass) + return superclass->lastToken(); if (colon_token) return colon_token + 1; + if (rparen_token) + return rparen_token + 1; + if (category_name) + return category_name->lastToken(); + if (lparen_token) + return lparen_token + 1; if (class_name) return class_name->lastToken(); - for (SpecifierAST *it = attributes; it; it = it->next) { - if (! it->next) - return it->lastToken(); - } - - return interface_token + 1; -} - -unsigned ObjCCategoryInterfaceDeclarationAST::firstToken() const -{ - if (attributes) - return attributes->firstToken(); + if (interface_token) + return interface_token + 1; else - return interface_token; + return implementation_token + 1; } -unsigned ObjCCategoryInterfaceDeclarationAST::lastToken() const -{ - if (end_token) - return end_token + 1; - - if (member_declarations) - return member_declarations->lastToken(); - - if (rparen_token) return rparen_token + 1; - if (category_identifier_token) return category_identifier_token + 1; - if (lparen_token) return lparen_token + 1; - if (class_identifier_token) return class_identifier_token + 1; - return interface_token + 1; -} - -unsigned ObjCProtocolDefinitionAST::firstToken() const +unsigned ObjCProtocolDeclarationAST::firstToken() const { if (attributes) return attributes->firstToken(); return protocol_token; } -unsigned ObjCProtocolDefinitionAST::lastToken() const +unsigned ObjCProtocolDeclarationAST::lastToken() const { if (end_token) return end_token + 1; @@ -2403,60 +2381,6 @@ unsigned ObjCMethodDeclarationAST::lastToken() const return method_prototype->lastToken(); } -unsigned ObjCClassImplementationAST::firstToken() const -{ - return implementation_token; -} - -unsigned ObjCClassImplementationAST::lastToken() const -{ - if (end_token) - return end_token + 1; - - for (DeclarationListAST *it = declarations; it; it = it->next) { - if (! it->next) - return it->lastToken(); - } - - if (inst_vars_decl) - return inst_vars_decl->lastToken(); - if (super_class_identifier) - return super_class_identifier + 1; - if (colon_token) - return colon_token + 1; - if (class_identifier) - return class_identifier + 1; - - return implementation_token + 1; -} - -unsigned ObjCCategoryImplementationAST::firstToken() const -{ - return implementation_token; -} - -unsigned ObjCCategoryImplementationAST::lastToken() const -{ - if (end_token) - return end_token + 1; - - for (DeclarationListAST *it = declarations; it; it = it->next) { - if (! it->next) - return it->lastToken(); - } - - if (rparen_token) - return rparen_token + 1; - if (category_name_token) - return category_name_token + 1; - if (lparen_token) - return lparen_token + 1; - if (class_identifier) - return class_identifier + 1; - - return implementation_token + 1; -} - unsigned ObjCSynthesizedPropertyAST::firstToken() const { if (property_identifier) diff --git a/src/shared/cplusplus/AST.h b/src/shared/cplusplus/AST.h index f7e483f8818..48e2ea934ca 100644 --- a/src/shared/cplusplus/AST.h +++ b/src/shared/cplusplus/AST.h @@ -197,9 +197,10 @@ public: virtual WhileStatementAST *asWhileStatement() { return 0; } virtual IdentifierListAST *asIdentifierList() { return 0; } + virtual ObjCClassForwardDeclarationAST *asObjCClassForwarDeclaration() { return 0; } virtual ObjCClassDeclarationAST *asObjCClassDeclaration() { return 0; } + virtual ObjCProtocolForwardDeclarationAST *asObjCProtocolForwardDeclaration() { return 0; } virtual ObjCProtocolDeclarationAST *asObjCProtocolDeclaration() { return 0; } - virtual ObjCProtocolDefinitionAST *asObjCProtocolDefinition() { return 0; } virtual ObjCProtocolRefsAST *asObjCProtocolRefs() { return 0; } virtual ObjCMessageArgumentAST *asObjCMessageArgument() { return 0; } virtual ObjCMessageArgumentListAST *asObjCMessageArgumentList() { return 0; } @@ -222,8 +223,6 @@ public: virtual ObjCMessageArgumentDeclarationListAST *asObjCMessageArgumentDeclarationList() { return 0; } virtual ObjCMethodPrototypeAST *asObjCMethodPrototype() { return 0; } virtual ObjCMethodDeclarationAST *asObjCMethodDeclaration() { return 0; } - virtual ObjCClassImplementationAST *asObjCClassImplementation() { return 0; } - virtual ObjCCategoryImplementationAST *asObjCCategoryImplementation() { return 0; } virtual ObjCSynthesizedPropertyAST *asObjCSynthesizedProperty() { return 0; } virtual ObjCSynthesizedPropertyListAST *asObjCSynthesizedPropertyList() { return 0; } virtual ObjCSynthesizedPropertiesDeclarationAST *asObjCSynthesizedPropertiesDeclaration() { return 0; } @@ -2474,7 +2473,7 @@ protected: class CPLUSPLUS_EXPORT IdentifierListAST: public AST { public: - SimpleNameAST *name; + NameAST *name; unsigned comma_token; IdentifierListAST *next; @@ -2491,7 +2490,7 @@ protected: virtual void accept0(ASTVisitor *visitor); }; -class CPLUSPLUS_EXPORT ObjCClassDeclarationAST: public DeclarationAST +class CPLUSPLUS_EXPORT ObjCClassForwardDeclarationAST: public DeclarationAST { public: SpecifierAST *attributes; @@ -2503,26 +2502,30 @@ public: // annotations List<ObjCForwardClassDeclaration *> *symbols; public: - virtual ObjCClassDeclarationAST *asObjCClassDeclaration() + virtual ObjCClassForwardDeclarationAST *asObjCClassForwardDeclaration() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; - virtual ObjCClassDeclarationAST *clone(MemoryPool *pool) const; + virtual ObjCClassForwardDeclarationAST *clone(MemoryPool *pool) const; protected: virtual void accept0(ASTVisitor *visitor); }; -class CPLUSPLUS_EXPORT ObjCClassInterfaceDefinitionAST: public DeclarationAST +class CPLUSPLUS_EXPORT ObjCClassDeclarationAST: public DeclarationAST { public: SpecifierAST *attributes; unsigned interface_token; - SimpleNameAST *class_name; + unsigned implementation_token; + NameAST *class_name; + unsigned lparen_token; + NameAST *category_name; + unsigned rparen_token; unsigned colon_token; - unsigned superclass_identifier_token; + NameAST *superclass; ObjCProtocolRefsAST *protocol_refs; ObjCInstanceVariablesDeclarationAST *inst_vars_decl; DeclarationListAST *member_declarations; @@ -2532,45 +2535,19 @@ public: // annotations ObjCClass *symbol; public: - virtual ObjCClassInterfaceDefinitionAST *asObjCClassInterfaceDefinition() - { return this; } - - virtual unsigned firstToken() const; - virtual unsigned lastToken() const; - - virtual ObjCClassInterfaceDefinitionAST *clone(MemoryPool *pool) const; - -protected: - virtual void accept0(ASTVisitor *visitor); -}; - -class CPLUSPLUS_EXPORT ObjCCategoryInterfaceDeclarationAST: public DeclarationAST -{ -public: - SpecifierAST *attributes; - unsigned interface_token; - unsigned class_identifier_token; - unsigned lparen_token; - unsigned category_identifier_token; - unsigned rparen_token; - ObjCProtocolRefsAST *protocol_refs; - DeclarationListAST *member_declarations; - unsigned end_token; - -public: - virtual ObjCCategoryInterfaceDeclarationAST *asObjCCategoryInterfaceDeclaration() + virtual ObjCClassDeclarationAST *asObjCClassDeclaration() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; - virtual ObjCCategoryInterfaceDeclarationAST *clone(MemoryPool *pool) const; + virtual ObjCClassDeclarationAST *clone(MemoryPool *pool) const; protected: virtual void accept0(ASTVisitor *visitor); }; -class CPLUSPLUS_EXPORT ObjCProtocolDeclarationAST: public DeclarationAST +class CPLUSPLUS_EXPORT ObjCProtocolForwardDeclarationAST: public DeclarationAST { public: SpecifierAST *attributes; @@ -2582,24 +2559,24 @@ public: // annotations List<ObjCForwardProtocolDeclaration *> *symbols; public: - virtual ObjCProtocolDeclarationAST *asObjCProtocolDeclaration() + virtual ObjCProtocolForwardDeclarationAST *asObjCProtocolForwardDeclaration() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; - virtual ObjCProtocolDeclarationAST *clone(MemoryPool *pool) const; + virtual ObjCProtocolForwardDeclarationAST *clone(MemoryPool *pool) const; protected: virtual void accept0(ASTVisitor *visitor); }; -class CPLUSPLUS_EXPORT ObjCProtocolDefinitionAST: public DeclarationAST +class CPLUSPLUS_EXPORT ObjCProtocolDeclarationAST: public DeclarationAST { public: SpecifierAST *attributes; unsigned protocol_token; - SimpleNameAST *name; + NameAST *name; ObjCProtocolRefsAST *protocol_refs; DeclarationListAST *member_declarations; unsigned end_token; @@ -2608,13 +2585,13 @@ public: // annotations ObjCProtocol *symbol; public: - virtual ObjCProtocolDefinitionAST *asObjCProtocolDefinition() + virtual ObjCProtocolDeclarationAST *asObjCProtocolDeclaration() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; - virtual ObjCProtocolDefinitionAST *clone(MemoryPool *pool) const; + virtual ObjCProtocolDeclarationAST *clone(MemoryPool *pool) const; protected: virtual void accept0(ASTVisitor *visitor); @@ -3055,54 +3032,6 @@ protected: virtual void accept0(ASTVisitor *visitor); }; -class CPLUSPLUS_EXPORT ObjCClassImplementationAST: public DeclarationAST -{ -public: - unsigned implementation_token; - unsigned class_identifier; - unsigned colon_token; - unsigned super_class_identifier; - ObjCInstanceVariablesDeclarationAST *inst_vars_decl; - DeclarationListAST *declarations; - unsigned end_token; - -public: - virtual ObjCClassImplementationAST *asObjCClassImplementation() - { return this; } - - virtual unsigned firstToken() const; - virtual unsigned lastToken() const; - - virtual ObjCClassImplementationAST *clone(MemoryPool *pool) const; - -protected: - virtual void accept0(ASTVisitor *visitor); -}; - -class CPLUSPLUS_EXPORT ObjCCategoryImplementationAST: public DeclarationAST -{ -public: - unsigned implementation_token; - unsigned class_identifier; - unsigned lparen_token; - unsigned category_name_token; - unsigned rparen_token; - DeclarationListAST *declarations; - unsigned end_token; - -public: - virtual ObjCCategoryImplementationAST *asObjCCategoryImplementation() - { return this; } - - virtual unsigned firstToken() const; - virtual unsigned lastToken() const; - - virtual ObjCCategoryImplementationAST *clone(MemoryPool *pool) const; - -protected: - virtual void accept0(ASTVisitor *visitor); -}; - class CPLUSPLUS_EXPORT ObjCSynthesizedPropertyAST: public AST { public: diff --git a/src/shared/cplusplus/ASTClone.cpp b/src/shared/cplusplus/ASTClone.cpp index de0be8287da..0bc5caa9ee4 100644 --- a/src/shared/cplusplus/ASTClone.cpp +++ b/src/shared/cplusplus/ASTClone.cpp @@ -1213,11 +1213,11 @@ IdentifierListAST *IdentifierListAST::clone(MemoryPool *pool) const return ast; } -ObjCClassDeclarationAST *ObjCClassDeclarationAST::clone(MemoryPool *pool) const +ObjCClassForwardDeclarationAST *ObjCClassForwardDeclarationAST::clone(MemoryPool *pool) const { - ObjCClassDeclarationAST *ast = new (pool) ObjCClassDeclarationAST; + ObjCClassForwardDeclarationAST *ast = new (pool) ObjCClassForwardDeclarationAST; // copy DeclarationAST - // copy ObjCClassDeclarationAST + // copy ObjCClassForwardDeclarationAST if (attributes) ast->attributes = attributes->clone(pool); ast->class_token = class_token; if (identifier_list) ast->identifier_list = identifier_list->clone(pool); @@ -1225,16 +1225,20 @@ ObjCClassDeclarationAST *ObjCClassDeclarationAST::clone(MemoryPool *pool) const return ast; } -ObjCClassInterfaceDefinitionAST *ObjCClassInterfaceDefinitionAST::clone(MemoryPool *pool) const +ObjCClassDeclarationAST *ObjCClassDeclarationAST::clone(MemoryPool *pool) const { - ObjCClassInterfaceDefinitionAST *ast = new (pool) ObjCClassInterfaceDefinitionAST; + ObjCClassDeclarationAST *ast = new (pool) ObjCClassDeclarationAST; // copy DeclarationAST - // copy ObjCClassInterfaceDeclarationAST + // copy ObjCClassDeclarationAST if (attributes) ast->attributes = attributes->clone(pool); ast->interface_token = interface_token; + ast->implementation_token = implementation_token; if (class_name) ast->class_name = class_name->clone(pool); + ast->lparen_token = lparen_token; + if (category_name) ast->category_name = category_name->clone(pool); + ast->rparen_token = rparen_token; ast->colon_token = colon_token; - ast->superclass_identifier_token = superclass_identifier_token; + if (superclass) ast->superclass = superclass->clone(pool); if (protocol_refs) ast->protocol_refs = protocol_refs->clone(pool); if (inst_vars_decl) ast->inst_vars_decl = inst_vars_decl->clone(pool); if (member_declarations) ast->member_declarations = member_declarations->clone(pool); @@ -1242,26 +1246,9 @@ ObjCClassInterfaceDefinitionAST *ObjCClassInterfaceDefinitionAST::clone(MemoryPo return ast; } -ObjCCategoryInterfaceDeclarationAST *ObjCCategoryInterfaceDeclarationAST::clone(MemoryPool *pool) const +ObjCProtocolForwardDeclarationAST *ObjCProtocolForwardDeclarationAST::clone(MemoryPool *pool) const { - ObjCCategoryInterfaceDeclarationAST *ast = new (pool) ObjCCategoryInterfaceDeclarationAST; - // copy DeclarationAST - // copy ObjCCategoryInterfaceDeclarationAST - if (attributes) ast->attributes = attributes->clone(pool); - ast->interface_token = interface_token; - ast->class_identifier_token = class_identifier_token; - if (protocol_refs) ast->protocol_refs = protocol_refs->clone(pool); - ast->lparen_token = lparen_token; - ast->category_identifier_token = category_identifier_token; - ast->rparen_token = rparen_token; - if (member_declarations) ast->member_declarations = member_declarations->clone(pool); - ast->end_token = end_token; - return ast; -} - -ObjCProtocolDeclarationAST *ObjCProtocolDeclarationAST::clone(MemoryPool *pool) const -{ - ObjCProtocolDeclarationAST *ast = new (pool) ObjCProtocolDeclarationAST; + ObjCProtocolForwardDeclarationAST *ast = new (pool) ObjCProtocolForwardDeclarationAST; if (attributes) ast->attributes = attributes->clone(pool); ast->protocol_token = protocol_token; if (identifier_list) ast->identifier_list = identifier_list; @@ -1269,9 +1256,9 @@ ObjCProtocolDeclarationAST *ObjCProtocolDeclarationAST::clone(MemoryPool *pool) return ast; } -ObjCProtocolDefinitionAST *ObjCProtocolDefinitionAST::clone(MemoryPool *pool) const +ObjCProtocolDeclarationAST *ObjCProtocolDeclarationAST::clone(MemoryPool *pool) const { - ObjCProtocolDefinitionAST *ast = new (pool) ObjCProtocolDefinitionAST; + ObjCProtocolDeclarationAST *ast = new (pool) ObjCProtocolDeclarationAST; if (attributes) ast->attributes = attributes->clone(pool); ast->protocol_token = protocol_token; if (name) ast->name = name->clone(pool); @@ -1466,32 +1453,6 @@ ObjCMethodDeclarationAST *ObjCMethodDeclarationAST::clone(MemoryPool *pool) cons return ast; } -ObjCClassImplementationAST *ObjCClassImplementationAST::clone(MemoryPool *pool) const -{ - ObjCClassImplementationAST *ast = new (pool) ObjCClassImplementationAST; - ast->implementation_token = implementation_token; - ast->class_identifier = class_identifier; - ast->colon_token = colon_token; - ast->super_class_identifier = super_class_identifier; - if (inst_vars_decl) ast->inst_vars_decl = inst_vars_decl->clone(pool); - if (declarations) ast->declarations = declarations->clone(pool); - ast->end_token = end_token; - return ast; -} - -ObjCCategoryImplementationAST *ObjCCategoryImplementationAST::clone(MemoryPool *pool) const -{ - ObjCCategoryImplementationAST *ast = new (pool) ObjCCategoryImplementationAST; - ast->implementation_token = implementation_token; - ast->class_identifier = class_identifier; - ast->lparen_token = lparen_token; - ast->category_name_token = category_name_token; - ast->rparen_token = rparen_token; - if (declarations) ast->declarations = declarations->clone(pool); - ast->end_token = end_token; - return ast; -} - ObjCSynthesizedPropertyAST *ObjCSynthesizedPropertyAST::clone(MemoryPool *pool) const { ObjCSynthesizedPropertyAST *ast = new (pool) ObjCSynthesizedPropertyAST; diff --git a/src/shared/cplusplus/ASTVisit.cpp b/src/shared/cplusplus/ASTVisit.cpp index 2d4b4c2cc2b..67fa442b275 100644 --- a/src/shared/cplusplus/ASTVisit.cpp +++ b/src/shared/cplusplus/ASTVisit.cpp @@ -1127,10 +1127,10 @@ void IdentifierListAST::accept0(ASTVisitor *visitor) visitor->endVisit(this); } -void ObjCClassDeclarationAST::accept0(ASTVisitor *visitor) +void ObjCClassForwardDeclarationAST::accept0(ASTVisitor *visitor) { if (visitor->visit(this)) { - // visit ObjCClassDeclarationAST + // visit ObjCClassForwardDeclarationAST for (SpecifierAST *it = attributes; it; it = it->next) accept(it, visitor); for (IdentifierListAST *it = identifier_list; it; it = it->next) @@ -1140,13 +1140,15 @@ void ObjCClassDeclarationAST::accept0(ASTVisitor *visitor) visitor->endVisit(this); } -void ObjCClassInterfaceDefinitionAST::accept0(ASTVisitor *visitor) +void ObjCClassDeclarationAST::accept0(ASTVisitor *visitor) { if (visitor->visit(this)) { // visit ObjCClassInterfaceDefinitionAST for (SpecifierAST *it = attributes; it; it = it->next) accept(it, visitor); accept(class_name, visitor); + accept(category_name, visitor); + accept(superclass, visitor); accept(protocol_refs, visitor); accept(inst_vars_decl, visitor); for (DeclarationListAST *it = member_declarations; it; it = it->next) @@ -1156,21 +1158,7 @@ void ObjCClassInterfaceDefinitionAST::accept0(ASTVisitor *visitor) visitor->endVisit(this); } -void ObjCCategoryInterfaceDeclarationAST::accept0(ASTVisitor *visitor) -{ - if (visitor->visit(this)) { - // visit ObjCCategoryInterfaceDeclarationAST - for (SpecifierAST *it = attributes; it; it = it->next) - accept(it, visitor); - accept(protocol_refs, visitor); - for (DeclarationListAST *it = member_declarations; it; it = it->next) - accept(it, visitor); - // visit DeclarationAST - } - visitor->endVisit(this); -} - -void ObjCProtocolDeclarationAST::accept0(ASTVisitor *visitor) +void ObjCProtocolForwardDeclarationAST::accept0(ASTVisitor *visitor) { if (visitor->visit(this)) { // visit ObjCProtocolDeclarationAST @@ -1183,10 +1171,10 @@ void ObjCProtocolDeclarationAST::accept0(ASTVisitor *visitor) visitor->endVisit(this); } -void ObjCProtocolDefinitionAST::accept0(ASTVisitor *visitor) +void ObjCProtocolDeclarationAST::accept0(ASTVisitor *visitor) { if (visitor->visit(this)) { - // visit ObjCProtocolDefinitionAST + // visit ObjCProtocolDeclarationAST for (SpecifierAST *it = attributes; it; it = it->next) accept(it, visitor); accept(name, visitor); @@ -1412,29 +1400,6 @@ void ObjCMethodDeclarationAST::accept0(ASTVisitor *visitor) visitor->endVisit(this); } -void ObjCClassImplementationAST::accept0(ASTVisitor *visitor) -{ - if (visitor->visit(this)) { - // visit ObjCClassImplementationAST - accept(inst_vars_decl, visitor); - for (DeclarationListAST *it = declarations; it; it = it->next) - accept(it, visitor); - // visit DeclarationAST - } - visitor->endVisit(this); -} - -void ObjCCategoryImplementationAST::accept0(ASTVisitor *visitor) -{ - if (visitor->visit(this)) { - // visit ObjCCategoryImplementationAST - for (DeclarationListAST *it = declarations; it; it = it->next) - accept(it, visitor); - // visit DeclarationAST - } - visitor->endVisit(this); -} - void ObjCSynthesizedPropertyAST::accept0(ASTVisitor *visitor) { if (visitor->visit(this)) { diff --git a/src/shared/cplusplus/ASTVisitor.h b/src/shared/cplusplus/ASTVisitor.h index 661874cc073..031eca036c2 100644 --- a/src/shared/cplusplus/ASTVisitor.h +++ b/src/shared/cplusplus/ASTVisitor.h @@ -198,10 +198,9 @@ public: // ObjC++ virtual bool visit(IdentifierListAST *) { return true; } virtual bool visit(ObjCClassDeclarationAST *) { return true; } - virtual bool visit(ObjCClassInterfaceDefinitionAST *) { return true; } - virtual bool visit(ObjCCategoryInterfaceDeclarationAST *) { return true; } + virtual bool visit(ObjCClassForwardDeclarationAST *) { return true; } virtual bool visit(ObjCProtocolDeclarationAST *) { return true; } - virtual bool visit(ObjCProtocolDefinitionAST *) { return true; } + virtual bool visit(ObjCProtocolForwardDeclarationAST *) { return true; } virtual bool visit(ObjCProtocolRefsAST *) { return true; } virtual bool visit(ObjCMessageExpressionAST *) { return true; } virtual bool visit(ObjCMessageArgumentListAST *) { return true; } @@ -223,8 +222,6 @@ public: virtual bool visit(ObjCMethodDeclarationAST *) { return true; } virtual bool visit(ObjCMessageArgumentDeclarationListAST *) { return true; } virtual bool visit(ObjCMessageArgumentDeclarationAST *) { return true; } - virtual bool visit(ObjCClassImplementationAST *) { return true; } - virtual bool visit(ObjCCategoryImplementationAST *) { return true; } virtual bool visit(ObjCSynthesizedPropertyAST *) { return true; } virtual bool visit(ObjCSynthesizedPropertyListAST *) { return true; } virtual bool visit(ObjCSynthesizedPropertiesDeclarationAST *) { return true; } @@ -339,10 +336,9 @@ public: // ObjC++ virtual void endVisit(IdentifierListAST *) { } virtual void endVisit(ObjCClassDeclarationAST *) { } - virtual void endVisit(ObjCClassInterfaceDefinitionAST *) { } - virtual void endVisit(ObjCCategoryInterfaceDeclarationAST *) { } + virtual void endVisit(ObjCClassForwardDeclarationAST *) { } virtual void endVisit(ObjCProtocolDeclarationAST *) { } - virtual void endVisit(ObjCProtocolDefinitionAST *) { } + virtual void endVisit(ObjCProtocolForwardDeclarationAST *) { } virtual void endVisit(ObjCProtocolRefsAST *) { } virtual void endVisit(ObjCMessageExpressionAST *) { } virtual void endVisit(ObjCMessageArgumentListAST *) { } @@ -364,8 +360,6 @@ public: virtual void endVisit(ObjCMethodDeclarationAST *) { } virtual void endVisit(ObjCMessageArgumentDeclarationListAST *) { } virtual void endVisit(ObjCMessageArgumentDeclarationAST *) { } - virtual void endVisit(ObjCClassImplementationAST *) { } - virtual void endVisit(ObjCCategoryImplementationAST *) { } virtual void endVisit(ObjCSynthesizedPropertyAST *) { } virtual void endVisit(ObjCSynthesizedPropertyListAST *) { } virtual void endVisit(ObjCSynthesizedPropertiesDeclarationAST *) { } diff --git a/src/shared/cplusplus/ASTfwd.h b/src/shared/cplusplus/ASTfwd.h index c336650dae1..b661f1b7d47 100644 --- a/src/shared/cplusplus/ASTfwd.h +++ b/src/shared/cplusplus/ASTfwd.h @@ -170,11 +170,10 @@ class QtMethodAST; // ObjC++ class IdentifierListAST; +class ObjCClassForwardDeclarationAST; class ObjCClassDeclarationAST; +class ObjCProtocolForwardDeclarationAST; class ObjCProtocolDeclarationAST; -class ObjCProtocolDefinitionAST; -class ObjCClassInterfaceDefinitionAST; -class ObjCCategoryInterfaceDeclarationAST; class ObjCProtocolRefsAST; class ObjCMessageExpressionAST; class ObjCMessageArgumentListAST; @@ -197,8 +196,6 @@ class ObjCMethodPrototypeAST; class ObjCMethodDeclarationAST; class ObjCMessageArgumentDeclarationListAST; class ObjCMessageArgumentDeclarationAST; -class ObjCCategoryImplementationAST; -class ObjCClassImplementationAST; class ObjCSynthesizedPropertyAST; class ObjCSynthesizedPropertyListAST; class ObjCSynthesizedPropertiesDeclarationAST; diff --git a/src/shared/cplusplus/CheckDeclaration.cpp b/src/shared/cplusplus/CheckDeclaration.cpp index f82394548c4..95439730554 100644 --- a/src/shared/cplusplus/CheckDeclaration.cpp +++ b/src/shared/cplusplus/CheckDeclaration.cpp @@ -464,7 +464,7 @@ bool CheckDeclaration::visit(UsingDirectiveAST *ast) return false; } -bool CheckDeclaration::visit(ObjCProtocolDeclarationAST *ast) +bool CheckDeclaration::visit(ObjCProtocolForwardDeclarationAST *ast) { const unsigned sourceLocation = ast->firstToken(); @@ -491,7 +491,7 @@ bool CheckDeclaration::visit(ObjCProtocolDeclarationAST *ast) return false; } -bool CheckDeclaration::visit(ObjCProtocolDefinitionAST *ast) +bool CheckDeclaration::visit(ObjCProtocolDeclarationAST *ast) { unsigned sourceLocation; if (ast->name) @@ -511,7 +511,7 @@ bool CheckDeclaration::visit(ObjCProtocolDefinitionAST *ast) return false; } -bool CheckDeclaration::visit(ObjCClassDeclarationAST *ast) +bool CheckDeclaration::visit(ObjCClassForwardDeclarationAST *ast) { const unsigned sourceLocation = ast->firstToken(); @@ -538,7 +538,7 @@ bool CheckDeclaration::visit(ObjCClassDeclarationAST *ast) return false; } -bool CheckDeclaration::visit(ObjCClassInterfaceDefinitionAST *ast) +bool CheckDeclaration::visit(ObjCClassDeclarationAST *ast) { unsigned sourceLocation; if (ast->class_name) @@ -552,7 +552,7 @@ bool CheckDeclaration::visit(ObjCClassInterfaceDefinitionAST *ast) klass->setEndOffset(tokenAt(ast->lastToken()).offset); ast->symbol = klass; - // TODO: walk super-class, and protocols (EV) + // TODO: walk category name, super-class, and protocols (EV) _scope->enterSymbol(klass); int previousObjCVisibility = semantic()->switchObjCVisibility(Function::Protected); @@ -563,6 +563,8 @@ bool CheckDeclaration::visit(ObjCClassInterfaceDefinitionAST *ast) } } + (void) semantic()->switchObjCVisibility(Function::Public); + for (DeclarationListAST *it = ast->member_declarations; it; it = it->next) { semantic()->check(it->declaration, klass->members()); } diff --git a/src/shared/cplusplus/CheckDeclaration.h b/src/shared/cplusplus/CheckDeclaration.h index 97c4d5ff449..7e47be11034 100644 --- a/src/shared/cplusplus/CheckDeclaration.h +++ b/src/shared/cplusplus/CheckDeclaration.h @@ -92,9 +92,9 @@ protected: virtual bool visit(UsingDirectiveAST *ast); virtual bool visit(ObjCProtocolDeclarationAST *ast); - virtual bool visit(ObjCProtocolDefinitionAST *ast); + virtual bool visit(ObjCProtocolForwardDeclarationAST *ast); virtual bool visit(ObjCClassDeclarationAST *ast); - virtual bool visit(ObjCClassInterfaceDefinitionAST *ast); + virtual bool visit(ObjCClassForwardDeclarationAST *ast); virtual bool visit(ObjCMethodDeclarationAST *ast); virtual bool visit(ObjCVisibilityDeclarationAST *ast); diff --git a/src/shared/cplusplus/Parser.cpp b/src/shared/cplusplus/Parser.cpp index ee65f2c0090..ea8b0f98e82 100644 --- a/src/shared/cplusplus/Parser.cpp +++ b/src/shared/cplusplus/Parser.cpp @@ -414,7 +414,7 @@ bool Parser::parseDeclaration(DeclarationAST *&node) // ObjcC++ case T_AT_CLASS: - return parseObjCClassDeclaration(node); + return parseObjCClassForwardDeclaration(node); case T_AT_INTERFACE: return parseObjCInterface(node); @@ -3971,20 +3971,21 @@ bool Parser::lookAtObjCSelector() const // objc-class-declaraton ::= T_AT_CLASS (T_IDENTIFIER @ T_COMMA) T_SEMICOLON // -bool Parser::parseObjCClassDeclaration(DeclarationAST *&node) +bool Parser::parseObjCClassForwardDeclaration(DeclarationAST *&node) { if (LA() != T_AT_CLASS) return false; - ObjCClassDeclarationAST *ast = new (_pool) ObjCClassDeclarationAST; + ObjCClassForwardDeclarationAST *ast = new (_pool) ObjCClassForwardDeclarationAST; ast->class_token = consumeToken(); unsigned identifier_token = 0; match(T_IDENTIFIER, &identifier_token); ast->identifier_list = new (_pool) IdentifierListAST; - ast->identifier_list->name = new (_pool) SimpleNameAST; - ast->identifier_list->name->identifier_token = identifier_token; + SimpleNameAST *name = new (_pool) SimpleNameAST; + name->identifier_token = identifier_token; + ast->identifier_list->name = name; IdentifierListAST **nextId = &(ast->identifier_list->next); while (LA() == T_COMMA) { @@ -3993,8 +3994,9 @@ bool Parser::parseObjCClassDeclaration(DeclarationAST *&node) *nextId = new (_pool) IdentifierListAST; (*nextId)->comma_token = comma_token; - (*nextId)->name = new (_pool) SimpleNameAST; - (*nextId)->name->identifier_token = identifier_token; + name = new (_pool) SimpleNameAST; + name->identifier_token = identifier_token; + (*nextId)->name = name; nextId = &((*nextId)->next); } @@ -4041,14 +4043,19 @@ bool Parser::parseObjCInterface(DeclarationAST *&node, _translationUnit->error(attributes->firstToken(), "invalid attributes for category interface declaration"); - ObjCCategoryInterfaceDeclarationAST *ast = new (_pool) ObjCCategoryInterfaceDeclarationAST; + ObjCClassDeclarationAST *ast = new (_pool) ObjCClassDeclarationAST; ast->attributes = attributes; ast->interface_token = objc_interface_token; - ast->class_identifier_token = identifier_token; + SimpleNameAST *class_name = new (_pool) SimpleNameAST; + class_name->identifier_token= identifier_token; + ast->class_name = class_name; match(T_LPAREN, &(ast->lparen_token)); - if (LA() == T_IDENTIFIER) - ast->category_identifier_token = consumeToken(); + if (LA() == T_IDENTIFIER) { + SimpleNameAST *category_name = new (_pool) SimpleNameAST; + category_name->identifier_token = consumeToken(); + ast->category_name = category_name; + } match(T_RPAREN, &(ast->rparen_token)); @@ -4068,15 +4075,18 @@ bool Parser::parseObjCInterface(DeclarationAST *&node, return true; } else { // a class interface declaration - ObjCClassInterfaceDefinitionAST *ast = new (_pool) ObjCClassInterfaceDefinitionAST; + ObjCClassDeclarationAST *ast = new (_pool) ObjCClassDeclarationAST; ast->attributes = attributes; ast->interface_token = objc_interface_token; - ast->class_name = new (_pool) SimpleNameAST; - ast->class_name->identifier_token = identifier_token; + SimpleNameAST* class_name = new (_pool) SimpleNameAST; + class_name->identifier_token = identifier_token; + ast->class_name = class_name; if (LA() == T_COLON) { ast->colon_token = consumeToken(); - match(T_IDENTIFIER, &(ast->superclass_identifier_token)); + SimpleNameAST *superclass = new (_pool) SimpleNameAST; + match(T_IDENTIFIER, &(superclass->identifier_token)); + ast->superclass = superclass; } parseObjCProtocolRefs(ast->protocol_refs); @@ -4118,12 +4128,13 @@ bool Parser::parseObjCProtocol(DeclarationAST *&node, if (LA() == T_COMMA || LA() == T_SEMICOLON) { // a protocol forward declaration - ObjCProtocolDeclarationAST *ast = new (_pool) ObjCProtocolDeclarationAST; + ObjCProtocolForwardDeclarationAST *ast = new (_pool) ObjCProtocolForwardDeclarationAST; ast->attributes = attributes; ast->protocol_token = protocol_token; ast->identifier_list = new (_pool) IdentifierListAST; - ast->identifier_list->name = new (_pool) SimpleNameAST; - ast->identifier_list->name->identifier_token = identifier_token; + SimpleNameAST *name = new (_pool) SimpleNameAST; + name->identifier_token = identifier_token; + ast->identifier_list->name = name; IdentifierListAST **nextId = &(ast->identifier_list->next); while (LA() == T_COMMA) { @@ -4132,8 +4143,9 @@ bool Parser::parseObjCProtocol(DeclarationAST *&node, *nextId = new (_pool) IdentifierListAST; (*nextId)->comma_token = comma_token; - (*nextId)->name = new (_pool) SimpleNameAST; - (*nextId)->name->identifier_token = identifier_token; + name = new (_pool) SimpleNameAST; + name->identifier_token = identifier_token; + (*nextId)->name = name; nextId = &((*nextId)->next); } @@ -4142,11 +4154,12 @@ bool Parser::parseObjCProtocol(DeclarationAST *&node, return true; } else { // a protocol definition - ObjCProtocolDefinitionAST *ast = new (_pool) ObjCProtocolDefinitionAST; + ObjCProtocolDeclarationAST *ast = new (_pool) ObjCProtocolDeclarationAST; ast->attributes = attributes; ast->protocol_token = protocol_token; - ast->name = new (_pool) SimpleNameAST; - ast->name->identifier_token = identifier_token; + SimpleNameAST *name = new (_pool) SimpleNameAST; + name->identifier_token = identifier_token; + ast->name = name; parseObjCProtocolRefs(ast->protocol_refs); @@ -4180,31 +4193,39 @@ bool Parser::parseObjCImplementation(DeclarationAST *&node) if (LA() == T_LPAREN) { // a category implementation - ObjCCategoryImplementationAST *ast = new (_pool) ObjCCategoryImplementationAST; + ObjCClassDeclarationAST *ast = new (_pool) ObjCClassDeclarationAST; ast->implementation_token = implementation_token; - ast->class_identifier = identifier_token; + SimpleNameAST *class_name = new (_pool) SimpleNameAST; + class_name->identifier_token = identifier_token; + ast->class_name = class_name; match(T_LPAREN, &(ast->lparen_token)); - match(T_IDENTIFIER, &(ast->category_name_token)); + SimpleNameAST *category_name = new (_pool) SimpleNameAST; + match(T_IDENTIFIER, &(category_name->identifier_token)); + ast->category_name = category_name; match(T_RPAREN, &(ast->rparen_token)); - parseObjCMethodDefinitionList(ast->declarations); + parseObjCMethodDefinitionList(ast->member_declarations); match(T_AT_END, &(ast->end_token)); node = ast; } else { // a class implementation - ObjCClassImplementationAST *ast = new (_pool) ObjCClassImplementationAST; + ObjCClassDeclarationAST *ast = new (_pool) ObjCClassDeclarationAST; ast->implementation_token = implementation_token; - ast->class_identifier = identifier_token; + SimpleNameAST *class_name = new (_pool) SimpleNameAST; + class_name->identifier_token = identifier_token; + ast->class_name = class_name; if (LA() == T_COLON) { ast->colon_token = consumeToken(); - match(T_IDENTIFIER, &(ast->super_class_identifier)); + SimpleNameAST *superclass = new (_pool) SimpleNameAST; + match(T_IDENTIFIER, &(superclass->identifier_token)); + ast->superclass = superclass; } parseObjClassInstanceVariables(ast->inst_vars_decl); - parseObjCMethodDefinitionList(ast->declarations); + parseObjCMethodDefinitionList(ast->member_declarations); match(T_AT_END, &(ast->end_token)); node = ast; @@ -4272,16 +4293,18 @@ bool Parser::parseObjCMethodDefinitionList(DeclarationListAST *&node) ObjCDynamicPropertiesDeclarationAST *ast = new (_pool) ObjCDynamicPropertiesDeclarationAST; ast->dynamic_token = consumeToken(); ast->property_identifiers = new (_pool) IdentifierListAST; - ast->property_identifiers->name = new (_pool) SimpleNameAST; - match(T_IDENTIFIER, &(ast->property_identifiers->name->identifier_token)); + SimpleNameAST *name = new (_pool) SimpleNameAST; + match(T_IDENTIFIER, &(name->identifier_token)); + ast->property_identifiers->name = name; IdentifierListAST *last = ast->property_identifiers; while (LA() == T_COMMA) { last->comma_token = consumeToken(); last->next = new (_pool) IdentifierListAST; last = last->next; - last->name = new (_pool) SimpleNameAST; - match(T_IDENTIFIER, &(last->name->identifier_token)); + name = new (_pool) SimpleNameAST; + match(T_IDENTIFIER, &(name->identifier_token)); + last->name = name; } match(T_SEMICOLON, &(ast->semicolon_token)); @@ -4350,8 +4373,9 @@ bool Parser::parseObjCProtocolRefs(ObjCProtocolRefsAST *&node) unsigned identifier_token = 0; match(T_IDENTIFIER, &identifier_token); ast->identifier_list = new (_pool) IdentifierListAST; - ast->identifier_list->name = new (_pool) SimpleNameAST; - ast->identifier_list->name->identifier_token = identifier_token; + SimpleNameAST *name = new (_pool) SimpleNameAST; + name->identifier_token = identifier_token; + ast->identifier_list->name = name; IdentifierListAST **nextId = &(ast->identifier_list->next); while (LA() == T_COMMA) { @@ -4360,8 +4384,9 @@ bool Parser::parseObjCProtocolRefs(ObjCProtocolRefsAST *&node) *nextId = new (_pool) IdentifierListAST; (*nextId)->comma_token = comma_token; - (*nextId)->name = new (_pool) SimpleNameAST; - (*nextId)->name->identifier_token = identifier_token; + name = new (_pool) SimpleNameAST; + name->identifier_token = identifier_token; + (*nextId)->name = name; nextId = &((*nextId)->next); } diff --git a/src/shared/cplusplus/Parser.h b/src/shared/cplusplus/Parser.h index 15e11994ccb..efc2c60efe2 100644 --- a/src/shared/cplusplus/Parser.h +++ b/src/shared/cplusplus/Parser.h @@ -213,7 +213,7 @@ public: // ObjC++ bool parseObjCExpression(ExpressionAST *&node); - bool parseObjCClassDeclaration(DeclarationAST *&node); + bool parseObjCClassForwardDeclaration(DeclarationAST *&node); bool parseObjCInterface(DeclarationAST *&node, SpecifierAST *attributes = 0); bool parseObjCProtocol(DeclarationAST *&node, diff --git a/src/shared/cplusplus/Symbols.cpp b/src/shared/cplusplus/Symbols.cpp index 4946bb75f15..861c1cd3580 100644 --- a/src/shared/cplusplus/Symbols.cpp +++ b/src/shared/cplusplus/Symbols.cpp @@ -636,27 +636,11 @@ ObjCForwardClassDeclaration::~ObjCForwardClassDeclaration() {} FullySpecifiedType ObjCForwardClassDeclaration::type() const -{ return FullySpecifiedType(const_cast<ObjCForwardClassDeclaration *>(this)); } - -bool ObjCForwardClassDeclaration::isEqualTo(const Type *other) const -{ - if (const ObjCForwardClassDeclaration *otherForward = other->asObjCForwardClassDeclarationType()) { - if (name() == otherForward->name()) - return true; - else if (name() && otherForward->name()) - return name()->isEqualTo(otherForward->name()); - - return false; - } - return false; -} +{ return FullySpecifiedType(); } void ObjCForwardClassDeclaration::visitSymbol0(SymbolVisitor *visitor) { visitor->visit(this); } -void ObjCForwardClassDeclaration::accept0(TypeVisitor *visitor) -{ visitor->visit(this); } - ObjCForwardProtocolDeclaration::ObjCForwardProtocolDeclaration(TranslationUnit *translationUnit, unsigned sourceLocation, Name *name): Symbol(translationUnit, sourceLocation, name) { @@ -666,25 +650,9 @@ ObjCForwardProtocolDeclaration::~ObjCForwardProtocolDeclaration() {} FullySpecifiedType ObjCForwardProtocolDeclaration::type() const -{ return FullySpecifiedType(const_cast<ObjCForwardProtocolDeclaration *>(this)); } - -bool ObjCForwardProtocolDeclaration::isEqualTo(const Type *other) const -{ - if (const ObjCForwardProtocolDeclaration *otherForward = other->asObjCForwardProtocolDeclarationType()) { - if (name() == otherForward->name()) - return true; - else if (name() && otherForward->name()) - return name()->isEqualTo(otherForward->name()); - - return false; - } - return false; -} +{ return FullySpecifiedType(); } void ObjCForwardProtocolDeclaration::visitSymbol0(SymbolVisitor *visitor) { visitor->visit(this); } -void ObjCForwardProtocolDeclaration::accept0(TypeVisitor *visitor) -{ visitor->visit(this); } - CPLUSPLUS_END_NAMESPACE diff --git a/src/shared/cplusplus/Symbols.h b/src/shared/cplusplus/Symbols.h index 7bf8de0c89f..3f621cde60e 100644 --- a/src/shared/cplusplus/Symbols.h +++ b/src/shared/cplusplus/Symbols.h @@ -463,7 +463,7 @@ private: Array<BaseClass *> _baseClasses; }; -class CPLUSPLUS_EXPORT ObjCForwardProtocolDeclaration: public Symbol, public Type +class CPLUSPLUS_EXPORT ObjCForwardProtocolDeclaration: public Symbol { public: ObjCForwardProtocolDeclaration(TranslationUnit *translationUnit, unsigned sourceLocation, Name *name); @@ -472,24 +472,14 @@ public: // Symbol's interface virtual FullySpecifiedType type() const; - // Type's interface - virtual bool isEqualTo(const Type *other) const; - virtual const ObjCForwardProtocolDeclaration *asObjCForwardProtocolDeclaration() const { return this; } virtual ObjCForwardProtocolDeclaration *asObjCForwardProtocolDeclaration() { return this; } - virtual const ObjCForwardProtocolDeclaration *asObjCForwardProtocolDeclarationType() const - { return this; } - - virtual ObjCForwardProtocolDeclaration *asObjCForwardProtocolDeclarationType() - { return this; } - protected: virtual void visitSymbol0(SymbolVisitor *visitor); - virtual void accept0(TypeVisitor *visitor); private: }; @@ -526,7 +516,7 @@ private: Array<ObjCProtocol *> _protocols; }; -class CPLUSPLUS_EXPORT ObjCForwardClassDeclaration: public Symbol, public Type +class CPLUSPLUS_EXPORT ObjCForwardClassDeclaration: public Symbol { public: ObjCForwardClassDeclaration(TranslationUnit *translationUnit, unsigned sourceLocation, Name *name); @@ -535,24 +525,14 @@ public: // Symbol's interface virtual FullySpecifiedType type() const; - // Type's interface - virtual bool isEqualTo(const Type *other) const; - virtual const ObjCForwardClassDeclaration *asObjCForwardClassDeclaration() const { return this; } virtual ObjCForwardClassDeclaration *asObjCForwardClassDeclaration() { return this; } - virtual const ObjCForwardClassDeclaration *asObjCForwardClassDeclarationType() const - { return this; } - - virtual ObjCForwardClassDeclaration *asObjCForwardClassDeclarationType() - { return this; } - protected: virtual void visitSymbol0(SymbolVisitor *visitor); - virtual void accept0(TypeVisitor *visitor); private: }; diff --git a/src/shared/cplusplus/Type.cpp b/src/shared/cplusplus/Type.cpp index 8b41f36407e..ac490408059 100644 --- a/src/shared/cplusplus/Type.cpp +++ b/src/shared/cplusplus/Type.cpp @@ -104,15 +104,9 @@ bool Type::isForwardClassDeclarationType() const bool Type::isObjCClassType() const { return asObjCClassType() != 0; } -bool Type::isObjCForwardClassDeclarationType() const -{ return asObjCForwardClassDeclarationType() != 0; } - bool Type::isObjCProtocolType() const { return asObjCProtocolType() != 0; } -bool Type::isObjCForwardProtocolDeclarationType() const -{ return asObjCForwardProtocolDeclarationType() != 0; } - void Type::accept(TypeVisitor *visitor) { if (visitor->preVisit(this)) diff --git a/src/shared/cplusplus/Type.h b/src/shared/cplusplus/Type.h index 1ddc67eb58a..ccd92251e6b 100644 --- a/src/shared/cplusplus/Type.h +++ b/src/shared/cplusplus/Type.h @@ -78,9 +78,7 @@ public: bool isEnumType() const; bool isForwardClassDeclarationType() const; bool isObjCClassType() const; - bool isObjCForwardClassDeclarationType() const; bool isObjCProtocolType() const; - bool isObjCForwardProtocolDeclarationType() const; virtual const VoidType *asVoidType() const { return 0; } virtual const IntegerType *asIntegerType() const { return 0; } @@ -96,9 +94,7 @@ public: virtual const Enum *asEnumType() const { return 0; } virtual const ForwardClassDeclaration *asForwardClassDeclarationType() const { return 0; } virtual const ObjCClass *asObjCClassType() const { return 0; } - virtual const ObjCForwardClassDeclaration *asObjCForwardClassDeclarationType() const { return 0; } virtual const ObjCProtocol *asObjCProtocolType() const { return 0; } - virtual const ObjCForwardProtocolDeclaration *asObjCForwardProtocolDeclarationType() const { return 0; } virtual VoidType *asVoidType() { return 0; } virtual IntegerType *asIntegerType() { return 0; } @@ -114,9 +110,7 @@ public: virtual Enum *asEnumType() { return 0; } virtual ForwardClassDeclaration *asForwardClassDeclarationType() { return 0; } virtual ObjCClass *asObjCClassType() { return 0; } - virtual ObjCForwardClassDeclaration *asObjCForwardClassDeclarationType() { return 0; } virtual ObjCProtocol *asObjCProtocoTypel() { return 0; } - virtual ObjCForwardProtocolDeclaration *asObjCForwardProtocolDeclarationType() { return 0; } void accept(TypeVisitor *visitor); static void accept(Type *type, TypeVisitor *visitor); diff --git a/src/shared/cplusplus/TypeVisitor.h b/src/shared/cplusplus/TypeVisitor.h index a0de7065570..005e9cdc795 100644 --- a/src/shared/cplusplus/TypeVisitor.h +++ b/src/shared/cplusplus/TypeVisitor.h @@ -83,8 +83,6 @@ public: virtual void visit(ForwardClassDeclaration *) {} virtual void visit(ObjCClass *) {} virtual void visit(ObjCProtocol *) {} - virtual void visit(ObjCForwardClassDeclaration *) {} - virtual void visit(ObjCForwardProtocolDeclaration *) {} }; CPLUSPLUS_END_NAMESPACE -- GitLab