diff options
author | Ben Langmuir <blangmuir@apple.com> | 2022-08-01 18:08:24 -0700 |
---|---|---|
committer | Ben Langmuir <blangmuir@apple.com> | 2022-08-03 09:41:08 -0700 |
commit | 6a79e2ff1989b48f4a8ebf3ac51092eb8ad29e37 (patch) | |
tree | 7d8346aec6a702471f2d5291502e01c6be302468 /clang/unittests/Basic | |
parent | 446b61cff4ea0cb7e7fcc5e0fec7bc749d379b08 (diff) | |
download | llvm-6a79e2ff1989b48f4a8ebf3ac51092eb8ad29e37.zip llvm-6a79e2ff1989b48f4a8ebf3ac51092eb8ad29e37.tar.gz llvm-6a79e2ff1989b48f4a8ebf3ac51092eb8ad29e37.tar.bz2 |
[clang] Add FileEntryRef::getNameAsRequested()
As progress towards having FileManager::getFileRef() return the path
as-requested by default, return a FileEntryRef that can use
getNameAsRequested() to retrieve this path, with the ultimate goal that
this should be the behaviour of getName() and clients should explicitly
request the "external" name if they need to (see comment in
FileManager::getFileRef). For now, getName() continues to return the
external path by looking through the redirects.
For now, the new function is only used in unit tests.
Differential Revision: https://reviews.llvm.org/D131004
Diffstat (limited to 'clang/unittests/Basic')
-rw-r--r-- | clang/unittests/Basic/FileEntryTest.cpp | 27 | ||||
-rw-r--r-- | clang/unittests/Basic/FileManagerTest.cpp | 6 |
2 files changed, 32 insertions, 1 deletions
diff --git a/clang/unittests/Basic/FileEntryTest.cpp b/clang/unittests/Basic/FileEntryTest.cpp index 6c070fb..4249a3d 100644 --- a/clang/unittests/Basic/FileEntryTest.cpp +++ b/clang/unittests/Basic/FileEntryTest.cpp @@ -50,6 +50,14 @@ public: const_cast<FileEntry &>(Base.getFileEntry()), DR)}) .first); } + FileEntryRef addFileRedirect(StringRef Name, FileEntryRef Base) { + return FileEntryRef( + *Files + .insert({Name, FileEntryRef::MapValue( + const_cast<FileEntryRef::MapEntry &>( + Base.getMapEntry()))}) + .first); + } }; namespace { @@ -58,13 +66,23 @@ TEST(FileEntryTest, FileEntryRef) { FileEntryRef R1 = Refs.addFile("1"); FileEntryRef R2 = Refs.addFile("2"); FileEntryRef R1Also = Refs.addFileAlias("1-also", R1); + FileEntryRef R1Redirect = Refs.addFileRedirect("1-redirect", R1); + FileEntryRef R1Redirect2 = Refs.addFileRedirect("1-redirect2", R1Redirect); EXPECT_EQ("1", R1.getName()); EXPECT_EQ("2", R2.getName()); EXPECT_EQ("1-also", R1Also.getName()); + EXPECT_EQ("1", R1Redirect.getName()); + EXPECT_EQ("1", R1Redirect2.getName()); + + EXPECT_EQ("1", R1.getNameAsRequested()); + EXPECT_EQ("1-redirect", R1Redirect.getNameAsRequested()); + EXPECT_EQ("1-redirect2", R1Redirect2.getNameAsRequested()); EXPECT_NE(&R1.getFileEntry(), &R2.getFileEntry()); EXPECT_EQ(&R1.getFileEntry(), &R1Also.getFileEntry()); + EXPECT_EQ(&R1.getFileEntry(), &R1Redirect.getFileEntry()); + EXPECT_EQ(&R1Redirect.getFileEntry(), &R1Redirect2.getFileEntry()); const FileEntry *CE1 = R1; EXPECT_EQ(CE1, &R1.getFileEntry()); @@ -93,6 +111,8 @@ TEST(FileEntryTest, equals) { FileEntryRef R1 = Refs.addFile("1"); FileEntryRef R2 = Refs.addFile("2"); FileEntryRef R1Also = Refs.addFileAlias("1-also", R1); + FileEntryRef R1Redirect = Refs.addFileRedirect("1-redirect", R1); + FileEntryRef R1Redirect2 = Refs.addFileRedirect("1-redirect2", R1Redirect); EXPECT_EQ(R1, &R1.getFileEntry()); EXPECT_EQ(&R1.getFileEntry(), R1); @@ -100,6 +120,8 @@ TEST(FileEntryTest, equals) { EXPECT_NE(R1, &R2.getFileEntry()); EXPECT_NE(&R2.getFileEntry(), R1); EXPECT_NE(R1, R2); + EXPECT_EQ(R1, R1Redirect); + EXPECT_EQ(R1, R1Redirect2); OptionalFileEntryRefDegradesToFileEntryPtr M1 = R1; @@ -114,11 +136,16 @@ TEST(FileEntryTest, isSameRef) { FileEntryRef R1 = Refs.addFile("1"); FileEntryRef R2 = Refs.addFile("2"); FileEntryRef R1Also = Refs.addFileAlias("1-also", R1); + FileEntryRef R1Redirect = Refs.addFileRedirect("1-redirect", R1); + FileEntryRef R1Redirect2 = Refs.addFileRedirect("1-redirect2", R1Redirect); EXPECT_TRUE(R1.isSameRef(FileEntryRef(R1))); EXPECT_TRUE(R1.isSameRef(FileEntryRef(R1.getMapEntry()))); EXPECT_FALSE(R1.isSameRef(R2)); EXPECT_FALSE(R1.isSameRef(R1Also)); + EXPECT_FALSE(R1.isSameRef(R1Redirect)); + EXPECT_FALSE(R1.isSameRef(R1Redirect2)); + EXPECT_FALSE(R1Redirect.isSameRef(R1Redirect2)); } TEST(FileEntryTest, DenseMapInfo) { diff --git a/clang/unittests/Basic/FileManagerTest.cpp b/clang/unittests/Basic/FileManagerTest.cpp index 6e60bba..419c497 100644 --- a/clang/unittests/Basic/FileManagerTest.cpp +++ b/clang/unittests/Basic/FileManagerTest.cpp @@ -356,9 +356,13 @@ TEST_F(FileManagerTest, getFileRefEquality) { EXPECT_EQ("dir/f1.cpp", F1Redirect->getName()); EXPECT_EQ("dir/f2.cpp", F2->getName()); + EXPECT_EQ("dir/f1.cpp", F1->getNameAsRequested()); + EXPECT_EQ("dir/f1-redirect.cpp", F1Redirect->getNameAsRequested()); + // Compare against FileEntry*. EXPECT_EQ(&F1->getFileEntry(), *F1); EXPECT_EQ(*F1, &F1->getFileEntry()); + EXPECT_EQ(&F1->getFileEntry(), &F1Redirect->getFileEntry()); EXPECT_NE(&F2->getFileEntry(), *F1); EXPECT_NE(*F1, &F2->getFileEntry()); @@ -374,7 +378,7 @@ TEST_F(FileManagerTest, getFileRefEquality) { // Compare using isSameRef. EXPECT_TRUE(F1->isSameRef(*F1Again)); - EXPECT_TRUE(F1->isSameRef(*F1Redirect)); + EXPECT_FALSE(F1->isSameRef(*F1Redirect)); EXPECT_FALSE(F1->isSameRef(*F1Also)); EXPECT_FALSE(F1->isSameRef(*F2)); } |