From e74bf6e56e45a26002ef2a77fb3ac27f523277fb Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Sat, 20 Oct 2018 22:15:03 +0300 Subject: mark module queries as cacelable --- crates/ra_analysis/src/module_map.rs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'crates/ra_analysis/src/module_map.rs') diff --git a/crates/ra_analysis/src/module_map.rs b/crates/ra_analysis/src/module_map.rs index b15432498..0c413becd 100644 --- a/crates/ra_analysis/src/module_map.rs +++ b/crates/ra_analysis/src/module_map.rs @@ -1,4 +1,5 @@ use crate::{ + Cancelable, db::SyntaxDatabase, descriptors::{ModuleDescriptor, ModuleTreeDescriptor}, FileId, @@ -8,30 +9,30 @@ use std::sync::Arc; salsa::query_group! { pub(crate) trait ModulesDatabase: SyntaxDatabase { - fn module_tree() -> Arc { + fn module_tree() -> Cancelable> { type ModuleTreeQuery; } - fn module_descriptor(file_id: FileId) -> Arc { + fn module_descriptor(file_id: FileId) -> Cancelable> { type ModuleDescriptorQuery; } } } -fn module_descriptor(db: &impl ModulesDatabase, file_id: FileId) -> Arc { +fn module_descriptor(db: &impl ModulesDatabase, file_id: FileId) -> Cancelable> { let file = db.file_syntax(file_id); - Arc::new(ModuleDescriptor::new(file.ast())) + Ok(Arc::new(ModuleDescriptor::new(file.ast()))) } -fn module_tree(db: &impl ModulesDatabase) -> Arc { +fn module_tree(db: &impl ModulesDatabase) -> Cancelable> { let file_set = db.file_set(); let mut files = Vec::new(); for &file_id in file_set.files.iter() { - let module_descr = db.module_descriptor(file_id); + let module_descr = db.module_descriptor(file_id)?; files.push((file_id, module_descr)); } let res = ModuleTreeDescriptor::new( files.iter().map(|(file_id, descr)| (*file_id, &**descr)), &file_set.resolver, ); - Arc::new(res) + Ok(Arc::new(res)) } -- cgit v1.2.3