Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[llvm][vfs] For virtual directories, use the virtual path as the real…
… path A follow-up to D135841. This patch returns the virtual path for directories from `RedirectingFileSystem`. This ensures the contents of `Path` are the same as the contents of `FS->getRealPath(Path)`. This also means we can drop the workaround in Clang's module map canonicalization, where we couldn't use the real path for a directory if it resolved to a different `DirectoryEntry`. In addition to that, we can also avoid introducing new workaround for a bug triggered by the newly introduced test case. Reviewed By: benlangmuir Differential Revision: https://reviews.llvm.org/D135849
- Loading branch information
1 parent
7436d4b
commit d77588d
Showing
5 changed files
with
117 additions
and
26 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
71 changes: 71 additions & 0 deletions
71
clang/test/ClangScanDeps/modules-canononical-module-map-case.c
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
// This test checks that VFS-mapped module map path has the correct spelling | ||
// after canonicalization, even if it was first accessed using different case. | ||
|
||
// RUN: rm -rf %t | ||
// RUN: split-file %s %t | ||
|
||
//--- actual/One.h | ||
#import <FW/Two.h> | ||
//--- actual/Two.h | ||
// empty | ||
//--- frameworks/FW.framework/Modules/module.modulemap | ||
framework module FW { | ||
header "One.h" | ||
header "Two.h" | ||
} | ||
//--- tu.m | ||
#import <fw/One.h> | ||
|
||
//--- overlay.json.in | ||
{ | ||
"version": 0, | ||
"case-sensitive": "false", | ||
"roots": [ | ||
{ | ||
"contents": [ | ||
{ | ||
"external-contents": "DIR/actual/One.h", | ||
"name": "One.h", | ||
"type": "file" | ||
}, | ||
{ | ||
"external-contents": "DIR/actual/Two.h", | ||
"name": "Two.h", | ||
"type": "file" | ||
} | ||
], | ||
"name": "DIR/frameworks/FW.framework/Headers", | ||
"type": "directory" | ||
} | ||
] | ||
} | ||
|
||
//--- cdb.json.in | ||
[{ | ||
"directory": "DIR", | ||
"file": "DIR/tu.m", | ||
"command": "clang -fmodules -fmodules-cache-path=DIR/cache -ivfsoverlay DIR/overlay.json -F DIR/frameworks -c DIR/tu.m -o DIR/tu.o" | ||
}] | ||
|
||
// RUN: sed -e "s|DIR|%/t|g" %t/cdb.json.in > %t/cdb.json | ||
// RUN: sed -e "s|DIR|%/t|g" %t/overlay.json.in > %t/overlay.json | ||
// RUN: clang-scan-deps -compilation-database %t/cdb.json -format experimental-full > %t/result.json | ||
// RUN: cat %t/result.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t | ||
|
||
// CHECK: { | ||
// CHECK-NEXT: "modules": [ | ||
// CHECK-NEXT: { | ||
// CHECK-NEXT: "clang-module-deps": [], | ||
// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/frameworks/FW.framework/Modules/module.modulemap", | ||
// CHECK-NEXT: "command-line": [ | ||
// CHECK: "-x" | ||
// CHECK-NEXT: "objective-c" | ||
// CHECK-NEXT: "[[PREFIX]]/frameworks/FW.framework/Modules/module.modulemap" | ||
// CHECK: ], | ||
// CHECK-NEXT: "context-hash": "{{.*}}", | ||
// CHECK-NEXT: "file-deps": [ | ||
// CHECK: ], | ||
// CHECK-NEXT: "name": "FW" | ||
// CHECK-NEXT: } | ||
// CHECK-NEXT: ] | ||
// CHECK: } |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters