if (!DC)
return;
- assert(getScopedContext(DC) == DC);
ContainerMapTy::iterator I = ContainerMap.find(DC);
if (I == ContainerMap.end()) {
if (container)
return DC;
}
-const DeclContext *
-IndexingContext::getScopedContext(const DeclContext *DC) const {
- // Local contexts are ignored for indexing.
- const DeclContext *FuncCtx = cast<Decl>(DC)->getParentFunctionOrMethod();
- if (FuncCtx)
- return FuncCtx;
-
- // We consider enums always scoped for indexing.
- if (isa<TagDecl>(DC))
- return DC;
-
- if (const NamespaceDecl *NS = dyn_cast<NamespaceDecl>(DC)) {
- if (NS->isAnonymousNamespace())
- return getScopedContext(NS->getParent());
- return NS;
- }
-
- return DC->getRedeclContext();
-}
-
CXIdxClientContainer
IndexingContext::getClientContainerForDC(const DeclContext *DC) const {
if (!DC)
return 0;
- DC = getScopedContext(DC);
ContainerMapTy::const_iterator I = ContainerMap.find(DC);
if (I == ContainerMap.end())
return 0;
const DeclContext *getEntityContainer(const Decl *D) const;
- CXIdxClientContainer getClientContainer(const NamedDecl *D) const {
- return getClientContainerForDC(D->getDeclContext());
- }
-
- const DeclContext *getScopedContext(const DeclContext *DC) const;
-
CXIdxClientFile getIndexFile(const FileEntry *File);
CXIdxLoc getIndexLoc(SourceLocation Loc) const;