2525#include " llvm/ADT/IntrusiveRefCntPtr.h"
2626#include " llvm/ADT/SmallVector.h"
2727#include " llvm/ADT/StringRef.h"
28+ #include " llvm/Support/Error.h"
2829#include " llvm/Support/MemoryBuffer.h"
2930#include " llvm/Support/ScopedPrinter.h"
3031#include " llvm/Support/VirtualFileSystem.h"
3940
4041namespace clang ::include_cleaner {
4142namespace {
43+ using testing::_;
4244using testing::AllOf;
4345using testing::Contains;
4446using testing::ElementsAre;
@@ -262,10 +264,12 @@ int x = a + c;
262264 auto Results =
263265 analyze (std::vector<Decl *>{Decls.begin (), Decls.end ()},
264266 PP.MacroReferences , PP.Includes , &PI, AST.preprocessor ());
267+ auto CHeader = llvm::cantFail (
268+ AST.context ().getSourceManager ().getFileManager ().getFileRef (" c.h" ));
265269
266270 const Include *B = PP.Includes .atLine (3 );
267271 ASSERT_EQ (B->Spelled , " b.h" );
268- EXPECT_THAT (Results.Missing , ElementsAre (" \" c.h\" " ));
272+ EXPECT_THAT (Results.Missing , ElementsAre (Pair ( " \" c.h\" " , Header (CHeader)) ));
269273 EXPECT_THAT (Results.Unused , ElementsAre (B));
270274}
271275
@@ -370,7 +374,7 @@ TEST_F(AnalyzeTest, SpellingIncludesWithSymlinks) {
370374 auto Results = analyze (DeclsInTU, {}, PP.Includes , &PI, AST.preprocessor ());
371375 // Check that we're spelling header using the symlink, and not underlying
372376 // path.
373- EXPECT_THAT (Results.Missing , testing::ElementsAre (" \" inner.h\" " ));
377+ EXPECT_THAT (Results.Missing , testing::ElementsAre (Pair ( " \" inner.h\" " , _) ));
374378 // header.h should be unused.
375379 EXPECT_THAT (Results.Unused , Not (testing::IsEmpty ()));
376380
@@ -379,7 +383,7 @@ TEST_F(AnalyzeTest, SpellingIncludesWithSymlinks) {
379383 auto HeaderFilter = [](llvm::StringRef Path) { return Path == " inner.h" ; };
380384 Results = analyze (DeclsInTU, {}, PP.Includes , &PI, AST.preprocessor (),
381385 HeaderFilter);
382- EXPECT_THAT (Results.Missing , testing::ElementsAre (" \" inner.h\" " ));
386+ EXPECT_THAT (Results.Missing , testing::ElementsAre (Pair ( " \" inner.h\" " , _) ));
383387 // header.h should be unused.
384388 EXPECT_THAT (Results.Unused , Not (testing::IsEmpty ()));
385389 }
@@ -389,7 +393,7 @@ TEST_F(AnalyzeTest, SpellingIncludesWithSymlinks) {
389393 HeaderFilter);
390394 // header.h should be ignored now.
391395 EXPECT_THAT (Results.Unused , Not (testing::IsEmpty ()));
392- EXPECT_THAT (Results.Missing , testing::ElementsAre (" \" inner.h\" " ));
396+ EXPECT_THAT (Results.Missing , testing::ElementsAre (Pair ( " \" inner.h\" " , _) ));
393397 }
394398}
395399
@@ -414,9 +418,9 @@ TEST(FixIncludes, Basic) {
414418 Inc.add (I);
415419
416420 AnalysisResults Results;
417- Results.Missing .push_back (" \" aa.h\" " );
418- Results.Missing .push_back (" \" ab.h\" " );
419- Results.Missing .push_back (" <e.h>" );
421+ Results.Missing .emplace_back (" \" aa.h\" " , Header ( " " ) );
422+ Results.Missing .emplace_back (" \" ab.h\" " , Header ( " " ) );
423+ Results.Missing .emplace_back (" <e.h>" , Header ( " " ) );
420424 Results.Unused .push_back (Inc.atLine (3 ));
421425 Results.Unused .push_back (Inc.atLine (4 ));
422426
@@ -429,7 +433,7 @@ R"cpp(#include "d.h"
429433)cpp" );
430434
431435 Results = {};
432- Results.Missing .push_back (" \" d.h\" " );
436+ Results.Missing .emplace_back (" \" d.h\" " , Header ( " " ) );
433437 Code = R"cpp( #include "a.h")cpp" ;
434438 EXPECT_EQ (fixIncludes (Results, " d.cc" , Code, format::getLLVMStyle ()),
435439R"cpp( #include "d.h"
0 commit comments