aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tools/libclang/IndexDecl.cpp4
-rw-r--r--tools/libclang/IndexingContext.cpp3
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);
}