diff options
author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2012-12-19 22:21:18 +0000 |
---|---|---|
committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2012-12-19 22:21:18 +0000 |
commit | 2810e9dee045000e4fa6d3092350a7829ab9d29f (patch) | |
tree | 7acf95e35b76c6b371449034bc5e478c7bbb4c9d /clang/lib/Serialization | |
parent | 349d1a35ffc10f7041999bbf01cf28cf3a09b792 (diff) | |
download | bcm5719-llvm-2810e9dee045000e4fa6d3092350a7829ab9d29f.tar.gz bcm5719-llvm-2810e9dee045000e4fa6d3092350a7829ab9d29f.zip |
[PCH/Modules] In ASTReader::completeVisibleDeclsMap, make sure to visit all
modules when getting the decls for a namespace or translation unit.
Otherwise the code-completion results will not be complete.
rdar://12889089
llvm-svn: 170596
Diffstat (limited to 'clang/lib/Serialization')
-rw-r--r-- | clang/lib/Serialization/ASTReader.cpp | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp index 08bc6b48181..f415573db80 100644 --- a/clang/lib/Serialization/ASTReader.cpp +++ b/clang/lib/Serialization/ASTReader.cpp @@ -5429,13 +5429,15 @@ namespace { ASTReader &Reader; llvm::SmallVectorImpl<const DeclContext *> &Contexts; llvm::DenseMap<DeclarationName, SmallVector<NamedDecl *, 8> > &Decls; + bool VisitAll; public: DeclContextAllNamesVisitor(ASTReader &Reader, SmallVectorImpl<const DeclContext *> &Contexts, llvm::DenseMap<DeclarationName, - SmallVector<NamedDecl *, 8> > &Decls) - : Reader(Reader), Contexts(Contexts), Decls(Decls) { } + SmallVector<NamedDecl *, 8> > &Decls, + bool VisitAll) + : Reader(Reader), Contexts(Contexts), Decls(Decls), VisitAll(VisitAll) { } static bool visit(ModuleFile &M, void *UserData) { DeclContextAllNamesVisitor *This @@ -5476,7 +5478,7 @@ namespace { } } - return FoundAnything; + return FoundAnything && !This->VisitAll; } }; } @@ -5502,7 +5504,8 @@ void ASTReader::completeVisibleDeclsMap(const DeclContext *DC) { } } - DeclContextAllNamesVisitor Visitor(*this, Contexts, Decls); + DeclContextAllNamesVisitor Visitor(*this, Contexts, Decls, + /*VisitAll=*/DC->isFileContext()); ModuleMgr.visit(&DeclContextAllNamesVisitor::visit, &Visitor); ++NumVisibleDeclContextsRead; |