25
25
#include " llvm/ADT/IntrusiveRefCntPtr.h"
26
26
#include " llvm/ADT/SmallVector.h"
27
27
#include " llvm/ADT/StringRef.h"
28
+ #include " llvm/Support/Error.h"
28
29
#include " llvm/Support/MemoryBuffer.h"
29
30
#include " llvm/Support/ScopedPrinter.h"
30
31
#include " llvm/Support/VirtualFileSystem.h"
39
40
40
41
namespace clang ::include_cleaner {
41
42
namespace {
43
+ using testing::_;
42
44
using testing::AllOf;
43
45
using testing::Contains;
44
46
using testing::ElementsAre;
@@ -262,10 +264,12 @@ int x = a + c;
262
264
auto Results =
263
265
analyze (std::vector<Decl *>{Decls.begin (), Decls.end ()},
264
266
PP.MacroReferences , PP.Includes , &PI, AST.preprocessor ());
267
+ auto CHeader = llvm::cantFail (
268
+ AST.context ().getSourceManager ().getFileManager ().getFileRef (" c.h" ));
265
269
266
270
const Include *B = PP.Includes .atLine (3 );
267
271
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)) ));
269
273
EXPECT_THAT (Results.Unused , ElementsAre (B));
270
274
}
271
275
@@ -370,7 +374,7 @@ TEST_F(AnalyzeTest, SpellingIncludesWithSymlinks) {
370
374
auto Results = analyze (DeclsInTU, {}, PP.Includes , &PI, AST.preprocessor ());
371
375
// Check that we're spelling header using the symlink, and not underlying
372
376
// path.
373
- EXPECT_THAT (Results.Missing , testing::ElementsAre (" \" inner.h\" " ));
377
+ EXPECT_THAT (Results.Missing , testing::ElementsAre (Pair ( " \" inner.h\" " , _) ));
374
378
// header.h should be unused.
375
379
EXPECT_THAT (Results.Unused , Not (testing::IsEmpty ()));
376
380
@@ -379,7 +383,7 @@ TEST_F(AnalyzeTest, SpellingIncludesWithSymlinks) {
379
383
auto HeaderFilter = [](llvm::StringRef Path) { return Path == " inner.h" ; };
380
384
Results = analyze (DeclsInTU, {}, PP.Includes , &PI, AST.preprocessor (),
381
385
HeaderFilter);
382
- EXPECT_THAT (Results.Missing , testing::ElementsAre (" \" inner.h\" " ));
386
+ EXPECT_THAT (Results.Missing , testing::ElementsAre (Pair ( " \" inner.h\" " , _) ));
383
387
// header.h should be unused.
384
388
EXPECT_THAT (Results.Unused , Not (testing::IsEmpty ()));
385
389
}
@@ -389,7 +393,7 @@ TEST_F(AnalyzeTest, SpellingIncludesWithSymlinks) {
389
393
HeaderFilter);
390
394
// header.h should be ignored now.
391
395
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\" " , _) ));
393
397
}
394
398
}
395
399
@@ -414,9 +418,9 @@ TEST(FixIncludes, Basic) {
414
418
Inc.add (I);
415
419
416
420
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 ( " " ) );
420
424
Results.Unused .push_back (Inc.atLine (3 ));
421
425
Results.Unused .push_back (Inc.atLine (4 ));
422
426
@@ -429,7 +433,7 @@ R"cpp(#include "d.h"
429
433
)cpp" );
430
434
431
435
Results = {};
432
- Results.Missing .push_back (" \" d.h\" " );
436
+ Results.Missing .emplace_back (" \" d.h\" " , Header ( " " ) );
433
437
Code = R"cpp( #include "a.h")cpp" ;
434
438
EXPECT_EQ (fixIncludes (Results, " d.cc" , Code, format::getLLVMStyle ()),
435
439
R"cpp( #include "d.h"
0 commit comments