From b4f30569208bfe416821a6a096e29af93d5dc066 Mon Sep 17 00:00:00 2001 From: Vitaly Buka Date: Mon, 13 Oct 2025 15:03:25 -0700 Subject: [PATCH] =?UTF-8?q?[=F0=9D=98=80=F0=9D=97=BD=F0=9D=97=BF]=20change?= =?UTF-8?q?s=20to=20main=20this=20commit=20is=20based=20on?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Created using spr 1.3.6 [skip ci] --- clang/unittests/Basic/DiagnosticTest.cpp | 47 +++++++++++++++--------- 1 file changed, 30 insertions(+), 17 deletions(-) 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 #include #include #include @@ -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 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) {