From ca52cf1ecd4f65ff2a8c3953c35b006e73a60ea8 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Tue, 15 Jan 2019 18:26:29 +0300 Subject: remove Cancelable from Module API --- crates/ra_hir/src/code_model_impl/module.rs | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) (limited to 'crates/ra_hir/src/code_model_impl') diff --git a/crates/ra_hir/src/code_model_impl/module.rs b/crates/ra_hir/src/code_model_impl/module.rs index 67808d282..127dcc570 100644 --- a/crates/ra_hir/src/code_model_impl/module.rs +++ b/crates/ra_hir/src/code_model_impl/module.rs @@ -30,17 +30,14 @@ impl Module { Module::new(def_id) } - pub(crate) fn name_impl(&self, db: &impl HirDatabase) -> Cancelable> { + pub(crate) fn name_impl(&self, db: &impl HirDatabase) -> Option { let loc = self.def_id.loc(db); let module_tree = db.module_tree(loc.source_root_id); - let link = ctry!(loc.module_id.parent_link(&module_tree)); - Ok(Some(link.name(&module_tree).clone())) + let link = loc.module_id.parent_link(&module_tree)?; + Some(link.name(&module_tree).clone()) } - pub fn definition_source_impl( - &self, - db: &impl HirDatabase, - ) -> Cancelable<(FileId, ModuleSource)> { + pub fn definition_source_impl(&self, db: &impl HirDatabase) -> (FileId, ModuleSource) { let loc = self.def_id.loc(db); let file_id = loc.source_item_id.file_id.as_original_file(); let syntax_node = db.file_item(loc.source_item_id); @@ -50,23 +47,23 @@ impl Module { let module = ast::Module::cast(&syntax_node).unwrap(); ModuleSource::Module(module.to_owned()) }; - Ok((file_id, module_source)) + (file_id, module_source) } pub fn declaration_source_impl( &self, db: &impl HirDatabase, - ) -> Cancelable)>> { + ) -> Option<(FileId, TreeArc)> { let loc = self.def_id.loc(db); let module_tree = db.module_tree(loc.source_root_id); - let link = ctry!(loc.module_id.parent_link(&module_tree)); + let link = loc.module_id.parent_link(&module_tree)?; let file_id = link .owner(&module_tree) .source(&module_tree) .file_id .as_original_file(); let src = link.source(&module_tree, db); - Ok(Some((file_id, src))) + Some((file_id, src)) } pub(crate) fn krate_impl(&self, db: &impl HirDatabase) -> Cancelable> { -- cgit v1.2.3 From c159e414b42e2fd43ed88bbf4113fbe8c8e372fe Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Tue, 15 Jan 2019 18:30:58 +0300 Subject: remove Cancelable from Module API, part 2 --- crates/ra_hir/src/code_model_impl/module.rs | 30 +++++++++++++---------------- 1 file changed, 13 insertions(+), 17 deletions(-) (limited to 'crates/ra_hir/src/code_model_impl') diff --git a/crates/ra_hir/src/code_model_impl/module.rs b/crates/ra_hir/src/code_model_impl/module.rs index 127dcc570..8668d6c8a 100644 --- a/crates/ra_hir/src/code_model_impl/module.rs +++ b/crates/ra_hir/src/code_model_impl/module.rs @@ -66,21 +66,21 @@ impl Module { Some((file_id, src)) } - pub(crate) fn krate_impl(&self, db: &impl HirDatabase) -> Cancelable> { - let root = self.crate_root(db)?; + pub(crate) fn krate_impl(&self, db: &impl HirDatabase) -> Option { + let root = self.crate_root(db); let loc = root.def_id.loc(db); let file_id = loc.source_item_id.file_id.as_original_file(); let crate_graph = db.crate_graph(); - let crate_id = ctry!(crate_graph.crate_id_for_crate_root(file_id)); - Ok(Some(Crate::new(crate_id))) + let crate_id = crate_graph.crate_id_for_crate_root(file_id)?; + Some(Crate::new(crate_id)) } - pub(crate) fn crate_root_impl(&self, db: &impl HirDatabase) -> Cancelable { + pub(crate) fn crate_root_impl(&self, db: &impl HirDatabase) -> Module { let loc = self.def_id.loc(db); let module_tree = db.module_tree(loc.source_root_id); let module_id = loc.module_id.crate_root(&module_tree); - Ok(Module::from_module_id(db, loc.source_root_id, module_id)) + Module::from_module_id(db, loc.source_root_id, module_id) } /// Finds a child module with the specified name. @@ -92,7 +92,7 @@ impl Module { } /// Iterates over all child modules. - pub fn children_impl(&self, db: &impl HirDatabase) -> Cancelable> { + pub fn children_impl(&self, db: &impl HirDatabase) -> impl Iterator { // FIXME this should be implementable without collecting into a vec, but // it's kind of hard since the iterator needs to keep a reference to the // module tree. @@ -103,18 +103,14 @@ impl Module { .children(&module_tree) .map(|(_, module_id)| Module::from_module_id(db, loc.source_root_id, module_id)) .collect::>(); - Ok(children.into_iter()) + children.into_iter() } - pub fn parent_impl(&self, db: &impl HirDatabase) -> Cancelable> { + pub fn parent_impl(&self, db: &impl HirDatabase) -> Option { let loc = self.def_id.loc(db); let module_tree = db.module_tree(loc.source_root_id); - let parent_id = ctry!(loc.module_id.parent(&module_tree)); - Ok(Some(Module::from_module_id( - db, - loc.source_root_id, - parent_id, - ))) + let parent_id = loc.module_id.parent(&module_tree)?; + Some(Module::from_module_id(db, loc.source_root_id, parent_id)) } /// Returns a `ModuleScope`: a set of items, visible in this module. @@ -132,10 +128,10 @@ impl Module { ) -> Cancelable> { let mut curr_per_ns = PerNs::types( match path.kind { - PathKind::Crate => self.crate_root(db)?, + PathKind::Crate => self.crate_root(db), PathKind::Self_ | PathKind::Plain => self.clone(), PathKind::Super => { - if let Some(p) = self.parent(db)? { + if let Some(p) = self.parent(db) { p } else { return Ok(PerNs::none()); -- cgit v1.2.3 From 8af9a18660f9b2f34da902f43c1eef856af1cfca Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Tue, 15 Jan 2019 18:33:26 +0300 Subject: remove Cancelable from Crate API --- crates/ra_hir/src/code_model_impl/krate.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'crates/ra_hir/src/code_model_impl') diff --git a/crates/ra_hir/src/code_model_impl/krate.rs b/crates/ra_hir/src/code_model_impl/krate.rs index 712c6c86a..8c6e34873 100644 --- a/crates/ra_hir/src/code_model_impl/krate.rs +++ b/crates/ra_hir/src/code_model_impl/krate.rs @@ -1,4 +1,4 @@ -use ra_db::{CrateId, Cancelable}; +use ra_db::CrateId; use crate::{ HirFileId, Crate, CrateDependency, AsName, DefLoc, DefKind, Module, SourceItemId, @@ -20,7 +20,7 @@ impl Crate { }) .collect() } - pub(crate) fn root_module_impl(&self, db: &impl HirDatabase) -> Cancelable> { + pub(crate) fn root_module_impl(&self, db: &impl HirDatabase) -> Option { let crate_graph = db.crate_graph(); let file_id = crate_graph.crate_root(self.crate_id); let source_root_id = db.file_source_root(file_id); @@ -31,7 +31,7 @@ impl Crate { file_id, item_id: None, }; - let module_id = ctry!(module_tree.find_module_by_source(source)); + let module_id = module_tree.find_module_by_source(source)?; let def_loc = DefLoc { kind: DefKind::Module, @@ -42,6 +42,6 @@ impl Crate { let def_id = def_loc.id(db); let module = Module::new(def_id); - Ok(Some(module)) + Some(module) } } -- cgit v1.2.3