From d783371b862c15d6d402d68e8edce4e37d63796c Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Mon, 8 Oct 2018 13:18:47 +0300 Subject: migrate modue map to salsa --- crates/ra_analysis/src/roots.rs | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) (limited to 'crates/ra_analysis/src/roots.rs') diff --git a/crates/ra_analysis/src/roots.rs b/crates/ra_analysis/src/roots.rs index 7a7d1169e..908f49b0a 100644 --- a/crates/ra_analysis/src/roots.rs +++ b/crates/ra_analysis/src/roots.rs @@ -16,7 +16,8 @@ use crate::{ imp::FileResolverImp, symbol_index::SymbolIndex, descriptors::{ModuleDescriptor, ModuleTreeDescriptor}, - db::{self, FilesDatabase, SyntaxDatabase} + db::{self, FilesDatabase, SyntaxDatabase}, + module_map::ModulesDatabase, }; pub(crate) trait SourceRoot { @@ -53,17 +54,17 @@ impl WritableSourceRoot { } } } - if let Some(resolver) = file_resolver { - let mut files: HashSet = db.file_set(()) - .files - .clone(); - for file_id in removed { - files.remove(&file_id); - } - files.extend(changed); - db.query(db::FileSetQuery) - .set((), Arc::new(db::FileSet { files, resolver })) + let file_set = db.file_set(()); + let mut files: HashSet = file_set + .files + .clone(); + for file_id in removed { + files.remove(&file_id); } + files.extend(changed); + let resolver = file_resolver.unwrap_or_else(|| file_set.resolver.clone()); + db.query(db::FileSetQuery) + .set((), Arc::new(db::FileSet { files, resolver })); // TODO: reconcile sasla's API with our needs // https://github.com/salsa-rs/salsa/issues/12 self.clone() @@ -72,12 +73,13 @@ impl WritableSourceRoot { impl SourceRoot for WritableSourceRoot { fn module_tree(&self) -> Arc { - unimplemented!() - //self.db.make_query(::module_map::module_tree) + self.db.read().module_tree(()) } - fn contains(&self, file_id: FileId) -> bool { - self.db.read().file_set(()).files.contains(&file_id) + let db = self.db.read(); + let files = &db.file_set(()).files; + eprintln!("files = {:?}", files); + files.contains(&file_id) } fn lines(&self, file_id: FileId) -> Arc { self.db.read().file_lines(file_id) -- cgit v1.2.3