Remap after prepending cwd

This commit is contained in:
Andy Wang 2021-05-15 19:36:42 +01:00
parent b76ce69606
commit 1ced98ac65
No known key found for this signature in database
GPG Key ID: 181B49F9F38F3374

View File

@ -497,11 +497,22 @@ fn encode_source_map(&mut self) -> Lazy<[rustc_span::SourceFile]> {
let working_dir = &self.tcx.sess.working_dir;
match working_dir {
RealFileName::LocalPath(absolute) => {
// If working_dir has not been remapped, then we emit a
// LocalPath variant as it's likely to be a valid path
RealFileName::LocalPath(
Path::new(absolute).join(path_to_file),
)
// Although neither working_dir or the file name were subject
// to path remapping, the concatenation between the two may
// be. Hence we need to do a remapping here.
let joined = Path::new(absolute).join(path_to_file);
let (joined, remapped) =
source_map.path_mapping().map_prefix(joined);
if remapped {
RealFileName::Remapped {
local_path: None,
virtual_name: joined,
}
} else {
RealFileName::LocalPath(
Path::new(absolute).join(path_to_file),
)
}
}
RealFileName::Remapped { local_path: _, virtual_name } => {
// If working_dir has been remapped, then we emit