@@ -314,6 +314,42 @@ TEST_F(SuppressionMappingTest, LongestMatchWins) {
314314 locForFile (" clang/lib/Sema/foo.h" )));
315315}
316316
317+ TEST_F (SuppressionMappingTest, LongShortMatch) {
318+ llvm::StringLiteral SuppressionMappingFile = R"(
319+ [unused]
320+ src:*test/*
321+ src:*lld/*=emit)" ;
322+ Diags.getDiagnosticOptions ().DiagnosticSuppressionMappingsFile = " foo.txt" ;
323+ FS->addFile (" foo.txt" , /* ModificationTime=*/ {},
324+ llvm::MemoryBuffer::getMemBuffer (SuppressionMappingFile));
325+ clang::ProcessWarningOptions (Diags, Diags.getDiagnosticOptions (), *FS);
326+ EXPECT_THAT (diags (), IsEmpty ());
327+
328+ EXPECT_TRUE (Diags.isSuppressedViaMapping (diag::warn_unused_function,
329+ locForFile (" test/t1.cpp" )));
330+
331+ // FIXME: This is confusing.
332+ EXPECT_TRUE (Diags.isSuppressedViaMapping (diag::warn_unused_function,
333+ locForFile (" lld/test/t2.cpp" )));
334+ }
335+
336+ TEST_F (SuppressionMappingTest, ShortLongMatch) {
337+ llvm::StringLiteral SuppressionMappingFile = R"(
338+ [unused]
339+ src:*lld/*=emit
340+ src:*test/*)" ;
341+ Diags.getDiagnosticOptions ().DiagnosticSuppressionMappingsFile = " foo.txt" ;
342+ FS->addFile (" foo.txt" , /* ModificationTime=*/ {},
343+ llvm::MemoryBuffer::getMemBuffer (SuppressionMappingFile));
344+ clang::ProcessWarningOptions (Diags, Diags.getDiagnosticOptions (), *FS);
345+ EXPECT_THAT (diags (), IsEmpty ());
346+
347+ EXPECT_TRUE (Diags.isSuppressedViaMapping (diag::warn_unused_function,
348+ locForFile (" test/t1.cpp" )));
349+ EXPECT_TRUE (Diags.isSuppressedViaMapping (diag::warn_unused_function,
350+ locForFile (" lld/test/t2.cpp" )));
351+ }
352+
317353TEST_F (SuppressionMappingTest, IsIgnored) {
318354 llvm::StringLiteral SuppressionMappingFile = R"(
319355 [unused]
0 commit comments