aboutsummaryrefslogtreecommitdiff
path: root/clang/unittests/Basic
diff options
context:
space:
mode:
authorBen Langmuir <blangmuir@apple.com>2022-08-01 18:08:24 -0700
committerBen Langmuir <blangmuir@apple.com>2022-08-03 09:41:08 -0700
commit6a79e2ff1989b48f4a8ebf3ac51092eb8ad29e37 (patch)
tree7d8346aec6a702471f2d5291502e01c6be302468 /clang/unittests/Basic
parent446b61cff4ea0cb7e7fcc5e0fec7bc749d379b08 (diff)
downloadllvm-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.cpp27
-rw-r--r--clang/unittests/Basic/FileManagerTest.cpp6
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));
}