diff options
| author | Andy Wang <qian.wang19@imperial.ac.uk> | 2021-04-10 13:48:06 +0100 |
|---|---|---|
| committer | Andy Wang <cbeuw.andy@gmail.com> | 2021-05-05 15:10:57 +0100 |
| commit | 04079190835c04e8c671daef492144dfe06564ab (patch) | |
| tree | eb1ae6913927e715446fdfd90a6d5de0062d8319 /compiler/rustc_session | |
| parent | 9e0426d7842c4a603237789b59e6c491d2dd3b4a (diff) | |
| download | rust-04079190835c04e8c671daef492144dfe06564ab.tar.gz rust-04079190835c04e8c671daef492144dfe06564ab.zip | |
Use RealFileName for Session::working_dir as it may also be remapped
Diffstat (limited to 'compiler/rustc_session')
| -rw-r--r-- | compiler/rustc_session/src/session.rs | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/compiler/rustc_session/src/session.rs b/compiler/rustc_session/src/session.rs index e7dfc4b8c41..724ad35855e 100644 --- a/compiler/rustc_session/src/session.rs +++ b/compiler/rustc_session/src/session.rs @@ -23,8 +23,8 @@ use rustc_errors::registry::Registry; use rustc_errors::{Diagnostic, DiagnosticBuilder, DiagnosticId, ErrorReported}; use rustc_lint_defs::FutureBreakage; pub use rustc_span::crate_disambiguator::CrateDisambiguator; -use rustc_span::edition::Edition; use rustc_span::source_map::{FileLoader, MultiSpan, RealFileLoader, SourceMap, Span}; +use rustc_span::{edition::Edition, RealFileName}; use rustc_span::{sym, SourceFileHashAlgorithm, Symbol}; use rustc_target::asm::InlineAsmArch; use rustc_target::spec::{CodeModel, PanicStrategy, RelocModel, RelroLevel}; @@ -125,9 +125,8 @@ pub struct Session { /// The name of the root source file of the crate, in the local file system. /// `None` means that there is no source file. pub local_crate_source_file: Option<PathBuf>, - /// The directory the compiler has been executed in plus a flag indicating - /// if the value stored here has been affected by path remapping. - pub working_dir: (PathBuf, bool), + /// The directory the compiler has been executed in + pub working_dir: RealFileName, /// Set of `(DiagnosticId, Option<Span>, message)` tuples tracking /// (sub)diagnostics that have been set once, but should not be set again, @@ -1361,7 +1360,12 @@ pub fn build_session( let working_dir = env::current_dir().unwrap_or_else(|e| { parse_sess.span_diagnostic.fatal(&format!("Current directory is invalid: {}", e)).raise() }); - let working_dir = file_path_mapping.map_prefix(working_dir); + let (path, remapped) = file_path_mapping.map_prefix(working_dir.clone()); + let working_dir = if remapped { + RealFileName::Remapped { local_path: Some(working_dir), virtual_name: path } + } else { + RealFileName::LocalPath(path) + }; let cgu_reuse_tracker = if sopts.debugging_opts.query_dep_graph { CguReuseTracker::new() |
