summary refs log tree commit diff
path: root/src/librustc_metadata
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2020-06-01 15:42:51 +0000
committerbors <bors@rust-lang.org>2020-06-01 15:42:51 +0000
commit49cae55760da0a43428eba73abcb659bb70cf2e4 (patch)
tree4aaa1c51870e6e83fda6d1c86d6bac54457ab89b /src/librustc_metadata
parent02c25b359e667d2eba0da4d9e75408d675b7a4d5 (diff)
parent68a0acd6341440bd6ae6e0b612f558b10e6d522f (diff)
downloadrust-1.44.0.tar.gz
rust-1.44.0.zip
Auto merge of #72883 - Mark-Simulacrum:stable-next, r=Mark-Simulacrum 1.44.0
[stable] 1.44 release

This includes a release notes update as usual and a backport of #72767.

r? @ghost
Diffstat (limited to 'src/librustc_metadata')
-rw-r--r--src/librustc_metadata/rmeta/decoder.rs25
-rw-r--r--src/librustc_metadata/rmeta/encoder.rs1
2 files changed, 17 insertions, 9 deletions
diff --git a/src/librustc_metadata/rmeta/decoder.rs b/src/librustc_metadata/rmeta/decoder.rs
index e1ac4d13416..cd981626035 100644
--- a/src/librustc_metadata/rmeta/decoder.rs
+++ b/src/librustc_metadata/rmeta/decoder.rs
@@ -1485,15 +1485,22 @@ impl<'a, 'tcx> CrateMetadataRef<'a> {
 
             if let Some(virtual_dir) = virtual_rust_source_base_dir {
                 if let Some(real_dir) = &sess.real_rust_source_base_dir {
-                    if let rustc_span::FileName::Real(path) = name {
-                        if let Ok(rest) = path.strip_prefix(virtual_dir) {
-                            let new_path = real_dir.join(rest);
-                            debug!(
-                                "try_to_translate_virtual_to_real: `{}` -> `{}`",
-                                path.display(),
-                                new_path.display(),
-                            );
-                            *path = new_path;
+                    if let rustc_span::FileName::Real(old_name) = name {
+                        if let rustc_span::RealFileName::Named(one_path) = old_name {
+                            if let Ok(rest) = one_path.strip_prefix(virtual_dir) {
+                                let virtual_name = one_path.clone();
+                                let new_path = real_dir.join(rest);
+                                debug!(
+                                    "try_to_translate_virtual_to_real: `{}` -> `{}`",
+                                    virtual_name.display(),
+                                    new_path.display(),
+                                );
+                                let new_name = rustc_span::RealFileName::Devirtualized {
+                                    local_path: new_path,
+                                    virtual_name,
+                                };
+                                *old_name = new_name;
+                            }
                         }
                     }
                 }
diff --git a/src/librustc_metadata/rmeta/encoder.rs b/src/librustc_metadata/rmeta/encoder.rs
index 9c9869c8557..b739882b7aa 100644
--- a/src/librustc_metadata/rmeta/encoder.rs
+++ b/src/librustc_metadata/rmeta/encoder.rs
@@ -398,6 +398,7 @@ impl<'tcx> EncodeContext<'tcx> {
                     // any relative paths are potentially relative to a
                     // wrong directory.
                     FileName::Real(ref name) => {
+                        let name = name.stable_name();
                         let mut adapted = (**source_file).clone();
                         adapted.name = Path::new(&working_dir).join(name).into();
                         adapted.name_hash = {