diff --git a/clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.h b/clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.h --- a/clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.h +++ b/clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.h @@ -223,10 +223,6 @@ /// for example, the use of a "NOLINTBEGIN" comment that is not followed by a /// "NOLINTEND" comment - a diagnostic regarding the improper use is returned /// via the output argument `SuppressionErrors`. -bool shouldSuppressDiagnostic(DiagnosticsEngine::Level DiagLevel, - const Diagnostic &Info, ClangTidyContext &Context, - bool AllowIO = true); - bool shouldSuppressDiagnostic( DiagnosticsEngine::Level DiagLevel, const Diagnostic &Info, ClangTidyContext &Context, diff --git a/clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp b/clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp --- a/clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp +++ b/clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp @@ -517,16 +517,6 @@ namespace clang { namespace tidy { -bool shouldSuppressDiagnostic(DiagnosticsEngine::Level DiagLevel, - const Diagnostic &Info, ClangTidyContext &Context, - bool AllowIO) { - SmallVector Unused; - bool ShouldSuppress = - shouldSuppressDiagnostic(DiagLevel, Info, Context, Unused, AllowIO); - assert(Unused.empty()); - return ShouldSuppress; -} - bool shouldSuppressDiagnostic( DiagnosticsEngine::Level DiagLevel, const Diagnostic &Info, ClangTidyContext &Context, diff --git a/clang-tools-extra/clangd/ParsedAST.cpp b/clang-tools-extra/clangd/ParsedAST.cpp --- a/clang-tools-extra/clangd/ParsedAST.cpp +++ b/clang-tools-extra/clangd/ParsedAST.cpp @@ -391,9 +391,13 @@ bool IsInsideMainFile = Info.hasSourceManager() && isInsideMainFile(Info.getLocation(), Info.getSourceManager()); + SmallVector TidySuppressedErrors; if (IsInsideMainFile && tidy::shouldSuppressDiagnostic(DiagLevel, Info, *CTContext, + TidySuppressedErrors, /*AllowIO=*/false)) { + // FIXME: should we expose the suppression error (invalid use of + // NOLINT comments)? return DiagnosticsEngine::Ignored; } diff --git a/clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp b/clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp --- a/clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp +++ b/clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp @@ -476,6 +476,13 @@ double g = [[8]] / i; #define BAD2 BAD double h = BAD2; // NOLINT + // NOLINTBEGIN + double x = BAD2; + double y = BAD2; + // NOLINTEND + + // verify no crashes on unmatched nolints. + // NOLINTBEIGN } )cpp"); TestTU TU = TestTU::withCode(Main.code());