summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Liu <ioeric@google.com>2018-07-04 09:43:35 +0000
committerEric Liu <ioeric@google.com>2018-07-04 09:43:35 +0000
commitbd225cff89348181f715ac6ed8c44a38e0805fa5 (patch)
treeb7460edadc33703237433a219e6807abf16fe410
parent98a7a31d1ee21a2e9c2e07aeb836938336f86c79 (diff)
downloadbcm5719-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.cpp8
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));
OpenPOWER on IntegriCloud