diff options
| author | Sam McCall <sam.mccall@gmail.com> | 2019-04-10 16:26:58 +0000 |
|---|---|---|
| committer | Sam McCall <sam.mccall@gmail.com> | 2019-04-10 16:26:58 +0000 |
| commit | 2d02c6df6b2b0ddca24a6bf343154a0573eb955b (patch) | |
| tree | aa0cc52962fce591a3101b1be7075c1b3946d830 /clang-tools-extra/clangd/index/SymbolCollector.cpp | |
| parent | 0e66db5d771898273ea04e5e067859b9907f49e6 (diff) | |
| download | bcm5719-llvm-2d02c6df6b2b0ddca24a6bf343154a0573eb955b.tar.gz bcm5719-llvm-2d02c6df6b2b0ddca24a6bf343154a0573eb955b.zip | |
[clangd] Fix non-indexing of builtin functions like printf when the TU is C
llvm-svn: 358098
Diffstat (limited to 'clang-tools-extra/clangd/index/SymbolCollector.cpp')
| -rw-r--r-- | clang-tools-extra/clangd/index/SymbolCollector.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/clang-tools-extra/clangd/index/SymbolCollector.cpp b/clang-tools-extra/clangd/index/SymbolCollector.cpp index 302d46adbc8..b4ef6bf134d 100644 --- a/clang-tools-extra/clangd/index/SymbolCollector.cpp +++ b/clang-tools-extra/clangd/index/SymbolCollector.cpp @@ -236,8 +236,6 @@ bool SymbolCollector::shouldCollectSymbol(const NamedDecl &ND, const ASTContext &ASTCtx, const Options &Opts, bool IsMainFileOnly) { - if (ND.isImplicit()) - return false; // Skip anonymous declarations, e.g (anonymous enum/class/struct). if (ND.getDeclName().isEmpty()) return false; @@ -328,7 +326,9 @@ bool SymbolCollector::handleDeclOccurence( // then no public declaration was visible, so assume it's main-file only. bool IsMainFileOnly = SM.isWrittenInMainFile(SM.getExpansionLoc(ND->getBeginLoc())); - if (!shouldCollectSymbol(*ND, *ASTCtx, Opts, IsMainFileOnly)) + // In C, printf is a redecl of an implicit builtin! So check OrigD instead. + if (ASTNode.OrigD->isImplicit() || + !shouldCollectSymbol(*ND, *ASTCtx, Opts, IsMainFileOnly)) return true; // Do not store references to main-file symbols. if (CollectRef && !IsMainFileOnly && !isa<NamespaceDecl>(ND) && |

