aboutsummaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rw-r--r--tools/c-index-test/c-index-test.c6
-rw-r--r--tools/libclang/IndexingContext.cpp12
-rw-r--r--tools/libclang/IndexingContext.h7
3 files changed, 15 insertions, 10 deletions
diff --git a/tools/c-index-test/c-index-test.c b/tools/c-index-test/c-index-test.c
index 18a0a6b28d..1370e21c81 100644
--- a/tools/c-index-test/c-index-test.c
+++ b/tools/c-index-test/c-index-test.c
@@ -1801,8 +1801,10 @@ static void index_indexDeclaration(CXClientData client_data,
PrintCursor(info->cursor);
printf(" | loc: ");
printCXIndexLoc(info->loc);
- printf(" | container: ");
- printCXIndexContainer(info->container);
+ printf(" | semantic-container: ");
+ printCXIndexContainer(info->semanticContainer);
+ printf(" | lexical-container: ");
+ printCXIndexContainer(info->lexicalContainer);
printf(" | isRedecl: %d", info->isRedeclaration);
printf(" | isDef: %d", info->isDefinition);
printf(" | isContainer: %d", info->isContainer);
diff --git a/tools/libclang/IndexingContext.cpp b/tools/libclang/IndexingContext.cpp
index 0ec8619bed..657aed8f6a 100644
--- a/tools/libclang/IndexingContext.cpp
+++ b/tools/libclang/IndexingContext.cpp
@@ -239,8 +239,10 @@ bool IndexingContext::handleDecl(const NamedDecl *D,
DInfo.attributes = AttrList.getAttrs();
DInfo.numAttributes = AttrList.getNumAttrs();
- getContainerInfo(D->getDeclContext(), DInfo.Container);
- DInfo.container = &DInfo.Container;
+ getContainerInfo(D->getDeclContext(), DInfo.SemanticContainer);
+ getContainerInfo(D->getLexicalDeclContext(), DInfo.LexicalContainer);
+ DInfo.semanticContainer = &DInfo.SemanticContainer;
+ DInfo.lexicalContainer = &DInfo.LexicalContainer;
if (DInfo.isContainer) {
getContainerInfo(getEntityContainer(D), DInfo.DeclAsContainer);
DInfo.declAsContainer = &DInfo.DeclAsContainer;
@@ -506,12 +508,12 @@ bool IndexingContext::handleReference(const NamedDecl *D, SourceLocation Loc,
ContainerInfo Container;
getContainerInfo(DC, Container);
- CXIdxEntityRefInfo Info = { Cursor,
+ CXIdxEntityRefInfo Info = { Kind,
+ Cursor,
getIndexLoc(Loc),
&RefEntity,
Parent ? &ParentEntity : 0,
- &Container,
- Kind };
+ &Container };
CB.indexEntityReference(ClientData, &Info);
return true;
}
diff --git a/tools/libclang/IndexingContext.h b/tools/libclang/IndexingContext.h
index ff5ca1b819..bce3ab33f0 100644
--- a/tools/libclang/IndexingContext.h
+++ b/tools/libclang/IndexingContext.h
@@ -54,7 +54,8 @@ struct DeclInfo : public CXIdxDeclInfo {
DInfoKind Kind;
EntityInfo EntInfo;
- ContainerInfo Container;
+ ContainerInfo SemanticContainer;
+ ContainerInfo LexicalContainer;
ContainerInfo DeclAsContainer;
DeclInfo(bool isRedeclaration, bool isDefinition, bool isContainer)
@@ -64,7 +65,7 @@ struct DeclInfo : public CXIdxDeclInfo {
this->isContainer = isContainer;
attributes = 0;
numAttributes = 0;
- declAsContainer = container = 0;
+ declAsContainer = semanticContainer = lexicalContainer = 0;
}
DeclInfo(DInfoKind K,
bool isRedeclaration, bool isDefinition, bool isContainer)
@@ -74,7 +75,7 @@ struct DeclInfo : public CXIdxDeclInfo {
this->isContainer = isContainer;
attributes = 0;
numAttributes = 0;
- declAsContainer = container = 0;
+ declAsContainer = semanticContainer = lexicalContainer = 0;
}
static bool classof(const DeclInfo *) { return true; }