From e7bbab91f5cc899104d0a1dee6059d8413c70eeb Mon Sep 17 00:00:00 2001 From: Argyrios Kyrtzidis Date: Tue, 15 Nov 2011 06:20:24 +0000 Subject: [PATCH] [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 --- tools/libclang/IndexDecl.cpp | 4 ++++ tools/libclang/IndexingContext.cpp | 3 +-- 2 files changed, 5 insertions(+), 2 deletions(-) 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); } -- 2.50.1