1212#include " clang/Basic/DiagnosticLex.h"
1313#include " clang/Basic/DiagnosticSema.h"
1414#include " clang/Basic/FileManager.h"
15+ #include " clang/Basic/SourceLocation.h"
1516#include " clang/Basic/SourceManager.h"
1617#include " llvm/ADT/ArrayRef.h"
1718#include " llvm/ADT/IntrusiveRefCntPtr.h"
2021#include " llvm/Support/VirtualFileSystem.h"
2122#include " gmock/gmock.h"
2223#include " gtest/gtest.h"
24+ #include < memory>
2325#include < optional>
2426#include < vector>
2527
@@ -196,7 +198,17 @@ class SuppressionMappingTest : public testing::Test {
196198 return CaptureConsumer.StoredDiags ;
197199 }
198200
201+ SourceLocation locForFile (llvm::StringRef FileName) {
202+ auto Buf = MemoryBuffer::getMemBuffer (" " , FileName);
203+ SourceManager &SM = Diags.getSourceManager ();
204+ FileID FooID = SM.createFileID (std::move (Buf));
205+ return SM.getLocForStartOfFile (FooID);
206+ }
207+
199208private:
209+ FileManager FM{{}, FS};
210+ SourceManager SM{Diags, FM};
211+
200212 class CaptureDiagnosticConsumer : public DiagnosticConsumer {
201213 public:
202214 std::vector<StoredDiagnostic> StoredDiags;
@@ -255,9 +267,9 @@ TEST_F(SuppressionMappingTest, SuppressesGroup) {
255267 clang::ProcessWarningOptions (Diags, Diags.getDiagnosticOptions (), *FS);
256268 EXPECT_THAT (diags (), IsEmpty ());
257269
258- EXPECT_TRUE (
259- Diags.isSuppressedViaMapping (diag::warn_unused_function, " foo.cpp " ));
260- EXPECT_FALSE (Diags.isSuppressedViaMapping (diag::warn_deprecated, " foo.cpp " ));
270+ SourceLocation FooLoc = locForFile ( " foo.cpp " );
271+ EXPECT_TRUE ( Diags.isSuppressedViaMapping (diag::warn_unused_function, FooLoc ));
272+ EXPECT_FALSE (Diags.isSuppressedViaMapping (diag::warn_deprecated, FooLoc ));
261273}
262274
263275TEST_F (SuppressionMappingTest, EmitCategoryIsExcluded) {
@@ -271,10 +283,10 @@ TEST_F(SuppressionMappingTest, EmitCategoryIsExcluded) {
271283 clang::ProcessWarningOptions (Diags, Diags.getDiagnosticOptions (), *FS);
272284 EXPECT_THAT (diags (), IsEmpty ());
273285
274- EXPECT_TRUE (
275- Diags. isSuppressedViaMapping (diag::warn_unused_function, " bar.cpp" ));
276- EXPECT_FALSE (
277- Diags. isSuppressedViaMapping (diag::warn_unused_function, " foo.cpp" ));
286+ EXPECT_TRUE (Diags. isSuppressedViaMapping (diag::warn_unused_function,
287+ locForFile ( " bar.cpp" ) ));
288+ EXPECT_FALSE (Diags. isSuppressedViaMapping (diag::warn_unused_function,
289+ locForFile ( " foo.cpp" ) ));
278290}
279291
280292TEST_F (SuppressionMappingTest, LongestMatchWins) {
@@ -289,12 +301,12 @@ TEST_F(SuppressionMappingTest, LongestMatchWins) {
289301 clang::ProcessWarningOptions (Diags, Diags.getDiagnosticOptions (), *FS);
290302 EXPECT_THAT (diags (), IsEmpty ());
291303
304+ EXPECT_TRUE (Diags.isSuppressedViaMapping (
305+ diag::warn_unused_function, locForFile (" clang/lib/Basic/foo.h" )));
306+ EXPECT_FALSE (Diags.isSuppressedViaMapping (
307+ diag::warn_unused_function, locForFile (" clang/lib/Sema/bar.h" )));
292308 EXPECT_TRUE (Diags.isSuppressedViaMapping (diag::warn_unused_function,
293- " clang/lib/Basic/foo.h" ));
294- EXPECT_FALSE (Diags.isSuppressedViaMapping (diag::warn_unused_function,
295- " clang/lib/Sema/bar.h" ));
296- EXPECT_TRUE (Diags.isSuppressedViaMapping (diag::warn_unused_function,
297- " clang/lib/Sema/foo.h" ));
309+ locForFile (" clang/lib/Sema/foo.h" )));
298310}
299311
300312TEST_F (SuppressionMappingTest, IsIgnored) {
@@ -308,9 +320,7 @@ TEST_F(SuppressionMappingTest, IsIgnored) {
308320 clang::ProcessWarningOptions (Diags, Diags.getDiagnosticOptions (), *FS);
309321 ASSERT_THAT (diags (), IsEmpty ());
310322
311- FileManager FM ({}, FS);
312- SourceManager SM (Diags, FM);
313-
323+ SourceManager &SM = Diags.getSourceManager ();
314324 auto ClangID =
315325 SM.createFileID (llvm::MemoryBuffer::getMemBuffer (" " , " clang/foo.h" ));
316326 auto NonClangID =
0 commit comments