diff options
Diffstat (limited to 'clang/tools/libclang')
-rw-r--r-- | clang/tools/libclang/IndexingContext.cpp | 12 | ||||
-rw-r--r-- | clang/tools/libclang/IndexingContext.h | 7 |
2 files changed, 11 insertions, 8 deletions
diff --git a/clang/tools/libclang/IndexingContext.cpp b/clang/tools/libclang/IndexingContext.cpp index 0ec8619bed2..657aed8f6a9 100644 --- a/clang/tools/libclang/IndexingContext.cpp +++ b/clang/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/clang/tools/libclang/IndexingContext.h b/clang/tools/libclang/IndexingContext.h index ff5ca1b819b..bce3ab33f07 100644 --- a/clang/tools/libclang/IndexingContext.h +++ b/clang/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; } |