diff options
Diffstat (limited to 'tools')
-rw-r--r-- | tools/c-index-test/c-index-test.c | 6 | ||||
-rw-r--r-- | tools/libclang/IndexingContext.cpp | 12 | ||||
-rw-r--r-- | tools/libclang/IndexingContext.h | 7 |
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; } |