From af5ae31c34f29f95640585a79622d9a8b3a747d0 Mon Sep 17 00:00:00 2001 From: Fangrui Song Date: Sat, 23 Dec 2017 15:20:13 -0800 Subject: [PATCH] Don't emit more diagnostics after hitting -ferror-limit --- src/clang_complete.cc | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/src/clang_complete.cc b/src/clang_complete.cc index e02f1930..5c74effb 100644 --- a/src/clang_complete.cc +++ b/src/clang_complete.cc @@ -335,13 +335,11 @@ void TryEnsureDocumentParsed(ClangCompleteManager* manager, for (unsigned i = 0; i < num_diagnostics; ++i) { optional diagnostic = BuildAndDisposeDiagnostic( clang_getDiagnostic((*tu)->cx_tu, i), session->file.filename); - if (diagnostic) { - // "too many errors emitted, stopping now [-ferror-limit=]" has line = 0 - // and got subtracted by 1 after conversion to lsDiagnostic - if (diagnostic->range.start.line == -1) - break; + // Filter messages like "too many errors emitted, stopping now + // [-ferror-limit=]" which has line = 0 and got subtracted by 1 after + // conversion to lsDiagnostic + if (diagnostic && diagnostic->range.start.line >= 0) ls_diagnostics.push_back(*diagnostic); - } } manager->on_diagnostic_(session->file.filename, ls_diagnostics); } @@ -509,13 +507,11 @@ void CompletionQueryMain(ClangCompleteManager* completion_manager) { CXDiagnostic cx_diag = clang_getDiagnostic(session->tu->cx_tu, i); optional diagnostic = BuildAndDisposeDiagnostic(cx_diag, path); - if (diagnostic) { - // "too many errors emitted, stopping now [-ferror-limit=]" has line = 0 - // and got subtracted by 1 after conversion to lsDiagnostic - if (diagnostic->range.start.line == -1) - break; + // Filter messages like "too many errors emitted, stopping now + // [-ferror-limit=]" which has line = 0 and got subtracted by 1 after + // conversion to lsDiagnostic + if (diagnostic && diagnostic->range.start.line >= 0) ls_diagnostics.push_back(*diagnostic); - } } completion_manager->on_diagnostic_(session->file.filename, ls_diagnostics);