diff options
author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2011-11-15 06:20:24 +0000 |
---|---|---|
committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2011-11-15 06:20:24 +0000 |
commit | e7bbab91f5cc899104d0a1dee6059d8413c70eeb (patch) | |
tree | 818363d0f8ce5f781ed491fb0a07f301635a1598 | |
parent | 40f57ee2dab3ed3475fa584f83f05bd3c9ed4a00 (diff) |
[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
-rw-r--r-- | tools/libclang/IndexDecl.cpp | 4 | ||||
-rw-r--r-- | 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); } |