diff options
Diffstat (limited to 'clang/unittests/Basic/DiagnosticTest.cpp')
-rw-r--r-- | clang/unittests/Basic/DiagnosticTest.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/clang/unittests/Basic/DiagnosticTest.cpp b/clang/unittests/Basic/DiagnosticTest.cpp index 4b3af00..de09086 100644 --- a/clang/unittests/Basic/DiagnosticTest.cpp +++ b/clang/unittests/Basic/DiagnosticTest.cpp @@ -314,6 +314,42 @@ TEST_F(SuppressionMappingTest, LongestMatchWins) { locForFile("clang/lib/Sema/foo.h"))); } +TEST_F(SuppressionMappingTest, LongShortMatch) { + llvm::StringLiteral SuppressionMappingFile = R"( + [unused] + src:*test/* + src:*lld/*=emit)"; + 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("test/t1.cpp"))); + + // FIXME: This is confusing. + EXPECT_TRUE(Diags.isSuppressedViaMapping(diag::warn_unused_function, + locForFile("lld/test/t2.cpp"))); +} + +TEST_F(SuppressionMappingTest, ShortLongMatch) { + llvm::StringLiteral SuppressionMappingFile = R"( + [unused] + src:*lld/*=emit + src:*test/*)"; + 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("test/t1.cpp"))); + EXPECT_TRUE(Diags.isSuppressedViaMapping(diag::warn_unused_function, + locForFile("lld/test/t2.cpp"))); +} + TEST_F(SuppressionMappingTest, IsIgnored) { llvm::StringLiteral SuppressionMappingFile = R"( [unused] |