@@ -360,4 +360,27 @@ TEST_F(SuppressionMappingTest, ParsingRespectsOtherWarningOpts) {
360
360
clang::ProcessWarningOptions (Diags, Diags.getDiagnosticOptions (), *FS);
361
361
EXPECT_THAT (diags (), IsEmpty ());
362
362
}
363
+
364
+ TEST_F (SuppressionMappingTest, ForwardSlashMatchesBothDirections) {
365
+ llvm::StringLiteral SuppressionMappingFile = R"(
366
+ [unused]
367
+ src:*clang/*
368
+ src:*clang/lib/Sema/*=emit
369
+ src:*clang/lib\\Sema/foo*)" ;
370
+ Diags.getDiagnosticOptions ().DiagnosticSuppressionMappingsFile = " foo.txt" ;
371
+ FS->addFile (" foo.txt" , /* ModificationTime=*/ {},
372
+ llvm::MemoryBuffer::getMemBuffer (SuppressionMappingFile));
373
+ clang::ProcessWarningOptions (Diags, Diags.getDiagnosticOptions (), *FS);
374
+ EXPECT_THAT (diags (), IsEmpty ());
375
+
376
+ EXPECT_TRUE (Diags.isSuppressedViaMapping (
377
+ diag::warn_unused_function, locForFile (R"( clang/lib/Basic/foo.h)" )));
378
+ EXPECT_FALSE (Diags.isSuppressedViaMapping (
379
+ diag::warn_unused_function, locForFile (R"( clang/lib/Sema\bar.h)" )));
380
+ EXPECT_TRUE (Diags.isSuppressedViaMapping (
381
+ diag::warn_unused_function, locForFile (R"( clang\lib\Sema/foo.h)" )));
382
+ // The third pattern requires a literal backslash before Sema
383
+ EXPECT_FALSE (Diags.isSuppressedViaMapping (
384
+ diag::warn_unused_function, locForFile (R"( clang/lib/Sema/foo.h)" )));
385
+ }
363
386
} // namespace
0 commit comments