diff options
author | Eric Liu <ioeric@google.com> | 2018-07-04 09:43:35 +0000 |
---|---|---|
committer | Eric Liu <ioeric@google.com> | 2018-07-04 09:43:35 +0000 |
commit | bd225cff89348181f715ac6ed8c44a38e0805fa5 (patch) | |
tree | b7460edadc33703237433a219e6807abf16fe410 | |
parent | 98a7a31d1ee21a2e9c2e07aeb836938336f86c79 (diff) | |
download | bcm5719-llvm-bd225cff89348181f715ac6ed8c44a38e0805fa5.tar.gz bcm5719-llvm-bd225cff89348181f715ac6ed8c44a38e0805fa5.zip |
[clangd] Avoid collecting symbols from broken TUs in global-symbol-builder.
Summary:
For example, template parameter might not be resolved in a broken TU,
which can result in wrong USR/SymbolID.
Reviewers: ilya-biryukov
Subscribers: MaskRay, jkorous, cfe-commits
Differential Revision: https://reviews.llvm.org/D48881
llvm-svn: 336252
-rw-r--r-- | clang-tools-extra/clangd/global-symbol-builder/GlobalSymbolBuilderMain.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/clang-tools-extra/clangd/global-symbol-builder/GlobalSymbolBuilderMain.cpp b/clang-tools-extra/clangd/global-symbol-builder/GlobalSymbolBuilderMain.cpp index 1ea73b55946..1cfda579d7f 100644 --- a/clang-tools-extra/clangd/global-symbol-builder/GlobalSymbolBuilderMain.cpp +++ b/clang-tools-extra/clangd/global-symbol-builder/GlobalSymbolBuilderMain.cpp @@ -82,6 +82,14 @@ public: void EndSourceFileAction() override { WrapperFrontendAction::EndSourceFileAction(); + const auto &CI = getCompilerInstance(); + if (CI.hasDiagnostics() && + (CI.getDiagnosticClient().getNumErrors() > 0)) { + llvm::errs() << "Found errors in the translation unit. Igoring " + "collected symbols...\n"; + return; + } + auto Symbols = Collector->takeSymbols(); for (const auto &Sym : Symbols) { Ctx->reportResult(Sym.ID.str(), SymbolToYAML(Sym)); |