about summary refs log tree commit diff
path: root/src/libsyntax/codemap.rs
diff options
context:
space:
mode:
authorPhilip Craig <philipjcraig@gmail.com>2017-09-30 16:28:48 +1000
committerPhilip Craig <philipjcraig@gmail.com>2017-09-30 16:32:45 +1000
commitc27a82f19352f37a6b04d7733d28c84494c3afd4 (patch)
treed132f77d9e61fe3d4d13d6ee2bafd887e7c5b942 /src/libsyntax/codemap.rs
parent46ef6208f8a3dd0629a9d6c592c2a980e52c9bee (diff)
downloadrust-c27a82f19352f37a6b04d7733d28c84494c3afd4.tar.gz
rust-c27a82f19352f37a6b04d7733d28c84494c3afd4.zip
Don't use remapped path when loading modules and include files
Diffstat (limited to 'src/libsyntax/codemap.rs')
-rw-r--r--src/libsyntax/codemap.rs16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/libsyntax/codemap.rs b/src/libsyntax/codemap.rs
index cd4a6f921fe..79262580858 100644
--- a/src/libsyntax/codemap.rs
+++ b/src/libsyntax/codemap.rs
@@ -162,9 +162,16 @@ impl CodeMap {
         let start_pos = self.next_start_pos();
         let mut files = self.files.borrow_mut();
 
+        // The path is used to determine the directory for loading submodules and
+        // include files, so it must be before remapping.
+        // Note that filename may not be a valid path, eg it may be `<anon>` etc,
+        // but this is okay because the directory determined by `path.pop()` will
+        // be empty, so the working directory will be used.
+        let path = PathBuf::from(filename.clone());
+
         let (filename, was_remapped) = self.path_mapping.map_prefix(filename);
         let filemap =
-            Rc::new(FileMap::new(filename, was_remapped, src, Pos::from_usize(start_pos)));
+            Rc::new(FileMap::new(filename, was_remapped, path, src, Pos::from_usize(start_pos)));
 
         files.push(filemap.clone());
 
@@ -216,6 +223,7 @@ impl CodeMap {
         let filemap = Rc::new(FileMap {
             name: filename,
             name_was_remapped,
+            path: PathBuf::new(),
             crate_of_origin,
             src: None,
             src_hash,
@@ -342,7 +350,11 @@ impl CodeMap {
     }
 
     pub fn span_to_filename(&self, sp: Span) -> FileName {
-        self.lookup_char_pos(sp.lo()).file.name.to_string()
+        self.lookup_char_pos(sp.lo()).file.name.clone()
+    }
+
+    pub fn span_to_path(&self, sp: Span) -> PathBuf {
+        self.lookup_char_pos(sp.lo()).file.path.clone()
     }
 
     pub fn span_to_lines(&self, sp: Span) -> FileLinesResult {