From bcadd5b5a782df21f6aa580a0c07736abded519c Mon Sep 17 00:00:00 2001 From: Roberto Raggi Date: Fri, 13 Aug 2010 14:20:00 +0200 Subject: Process ObjC forward class declarations --- src/shared/cplusplus/Bind.cpp | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) (limited to 'src/shared/cplusplus/Bind.cpp') diff --git a/src/shared/cplusplus/Bind.cpp b/src/shared/cplusplus/Bind.cpp index 84bc3b3786..12a2b41d0d 100644 --- a/src/shared/cplusplus/Bind.cpp +++ b/src/shared/cplusplus/Bind.cpp @@ -2020,16 +2020,26 @@ bool Bind::visit(UsingDirectiveAST *ast) bool Bind::visit(ObjCClassForwardDeclarationAST *ast) { - FullySpecifiedType type; + FullySpecifiedType declSpecifiers; for (SpecifierListAST *it = ast->attribute_list; it; it = it->next) { - type = this->specifier(it->value, type); + declSpecifiers = this->specifier(it->value, declSpecifiers); } + + List **symbolTail = &ast->symbols; + // unsigned class_token = ast->class_token; for (NameListAST *it = ast->identifier_list; it; it = it->next) { - /*const Name *value =*/ this->name(it->value); + const Name *name = this->name(it->value); + + const unsigned sourceLocation = it->value ? it->value->firstToken() : ast->firstToken(); + ObjCForwardClassDeclaration *fwd = control()->newObjCForwardClassDeclaration(sourceLocation, name); + setDeclSpecifiers(fwd, declSpecifiers); + _scope->addMember(fwd); + + *symbolTail = new (translationUnit()->memoryPool()) List(fwd); + symbolTail = &(*symbolTail)->next; } - // unsigned semicolon_token = ast->semicolon_token; - // List *symbols = ast->symbols; + return false; } -- cgit v1.2.1