From 2fe41574a1695a6608d738f40ec51bc61fc7604a Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Wed, 19 Dec 2018 16:19:53 +0300 Subject: fix tests --- crates/ra_analysis/src/imp.rs | 15 ++++++++++++--- crates/ra_analysis/src/lib.rs | 6 +++--- crates/ra_analysis/src/mock_analysis.rs | 2 +- crates/ra_hir/src/mock.rs | 13 ++++++++----- crates/ra_lsp_server/src/server_world.rs | 3 ++- 5 files changed, 26 insertions(+), 13 deletions(-) (limited to 'crates') diff --git a/crates/ra_analysis/src/imp.rs b/crates/ra_analysis/src/imp.rs index 46169d863..9e441ca79 100644 --- a/crates/ra_analysis/src/imp.rs +++ b/crates/ra_analysis/src/imp.rs @@ -43,10 +43,19 @@ impl AnalysisHostImpl { pub fn apply_change(&mut self, change: AnalysisChange) { log::info!("apply_change {:?}", change); // self.gc_syntax_trees(); - for root_id in change.new_roots { + if !change.new_roots.is_empty() { + let mut local_roots = Vec::clone(&self.db.local_roots()); + for (root_id, is_local) in change.new_roots { + self.db + .query_mut(ra_db::SourceRootQuery) + .set(root_id, Default::default()); + if is_local { + local_roots.push(root_id); + } + } self.db - .query_mut(ra_db::SourceRootQuery) - .set(root_id, Default::default()); + .query_mut(ra_db::LocalRootsQuery) + .set((), Arc::new(local_roots)); } for (root_id, root_change) in change.roots_changed { diff --git a/crates/ra_analysis/src/lib.rs b/crates/ra_analysis/src/lib.rs index 0db3c3479..a1d462528 100644 --- a/crates/ra_analysis/src/lib.rs +++ b/crates/ra_analysis/src/lib.rs @@ -44,7 +44,7 @@ pub use ra_db::{ #[derive(Default)] pub struct AnalysisChange { - new_roots: Vec, + new_roots: Vec<(SourceRootId, bool)>, roots_changed: FxHashMap, files_changed: Vec<(FileId, Arc)>, libraries_added: Vec, @@ -95,8 +95,8 @@ impl AnalysisChange { pub fn new() -> AnalysisChange { AnalysisChange::default() } - pub fn add_root(&mut self, root_id: SourceRootId) { - self.new_roots.push(root_id); + pub fn add_root(&mut self, root_id: SourceRootId, is_local: bool) { + self.new_roots.push((root_id, is_local)); } pub fn add_file( &mut self, diff --git a/crates/ra_analysis/src/mock_analysis.rs b/crates/ra_analysis/src/mock_analysis.rs index 0c042e672..7cbdfb953 100644 --- a/crates/ra_analysis/src/mock_analysis.rs +++ b/crates/ra_analysis/src/mock_analysis.rs @@ -80,7 +80,7 @@ impl MockAnalysis { let mut file_map = FileMap::default(); let source_root = SourceRootId(0); let mut change = AnalysisChange::new(); - change.add_root(source_root); + change.add_root(source_root, true); for (path, contents) in self.files.into_iter() { assert!(path.starts_with('/')); let path = RelativePathBuf::from_path(&path[1..]).unwrap(); diff --git a/crates/ra_hir/src/mock.rs b/crates/ra_hir/src/mock.rs index 54260101c..9423e6571 100644 --- a/crates/ra_hir/src/mock.rs +++ b/crates/ra_hir/src/mock.rs @@ -2,12 +2,14 @@ use std::sync::Arc; use parking_lot::Mutex; use salsa::{self, Database}; -use ra_db::{LocationIntener, BaseDatabase, FilePosition, FileId, WORKSPACE, CrateGraph, SourceRoot}; +use ra_db::{LocationIntener, BaseDatabase, FilePosition, FileId, CrateGraph, SourceRoot, SourceRootId}; use relative_path::RelativePathBuf; use test_utils::{parse_fixture, CURSOR_MARKER, extract_offset}; use crate::{db, DefId, DefLoc}; +const WORKSPACE: SourceRootId = SourceRootId(0); + #[derive(Debug)] pub(crate) struct MockDatabase { events: Mutex>>>, @@ -106,11 +108,11 @@ impl Default for MockDatabase { runtime: salsa::Runtime::default(), id_maps: Default::default(), }; - db.query_mut(ra_db::SourceRootQuery) - .set(ra_db::WORKSPACE, Default::default()); db.query_mut(ra_db::CrateGraphQuery) .set((), Default::default()); - db.query_mut(ra_db::LibrariesQuery) + db.query_mut(ra_db::LocalRootsQuery) + .set((), Default::default()); + db.query_mut(ra_db::LibraryRootsQuery) .set((), Default::default()); db } @@ -163,7 +165,8 @@ salsa::database_storage! { fn file_relative_path() for ra_db::FileRelativePathQuery; fn file_source_root() for ra_db::FileSourceRootQuery; fn source_root() for ra_db::SourceRootQuery; - fn libraries() for ra_db::LibrariesQuery; + fn local_roots() for ra_db::LocalRootsQuery; + fn library_roots() for ra_db::LibraryRootsQuery; fn crate_graph() for ra_db::CrateGraphQuery; } impl ra_db::SyntaxDatabase { diff --git a/crates/ra_lsp_server/src/server_world.rs b/crates/ra_lsp_server/src/server_world.rs index bdb4c513f..785877c4b 100644 --- a/crates/ra_lsp_server/src/server_world.rs +++ b/crates/ra_lsp_server/src/server_world.rs @@ -48,7 +48,8 @@ impl ServerWorldState { let roots_to_scan = roots.len(); let (mut vfs, roots) = Vfs::new(roots); for r in roots { - change.add_root(SourceRootId(r.0)); + let is_local = vfs.root2path(r).starts_with(&root); + change.add_root(SourceRootId(r.0), is_local); } let mut crate_graph = CrateGraph::default(); -- cgit v1.2.3