[clang] b09dea1 - [NFC][Diagnostic] Try all permutations in longest match test (#163277)
via cfe-commits
cfe-commits at lists.llvm.org
Mon Oct 13 20:45:45 PDT 2025
Author: Vitaly Buka
Date: 2025-10-13T20:45:40-07:00
New Revision: b09dea1ee81d37dbac65e973179f071e5b3dcc78
URL: https://github.com/llvm/llvm-project/commit/b09dea1ee81d37dbac65e973179f071e5b3dcc78
DIFF: https://github.com/llvm/llvm-project/commit/b09dea1ee81d37dbac65e973179f071e5b3dcc78.diff
LOG: [NFC][Diagnostic] Try all permutations in longest match test (#163277)
* Test reordering of rules.
* Test same length rules for emit and suppress.
Follow up to #162409, to confirm it does not affect this behavior.
Added:
Modified:
clang/unittests/Basic/DiagnosticTest.cpp
Removed:
################################################################################
diff --git a/clang/unittests/Basic/DiagnosticTest.cpp b/clang/unittests/Basic/DiagnosticTest.cpp
index de090864e5095..0f1b1d8865af7 100644
--- a/clang/unittests/Basic/DiagnosticTest.cpp
+++ b/clang/unittests/Basic/DiagnosticTest.cpp
@@ -21,6 +21,7 @@
#include "llvm/Support/VirtualFileSystem.h"
#include "gmock/gmock.h"
#include "gtest/gtest.h"
+#include <algorithm>
#include <memory>
#include <optional>
#include <vector>
@@ -295,23 +296,35 @@ TEST_F(SuppressionMappingTest, EmitCategoryIsExcluded) {
}
TEST_F(SuppressionMappingTest, LongestMatchWins) {
- llvm::StringLiteral SuppressionMappingFile = R"(
- [unused]
- src:*clang/*
- src:*clang/lib/Sema/*=emit
- src:*clang/lib/Sema/foo*)";
- Diags.getDiagnosticOptions().DiagnosticSuppressionMappingsFile = "foo.txt";
- FS->addFile("foo.txt", /*ModificationTime=*/{},
- llvm::MemoryBuffer::getMemBuffer(SuppressionMappingFile));
- clang::ProcessWarningOptions(Diags, Diags.getDiagnosticOptions(), *FS);
- EXPECT_THAT(diags(), IsEmpty());
-
- EXPECT_TRUE(Diags.isSuppressedViaMapping(
- diag::warn_unused_function, locForFile("clang/lib/Basic/foo.h")));
- EXPECT_FALSE(Diags.isSuppressedViaMapping(
- diag::warn_unused_function, locForFile("clang/lib/Sema/bar.h")));
- EXPECT_TRUE(Diags.isSuppressedViaMapping(diag::warn_unused_function,
- locForFile("clang/lib/Sema/foo.h")));
+ StringRef Lines[] = {
+ "[unused]",
+ "src:*clang/*",
+ "src:*clang/lib/Sema/*",
+ "src:*clang/lib/Sema/*=emit",
+ "src:*clang/lib/Sema/foo*",
+ };
+ llvm::MutableArrayRef<StringRef> Rules = Lines;
+ Rules = Rules.drop_front();
+ llvm::sort(Rules);
+
+ do {
+ Diags.getDiagnosticOptions().DiagnosticSuppressionMappingsFile = "foo.txt";
+ std::string Contents = join(std::begin(Lines), std::end(Lines), "\n");
+ FS->addFile("foo.txt", /*ModificationTime=*/{},
+ llvm::MemoryBuffer::getMemBuffer(Contents));
+ clang::ProcessWarningOptions(Diags, Diags.getDiagnosticOptions(), *FS);
+ EXPECT_THAT(diags(), IsEmpty());
+
+ EXPECT_TRUE(Diags.isSuppressedViaMapping(
+ diag::warn_unused_function, locForFile("clang/lib/Basic/foo.h")))
+ << Contents;
+ EXPECT_FALSE(Diags.isSuppressedViaMapping(
+ diag::warn_unused_function, locForFile("clang/lib/Sema/bar.h")))
+ << Contents;
+ EXPECT_TRUE(Diags.isSuppressedViaMapping(
+ diag::warn_unused_function, locForFile("clang/lib/Sema/foo.h")))
+ << Contents;
+ } while (std::next_permutation(Rules.begin(), Rules.end()));
}
TEST_F(SuppressionMappingTest, LongShortMatch) {
More information about the cfe-commits
mailing list