================
@@ -778,43 +776,35 @@ std::vector<ClangTidyError>
ClangTidyDiagnosticConsumer::take() {
llvm::stable_sort(Errors, LessClangTidyError());
Errors.erase(llvm::unique(Errors, EqualClangTidyError()), Errors.end());
- if (RemoveIncompatibleErrors)
+ if (RemoveIncompatibleErrors) {
+ removeDuplicatedDiagnosticsOfAliasCheckers();
removeIncompatibleErrors();
+ }
return std::move(Errors);
}
-namespace {
-struct LessClangTidyErrorWithoutDiagnosticName {
- bool operator()(const ClangTidyError *LHS, const ClangTidyError *RHS) const {
- 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);
- }
-};
-} // end anonymous namespace
-
void ClangTidyDiagnosticConsumer::removeDuplicatedDiagnosticsOfAliasCheckers()
{
- using UniqueErrorSet =
- std::set<ClangTidyError *, LessClangTidyErrorWithoutDiagnosticName>;
- UniqueErrorSet UniqueErrors;
+ if (Errors.size() <= 1)
+ return;
- auto IT = Errors.begin();
- while (IT != Errors.end()) {
- ClangTidyError &Error = *IT;
- const std::pair<UniqueErrorSet::iterator, bool> Inserted =
- UniqueErrors.insert(&Error);
+ static constexpr auto Projection = [](const ClangTidyError &E) {
+ const tooling::DiagnosticMessage &M = E.Message;
+ return std::tie(M.FilePath, M.FileOffset, M.Message);
+ };
+ auto LastUniqueError = Errors.begin();
----------------
vbvictor wrote:
```suggestion
auto LastUniqueErrorIt = Errors.begin();
```
https://github.com/llvm/llvm-project/pull/174237
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits