From: Argyrios Kyrtzidis Date: Tue, 15 Nov 2011 06:20:24 +0000 (+0000) Subject: [libclang] Indexing API: Pass an implicit ObjCInterfaceDecl (@implementation without... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e7bbab91f5cc899104d0a1dee6059d8413c70eeb;p=clang [libclang] Indexing API: Pass an implicit ObjCInterfaceDecl (@implementation without @interface) in a separate indexing callback than its implementation. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144625 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/tools/libclang/IndexDecl.cpp b/tools/libclang/IndexDecl.cpp index 67f6703e75..b2a45306dc 100644 --- a/tools/libclang/IndexDecl.cpp +++ b/tools/libclang/IndexDecl.cpp @@ -108,6 +108,10 @@ public: } bool VisitObjCImplementationDecl(ObjCImplementationDecl *D) { + const ObjCInterfaceDecl *Class = D->getClassInterface(); + if (Class->isImplicitInterfaceDecl()) + IndexCtx.handleObjCInterface(Class); + IndexCtx.handleObjCImplementation(D); IndexCtx.indexTUDeclsInObjCContainer(); diff --git a/tools/libclang/IndexingContext.cpp b/tools/libclang/IndexingContext.cpp index 3ab29e2e5b..a6e968b8fe 100644 --- a/tools/libclang/IndexingContext.cpp +++ b/tools/libclang/IndexingContext.cpp @@ -206,9 +206,8 @@ void IndexingContext::handleObjCInterface(const ObjCInterfaceDecl *D) { void IndexingContext::handleObjCImplementation( const ObjCImplementationDecl *D) { - const ObjCInterfaceDecl *Class = D->getClassInterface(); ObjCContainerDeclInfo ContDInfo(/*isForwardRef=*/false, - /*isRedeclaration=*/!Class->isImplicitInterfaceDecl(), + /*isRedeclaration=*/true, /*isImplementation=*/true); handleObjCContainer(D, D->getLocation(), getCursor(D), ContDInfo); }