diff options
author | Aleksey Kladov <[email protected]> | 2020-12-09 16:01:15 +0000 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2020-12-09 16:07:05 +0000 |
commit | 6e24321e4579d25686982002ed18f321db23cb9f (patch) | |
tree | 08f0fd7d99ad22a3d1db782482b66548e99ba8b2 /crates/rust-analyzer/src/global_state.rs | |
parent | 5e3891c2559de5a6540d69bc14ded281484479f9 (diff) |
Introduce anchored_path
They allow to represent paths like `#[path = "C:\path.rs"] mod foo;`
in a lossless cross-platform & network-transparent way.
Diffstat (limited to 'crates/rust-analyzer/src/global_state.rs')
-rw-r--r-- | crates/rust-analyzer/src/global_state.rs | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/crates/rust-analyzer/src/global_state.rs b/crates/rust-analyzer/src/global_state.rs index a27495d0d..71dc56915 100644 --- a/crates/rust-analyzer/src/global_state.rs +++ b/crates/rust-analyzer/src/global_state.rs | |||
@@ -13,6 +13,7 @@ use lsp_types::{SemanticTokens, Url}; | |||
13 | use parking_lot::{Mutex, RwLock}; | 13 | use parking_lot::{Mutex, RwLock}; |
14 | use project_model::{CargoWorkspace, ProcMacroClient, ProjectWorkspace, Target}; | 14 | use project_model::{CargoWorkspace, ProcMacroClient, ProjectWorkspace, Target}; |
15 | use rustc_hash::FxHashMap; | 15 | use rustc_hash::FxHashMap; |
16 | use vfs::AnchoredPathBuf; | ||
16 | 17 | ||
17 | use crate::{ | 18 | use crate::{ |
18 | config::Config, | 19 | config::Config, |
@@ -268,10 +269,10 @@ impl GlobalStateSnapshot { | |||
268 | Some(self.mem_docs.get(&path)?.version) | 269 | Some(self.mem_docs.get(&path)?.version) |
269 | } | 270 | } |
270 | 271 | ||
271 | pub(crate) fn anchored_path(&self, file_id: FileId, path: &str) -> Url { | 272 | pub(crate) fn anchored_path(&self, path: &AnchoredPathBuf) -> Url { |
272 | let mut base = self.vfs.read().0.file_path(file_id); | 273 | let mut base = self.vfs.read().0.file_path(path.anchor); |
273 | base.pop(); | 274 | base.pop(); |
274 | let path = base.join(path).unwrap(); | 275 | let path = base.join(&path.path).unwrap(); |
275 | let path = path.as_path().unwrap(); | 276 | let path = path.as_path().unwrap(); |
276 | url_from_abs_path(&path) | 277 | url_from_abs_path(&path) |
277 | } | 278 | } |