diff --git a/clang-tools-extra/clang-tidy/readability/ElseAfterReturnCheck.cpp b/clang-tools-extra/clang-tidy/readability/ElseAfterReturnCheck.cpp --- a/clang-tools-extra/clang-tidy/readability/ElseAfterReturnCheck.cpp +++ b/clang-tools-extra/clang-tidy/readability/ElseAfterReturnCheck.cpp @@ -188,9 +188,8 @@ if (IsLastInScope) { // If the if statement is the last statement its enclosing statements // scope, we can pull the decl out of the if statement. - DiagnosticBuilder Diag = - diag(ElseLoc, WarningMessage, clang::DiagnosticIDs::Level::Remark) - << ControlFlowInterruptor; + DiagnosticBuilder Diag = diag(ElseLoc, WarningMessage) + << ControlFlowInterruptor; if (checkInitDeclUsageInElse(If) != nullptr) { Diag << tooling::fixit::createReplacement( SourceRange(If->getIfLoc()), 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 @@ -299,6 +299,25 @@ DiagSource(Diag::ClangTidy), DiagName("modernize-loop-convert")))); } +TEST(DiagnosticTest, NoAddingANoteWithoutMainDiagnostic) { + Annotations Main(R"cc( + void foo() { + if (int X = 0) { + return; + } [[else]] { + X++; + } + } + )cc"); + TestTU TU = TestTU::withCode(Main.code()); + TU.ClangTidyChecks = "readability-else-after-return"; + EXPECT_THAT(TU.build().getDiagnostics(), + UnorderedElementsAre(::testing::AllOf( + Diag(Main.range(), "do not use 'else' after 'return'"), + DiagSource(Diag::ClangTidy), + DiagName("readability-else-after-return")))); +} + TEST(DiagnosticTest, ClangTidySuppressionComment) { Annotations Main(R"cpp( int main() {