aboutsummaryrefslogtreecommitdiff
path: root/crates/rust-analyzer/src/global_state.rs
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2020-12-09 16:01:15 +0000
committerAleksey Kladov <[email protected]>2020-12-09 16:07:05 +0000
commit6e24321e4579d25686982002ed18f321db23cb9f (patch)
tree08f0fd7d99ad22a3d1db782482b66548e99ba8b2 /crates/rust-analyzer/src/global_state.rs
parent5e3891c2559de5a6540d69bc14ded281484479f9 (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.rs7
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};
13use parking_lot::{Mutex, RwLock}; 13use parking_lot::{Mutex, RwLock};
14use project_model::{CargoWorkspace, ProcMacroClient, ProjectWorkspace, Target}; 14use project_model::{CargoWorkspace, ProcMacroClient, ProjectWorkspace, Target};
15use rustc_hash::FxHashMap; 15use rustc_hash::FxHashMap;
16use vfs::AnchoredPathBuf;
16 17
17use crate::{ 18use 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 }