diff options
-rw-r--r-- | clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp | 5 | ||||
-rw-r--r-- | clang-tools-extra/test/clang-tidy/duplicate-reports.cpp | 15 |
2 files changed, 18 insertions, 2 deletions
diff --git a/clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp b/clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp index 1074af97786..ef1c8ef486e 100644 --- a/clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp +++ b/clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp @@ -742,8 +742,9 @@ struct LessClangTidyError { const tooling::DiagnosticMessage &M1 = LHS.Message; const tooling::DiagnosticMessage &M2 = RHS.Message; - return std::tie(M1.FilePath, M1.FileOffset, M1.Message) < - std::tie(M2.FilePath, M2.FileOffset, M2.Message); + return + std::tie(M1.FilePath, M1.FileOffset, LHS.DiagnosticName, M1.Message) < + std::tie(M2.FilePath, M2.FileOffset, RHS.DiagnosticName, M2.Message); } }; struct EqualClangTidyError { diff --git a/clang-tools-extra/test/clang-tidy/duplicate-reports.cpp b/clang-tools-extra/test/clang-tidy/duplicate-reports.cpp new file mode 100644 index 00000000000..c825c2ca243 --- /dev/null +++ b/clang-tools-extra/test/clang-tidy/duplicate-reports.cpp @@ -0,0 +1,15 @@ +// RUN: %check_clang_tidy %s cert-err09-cpp,cert-err61-cpp %t + +void alwaysThrows() { + int ex = 42; + // CHECK-MESSAGES: warning: throw expression should throw anonymous temporary values instead [cert-err09-cpp] + // CHECK-MESSAGES: warning: throw expression should throw anonymous temporary values instead [cert-err61-cpp] + throw ex; +} + +void doTheJob() { + try { + alwaysThrows(); + } catch (int&) { + } +} |