From 6e24321e4579d25686982002ed18f321db23cb9f Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Wed, 9 Dec 2020 19:01:15 +0300 Subject: Introduce anchored_path They allow to represent paths like `#[path = "C:\path.rs"] mod foo;` in a lossless cross-platform & network-transparent way. --- crates/rust-analyzer/src/global_state.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'crates/rust-analyzer/src/global_state.rs') 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}; use parking_lot::{Mutex, RwLock}; use project_model::{CargoWorkspace, ProcMacroClient, ProjectWorkspace, Target}; use rustc_hash::FxHashMap; +use vfs::AnchoredPathBuf; use crate::{ config::Config, @@ -268,10 +269,10 @@ impl GlobalStateSnapshot { Some(self.mem_docs.get(&path)?.version) } - pub(crate) fn anchored_path(&self, file_id: FileId, path: &str) -> Url { - let mut base = self.vfs.read().0.file_path(file_id); + pub(crate) fn anchored_path(&self, path: &AnchoredPathBuf) -> Url { + let mut base = self.vfs.read().0.file_path(path.anchor); base.pop(); - let path = base.join(path).unwrap(); + let path = base.join(&path.path).unwrap(); let path = path.as_path().unwrap(); url_from_abs_path(&path) } -- cgit v1.2.3