From 50fd860471f577e9bb7536e74eb181c055033183 Mon Sep 17 00:00:00 2001 From: Florian Diebold Date: Sat, 9 Feb 2019 11:08:24 +0100 Subject: [PATCH] Remove Vfs from project model --- Cargo.lock | 1 - crates/ra_lsp_server/src/server_world.rs | 6 +++++- crates/ra_project_model/Cargo.toml | 1 - crates/ra_project_model/src/lib.rs | 9 +++------ 4 files changed, 8 insertions(+), 9 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a76d0b2fe96..2c554ec10d0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1055,7 +1055,6 @@ dependencies = [ "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "ra_arena 0.1.0", "ra_db 0.1.0", - "ra_vfs 0.1.0", "rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "test_utils 0.1.0", "walkdir 2.2.7 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/crates/ra_lsp_server/src/server_world.rs b/crates/ra_lsp_server/src/server_world.rs index 23270d0aa9d..f97d240fabb 100644 --- a/crates/ra_lsp_server/src/server_world.rs +++ b/crates/ra_lsp_server/src/server_world.rs @@ -58,8 +58,12 @@ pub fn new(root: PathBuf, workspaces: Vec) -> ServerWorldState // Create crate graph from all the workspaces let mut crate_graph = CrateGraph::default(); + let mut load = |path: &std::path::Path| { + let vfs_file = vfs.load(path); + vfs_file.map(|f| FileId(f.0.into())) + }; for ws in workspaces.iter() { - crate_graph.extend(ws.to_crate_graph(&mut vfs)); + crate_graph.extend(ws.to_crate_graph(&mut load)); } change.set_crate_graph(crate_graph); diff --git a/crates/ra_project_model/Cargo.toml b/crates/ra_project_model/Cargo.toml index 996dce351e2..9cdf2b3228a 100644 --- a/crates/ra_project_model/Cargo.toml +++ b/crates/ra_project_model/Cargo.toml @@ -18,7 +18,6 @@ cargo_metadata = "0.7.0" ra_arena = { path = "../ra_arena" } ra_db = { path = "../ra_db" } -ra_vfs = { path = "../ra_vfs" } [dev-dependencies] test_utils = { path = "../test_utils" } diff --git a/crates/ra_project_model/src/lib.rs b/crates/ra_project_model/src/lib.rs index abc79684c51..156af9e7a29 100644 --- a/crates/ra_project_model/src/lib.rs +++ b/crates/ra_project_model/src/lib.rs @@ -7,7 +7,6 @@ use rustc_hash::FxHashMap; use ra_db::{CrateGraph, FileId}; -use ra_vfs::Vfs; pub use crate::{ cargo_workspace::{CargoWorkspace, Package, Target, TargetKind}, @@ -32,12 +31,11 @@ pub fn discover(path: &Path) -> Result { Ok(res) } - pub fn to_crate_graph(&self, vfs: &mut Vfs) -> CrateGraph { + pub fn to_crate_graph(&self, load: &mut dyn FnMut(&Path) -> Option) -> CrateGraph { let mut crate_graph = CrateGraph::default(); let mut sysroot_crates = FxHashMap::default(); for krate in self.sysroot.crates() { - if let Some(file_id) = vfs.load(krate.root(&self.sysroot)) { - let file_id = FileId(file_id.0.into()); + if let Some(file_id) = load(krate.root(&self.sysroot)) { sysroot_crates.insert(krate, crate_graph.add_crate_root(file_id)); } } @@ -63,8 +61,7 @@ pub fn to_crate_graph(&self, vfs: &mut Vfs) -> CrateGraph { let mut lib_tgt = None; for tgt in pkg.targets(&self.cargo) { let root = tgt.root(&self.cargo); - if let Some(file_id) = vfs.load(root) { - let file_id = FileId(file_id.0.into()); + if let Some(file_id) = load(root) { let crate_id = crate_graph.add_crate_root(file_id); if tgt.kind(&self.cargo) == TargetKind::Lib { lib_tgt = Some(crate_id); -- 2.44.0