aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Basic/FileManager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib/Basic/FileManager.cpp')
-rw-r--r--clang/lib/Basic/FileManager.cpp16
1 files changed, 2 insertions, 14 deletions
diff --git a/clang/lib/Basic/FileManager.cpp b/clang/lib/Basic/FileManager.cpp
index b66780a..451c7c3 100644
--- a/clang/lib/Basic/FileManager.cpp
+++ b/clang/lib/Basic/FileManager.cpp
@@ -274,8 +274,8 @@ FileManager::getFileRef(StringRef Filename, bool openFile, bool CacheFailure) {
if (!UFE)
UFE = new (FilesAlloc.Allocate()) FileEntry();
- if (Status.getName() == Filename) {
- // The name matches. Set the FileEntry.
+ if (!Status.ExposesExternalVFSPath || Status.getName() == Filename) {
+ // Use the requested name. Set the FileEntry.
NamedFileEnt->second = FileEntryRef::MapValue(*UFE, DirInfo);
} else {
// Name mismatch. We need a redirect. First grab the actual entry we want
@@ -292,19 +292,7 @@ FileManager::getFileRef(StringRef Filename, bool openFile, bool CacheFailure) {
// filesystems behave and confuses parts of clang expect to see the
// name-as-accessed on the \a FileEntryRef.
//
- // Further, it isn't *just* external names, but will also give back absolute
- // paths when a relative path was requested - the check is comparing the
- // name from the status, which is passed an absolute path resolved from the
- // current working directory. `clang-apply-replacements` appears to depend
- // on this behaviour, though it's adjusting the working directory, which is
- // definitely not supported. Once that's fixed this hack should be able to
- // be narrowed to only when there's an externally mapped name given back.
- //
// A potential plan to remove this is as follows -
- // - Add API to determine if the name has been rewritten by the VFS.
- // - Fix `clang-apply-replacements` to pass down the absolute path rather
- // than changing the CWD. Narrow this hack down to just externally
- // mapped paths.
// - Expose the requested filename. One possibility would be to allow
// redirection-FileEntryRefs to be returned, rather than returning
// the pointed-at-FileEntryRef, and customizing `getName()` to look