about summary refs log tree commit diff
path: root/src/librustc_interface
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2020-05-31 17:14:44 +0000
committerbors <bors@rust-lang.org>2020-05-31 17:14:44 +0000
commit5fd2f06e99a985dd896684cb2c9f8c7090eca1ab (patch)
treee3ddf9eeaff46e86c691e6746efc885c8e68f482 /src/librustc_interface
parentf6072cab136beea206b7cfe79f8d10fccf5af591 (diff)
parenta8e4236edc1e118ccb6c3f3a8d0139e4cd90b5b8 (diff)
Auto merge of #72767 - pnkfelix:track-devirtualized-filenames-issue-70924, r=eddyb
Track devirtualized filenames

Split payload of FileName::Real to track both real and virtualized paths.

(Such splits arise from metadata refs into libstd; the virtualized paths look like `/rustc/1.45.0/src/libstd/io/cursor.rs` rather than `/Users/felixklock/Dev/Mozilla/rust.git/src/libstd/io/cursor.rs`)

This way, we can emit the virtual name into things like the like the StableSourceFileId (as was done back before PR #70642) that ends up in incremental build artifacts, while still using the devirtualized file path when we want to access the file.

Fix #70924
Diffstat (limited to 'src/librustc_interface')
-rw-r--r--src/librustc_interface/passes.rs11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/librustc_interface/passes.rs b/src/librustc_interface/passes.rs
index c06fd91133b..a01170db807 100644
--- a/src/librustc_interface/passes.rs
+++ b/src/librustc_interface/passes.rs
@@ -33,7 +33,7 @@ use rustc_session::output::{filename_for_input, filename_for_metadata};
 use rustc_session::search_paths::PathKind;
 use rustc_session::Session;
 use rustc_span::symbol::Symbol;
-use rustc_span::FileName;
+use rustc_span::{FileName, RealFileName};
 use rustc_trait_selection::traits;
 use rustc_typeck as typeck;
 
@@ -569,13 +569,16 @@ fn write_out_deps(
                 for cnum in resolver.cstore().crates_untracked() {
                     let source = resolver.cstore().crate_source_untracked(cnum);
                     if let Some((path, _)) = source.dylib {
-                        files.push(escape_dep_filename(&FileName::Real(path)));
+                        let file_name = FileName::Real(RealFileName::Named(path));
+                        files.push(escape_dep_filename(&file_name));
                     }
                     if let Some((path, _)) = source.rlib {
-                        files.push(escape_dep_filename(&FileName::Real(path)));
+                        let file_name = FileName::Real(RealFileName::Named(path));
+                        files.push(escape_dep_filename(&file_name));
                     }
                     if let Some((path, _)) = source.rmeta {
-                        files.push(escape_dep_filename(&FileName::Real(path)));
+                        let file_name = FileName::Real(RealFileName::Named(path));
+                        files.push(escape_dep_filename(&file_name));
                     }
                 }
             });