From f65b0b5dcfeb04e9e6794b32a075432ce3de1ccd Mon Sep 17 00:00:00 2001 From: Ben Barham Date: Mon, 4 Apr 2022 16:38:46 -0700 Subject: Revert "[VFS] RedirectingFileSystem only replace path if not already mapped" This reverts commit 3fda0edc51fd68192a30e302d45db081bb02d7f9, which breaks crash reproducers in very specific circumstances. Specifically, since crash reproducers have `UseExternalNames` set to false, the `File->getFileEntry().getDir()->getName()` call in `DoFrameworkLookup` would use the *cached* directory name instead of the directory of the looked-up file. The plan is to re-commit this patch but to *add* `ExposesExternalVFSPath` rather than replace `IsVFSMapped`. Differential Revision: https://reviews.llvm.org/D123103 --- llvm/unittests/Support/VirtualFileSystemTest.cpp | 44 ++++++++++++------------ 1 file changed, 22 insertions(+), 22 deletions(-) (limited to 'llvm/unittests/Support/VirtualFileSystemTest.cpp') diff --git a/llvm/unittests/Support/VirtualFileSystemTest.cpp b/llvm/unittests/Support/VirtualFileSystemTest.cpp index 61cc37a..1eb7fe6 100644 --- a/llvm/unittests/Support/VirtualFileSystemTest.cpp +++ b/llvm/unittests/Support/VirtualFileSystemTest.cpp @@ -1442,12 +1442,12 @@ TEST_F(VFSFromYAMLTest, MappedFiles) { ErrorOr S = O->status("//root/file1"); ASSERT_FALSE(S.getError()); EXPECT_EQ("//root/foo/bar/a", S->getName()); - EXPECT_TRUE(S->ExposesExternalVFSPath); + EXPECT_TRUE(S->IsVFSMapped); ErrorOr SLower = O->status("//root/foo/bar/a"); EXPECT_EQ("//root/foo/bar/a", SLower->getName()); EXPECT_TRUE(S->equivalent(*SLower)); - EXPECT_FALSE(SLower->ExposesExternalVFSPath); + EXPECT_FALSE(SLower->IsVFSMapped); // file after opening auto OpenedF = O->openFileForRead("//root/file1"); @@ -1455,7 +1455,7 @@ TEST_F(VFSFromYAMLTest, MappedFiles) { auto OpenedS = (*OpenedF)->status(); ASSERT_FALSE(OpenedS.getError()); EXPECT_EQ("//root/foo/bar/a", OpenedS->getName()); - EXPECT_TRUE(OpenedS->ExposesExternalVFSPath); + EXPECT_TRUE(OpenedS->IsVFSMapped); // directory S = O->status("//root/"); @@ -1467,27 +1467,27 @@ TEST_F(VFSFromYAMLTest, MappedFiles) { S = O->status("//root/mappeddir"); ASSERT_FALSE(S.getError()); EXPECT_TRUE(S->isDirectory()); - EXPECT_TRUE(S->ExposesExternalVFSPath); + EXPECT_TRUE(S->IsVFSMapped); EXPECT_TRUE(S->equivalent(*O->status("//root/foo/bar"))); SLower = O->status("//root/foo/bar"); EXPECT_EQ("//root/foo/bar", SLower->getName()); EXPECT_TRUE(S->equivalent(*SLower)); - EXPECT_FALSE(SLower->ExposesExternalVFSPath); + EXPECT_FALSE(SLower->IsVFSMapped); // file in remapped directory S = O->status("//root/mappeddir/a"); ASSERT_FALSE(S.getError()); - EXPECT_FALSE(S->isDirectory()); - EXPECT_TRUE(S->ExposesExternalVFSPath); - EXPECT_EQ("//root/foo/bar/a", S->getName()); + ASSERT_FALSE(S->isDirectory()); + ASSERT_TRUE(S->IsVFSMapped); + ASSERT_EQ("//root/foo/bar/a", S->getName()); // file in remapped directory, with use-external-name=false S = O->status("//root/mappeddir2/a"); ASSERT_FALSE(S.getError()); - EXPECT_FALSE(S->isDirectory()); - EXPECT_FALSE(S->ExposesExternalVFSPath); - EXPECT_EQ("//root/mappeddir2/a", S->getName()); + ASSERT_FALSE(S->isDirectory()); + ASSERT_TRUE(S->IsVFSMapped); + ASSERT_EQ("//root/mappeddir2/a", S->getName()); // file contents in remapped directory OpenedF = O->openFileForRead("//root/mappeddir/a"); @@ -1495,7 +1495,7 @@ TEST_F(VFSFromYAMLTest, MappedFiles) { OpenedS = (*OpenedF)->status(); ASSERT_FALSE(OpenedS.getError()); EXPECT_EQ("//root/foo/bar/a", OpenedS->getName()); - EXPECT_TRUE(OpenedS->ExposesExternalVFSPath); + EXPECT_TRUE(OpenedS->IsVFSMapped); // file contents in remapped directory, with use-external-name=false OpenedF = O->openFileForRead("//root/mappeddir2/a"); @@ -1503,7 +1503,7 @@ TEST_F(VFSFromYAMLTest, MappedFiles) { OpenedS = (*OpenedF)->status(); ASSERT_FALSE(OpenedS.getError()); EXPECT_EQ("//root/mappeddir2/a", OpenedS->getName()); - EXPECT_FALSE(OpenedS->ExposesExternalVFSPath); + EXPECT_TRUE(OpenedS->IsVFSMapped); // broken mapping EXPECT_EQ(O->status("//root/file2").getError(), @@ -1535,12 +1535,12 @@ TEST_F(VFSFromYAMLTest, MappedRoot) { ErrorOr S = O->status("//mappedroot/a"); ASSERT_FALSE(S.getError()); EXPECT_EQ("//root/foo/bar/a", S->getName()); - EXPECT_TRUE(S->ExposesExternalVFSPath); + EXPECT_TRUE(S->IsVFSMapped); ErrorOr SLower = O->status("//root/foo/bar/a"); EXPECT_EQ("//root/foo/bar/a", SLower->getName()); EXPECT_TRUE(S->equivalent(*SLower)); - EXPECT_FALSE(SLower->ExposesExternalVFSPath); + EXPECT_FALSE(SLower->IsVFSMapped); // file after opening auto OpenedF = O->openFileForRead("//mappedroot/a"); @@ -1548,7 +1548,7 @@ TEST_F(VFSFromYAMLTest, MappedRoot) { auto OpenedS = (*OpenedF)->status(); ASSERT_FALSE(OpenedS.getError()); EXPECT_EQ("//root/foo/bar/a", OpenedS->getName()); - EXPECT_TRUE(OpenedS->ExposesExternalVFSPath); + EXPECT_TRUE(OpenedS->IsVFSMapped); EXPECT_EQ(0, NumDiagnostics); } @@ -1696,12 +1696,12 @@ TEST_F(VFSFromYAMLTest, ReturnsRequestedPathVFSMiss) { auto OpenedS = (*OpenedF)->status(); ASSERT_FALSE(OpenedS.getError()); EXPECT_EQ("a", OpenedS->getName()); - EXPECT_FALSE(OpenedS->ExposesExternalVFSPath); + EXPECT_FALSE(OpenedS->IsVFSMapped); auto DirectS = RemappedFS->status("a"); ASSERT_FALSE(DirectS.getError()); EXPECT_EQ("a", DirectS->getName()); - EXPECT_FALSE(DirectS->ExposesExternalVFSPath); + EXPECT_FALSE(DirectS->IsVFSMapped); EXPECT_EQ(0, NumDiagnostics); } @@ -1736,12 +1736,12 @@ TEST_F(VFSFromYAMLTest, ReturnsExternalPathVFSHit) { auto OpenedS = (*OpenedF)->status(); ASSERT_FALSE(OpenedS.getError()); EXPECT_EQ("realname", OpenedS->getName()); - EXPECT_TRUE(OpenedS->ExposesExternalVFSPath); + EXPECT_TRUE(OpenedS->IsVFSMapped); auto DirectS = FS->status("vfsname"); ASSERT_FALSE(DirectS.getError()); EXPECT_EQ("realname", DirectS->getName()); - EXPECT_TRUE(DirectS->ExposesExternalVFSPath); + EXPECT_TRUE(DirectS->IsVFSMapped); EXPECT_EQ(0, NumDiagnostics); } @@ -1776,12 +1776,12 @@ TEST_F(VFSFromYAMLTest, ReturnsInternalPathVFSHit) { auto OpenedS = (*OpenedF)->status(); ASSERT_FALSE(OpenedS.getError()); EXPECT_EQ("vfsname", OpenedS->getName()); - EXPECT_FALSE(OpenedS->ExposesExternalVFSPath); + EXPECT_TRUE(OpenedS->IsVFSMapped); auto DirectS = FS->status("vfsname"); ASSERT_FALSE(DirectS.getError()); EXPECT_EQ("vfsname", DirectS->getName()); - EXPECT_FALSE(DirectS->ExposesExternalVFSPath); + EXPECT_TRUE(DirectS->IsVFSMapped); EXPECT_EQ(0, NumDiagnostics); } -- cgit v1.1