From 9446be29992fe14ec529874622311c3ae7a49b0e Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Tue, 15 Jan 2019 18:43:25 +0300 Subject: remove Cancelable from adt API --- crates/ra_hir/src/adt.rs | 23 ++++------- crates/ra_hir/src/code_model_api.rs | 50 ++++++++++------------- crates/ra_hir/src/code_model_impl/module.rs | 2 +- crates/ra_hir/src/db.rs | 6 +-- crates/ra_hir/src/ty.rs | 8 ++-- crates/ra_ide_api/src/completion/complete_dot.rs | 2 +- crates/ra_ide_api/src/completion/complete_path.rs | 2 +- crates/ra_ide_api/src/navigation_target.rs | 6 +-- 8 files changed, 41 insertions(+), 58 deletions(-) (limited to 'crates') diff --git a/crates/ra_hir/src/adt.rs b/crates/ra_hir/src/adt.rs index bcb705c24..57d112f74 100644 --- a/crates/ra_hir/src/adt.rs +++ b/crates/ra_hir/src/adt.rs @@ -19,7 +19,7 @@ impl Struct { } pub(crate) fn variant_data(&self, db: &impl HirDatabase) -> Cancelable> { - Ok(db.struct_data(self.def_id)?.variant_data.clone()) + Ok(db.struct_data(self.def_id).variant_data.clone()) } } @@ -37,16 +37,13 @@ impl StructData { StructData { name, variant_data } } - pub(crate) fn struct_data_query( - db: &impl HirDatabase, - def_id: DefId, - ) -> Cancelable> { + pub(crate) fn struct_data_query(db: &impl HirDatabase, def_id: DefId) -> Arc { let def_loc = def_id.loc(db); assert!(def_loc.kind == DefKind::Struct); let syntax = db.file_item(def_loc.source_item_id); let struct_def = ast::StructDef::cast(&syntax).expect("struct def should point to StructDef node"); - Ok(Arc::new(StructData::new(struct_def))) + Arc::new(StructData::new(struct_def)) } } @@ -84,10 +81,7 @@ impl EnumData { EnumData { name, variants } } - pub(crate) fn enum_data_query( - db: &impl HirDatabase, - def_id: DefId, - ) -> Cancelable> { + pub(crate) fn enum_data_query(db: &impl HirDatabase, def_id: DefId) -> Arc { let def_loc = def_id.loc(db); assert!(def_loc.kind == DefKind::Enum); let syntax = db.file_item(def_loc.source_item_id); @@ -107,7 +101,7 @@ impl EnumData { } else { Vec::new() }; - Ok(Arc::new(EnumData::new(enum_def, variants))) + Arc::new(EnumData::new(enum_def, variants)) } } @@ -133,7 +127,7 @@ impl EnumVariantData { pub(crate) fn enum_variant_data_query( db: &impl HirDatabase, def_id: DefId, - ) -> Cancelable> { + ) -> Arc { let def_loc = def_id.loc(db); assert!(def_loc.kind == DefKind::EnumVariant); let syntax = db.file_item(def_loc.source_item_id); @@ -146,10 +140,7 @@ impl EnumVariantData { .expect("enum variant list should have enum ancestor"); let enum_def_id = get_def_id(db, &def_loc, enum_node, DefKind::Enum); - Ok(Arc::new(EnumVariantData::new( - variant_def, - Enum::new(enum_def_id), - ))) + Arc::new(EnumVariantData::new(variant_def, Enum::new(enum_def_id))) } } diff --git a/crates/ra_hir/src/code_model_api.rs b/crates/ra_hir/src/code_model_api.rs index db270b871..cd61d922b 100644 --- a/crates/ra_hir/src/code_model_api.rs +++ b/crates/ra_hir/src/code_model_api.rs @@ -175,13 +175,12 @@ impl Struct { self.def_id } - pub fn name(&self, db: &impl HirDatabase) -> Cancelable> { - Ok(db.struct_data(self.def_id)?.name.clone()) + pub fn name(&self, db: &impl HirDatabase) -> Option { + db.struct_data(self.def_id).name.clone() } - pub fn fields(&self, db: &impl HirDatabase) -> Cancelable> { - let res = db - .struct_data(self.def_id)? + pub fn fields(&self, db: &impl HirDatabase) -> Vec { + db.struct_data(self.def_id) .variant_data .fields() .iter() @@ -189,15 +188,11 @@ impl Struct { struct_: self.clone(), name: it.name.clone(), }) - .collect(); - Ok(res) + .collect() } - pub fn source( - &self, - db: &impl HirDatabase, - ) -> Cancelable<(HirFileId, TreeArc)> { - Ok(def_id_to_ast(db, self.def_id)) + pub fn source(&self, db: &impl HirDatabase) -> (HirFileId, TreeArc) { + def_id_to_ast(db, self.def_id) } } @@ -215,16 +210,16 @@ impl Enum { self.def_id } - pub fn name(&self, db: &impl HirDatabase) -> Cancelable> { - Ok(db.enum_data(self.def_id)?.name.clone()) + pub fn name(&self, db: &impl HirDatabase) -> Option { + db.enum_data(self.def_id).name.clone() } - pub fn variants(&self, db: &impl HirDatabase) -> Cancelable> { - Ok(db.enum_data(self.def_id)?.variants.clone()) + pub fn variants(&self, db: &impl HirDatabase) -> Vec<(Name, EnumVariant)> { + db.enum_data(self.def_id).variants.clone() } - pub fn source(&self, db: &impl HirDatabase) -> Cancelable<(HirFileId, TreeArc)> { - Ok(def_id_to_ast(db, self.def_id)) + pub fn source(&self, db: &impl HirDatabase) -> (HirFileId, TreeArc) { + def_id_to_ast(db, self.def_id) } } @@ -242,23 +237,20 @@ impl EnumVariant { self.def_id } - pub fn parent_enum(&self, db: &impl HirDatabase) -> Cancelable { - Ok(db.enum_variant_data(self.def_id)?.parent_enum.clone()) + pub fn parent_enum(&self, db: &impl HirDatabase) -> Enum { + db.enum_variant_data(self.def_id).parent_enum.clone() } - pub fn name(&self, db: &impl HirDatabase) -> Cancelable> { - Ok(db.enum_variant_data(self.def_id)?.name.clone()) + pub fn name(&self, db: &impl HirDatabase) -> Option { + db.enum_variant_data(self.def_id).name.clone() } - pub fn variant_data(&self, db: &impl HirDatabase) -> Cancelable> { - Ok(db.enum_variant_data(self.def_id)?.variant_data.clone()) + pub fn variant_data(&self, db: &impl HirDatabase) -> Arc { + db.enum_variant_data(self.def_id).variant_data.clone() } - pub fn source( - &self, - db: &impl HirDatabase, - ) -> Cancelable<(HirFileId, TreeArc)> { - Ok(def_id_to_ast(db, self.def_id)) + pub fn source(&self, db: &impl HirDatabase) -> (HirFileId, TreeArc) { + def_id_to_ast(db, self.def_id) } } diff --git a/crates/ra_hir/src/code_model_impl/module.rs b/crates/ra_hir/src/code_model_impl/module.rs index 8668d6c8a..f27523753 100644 --- a/crates/ra_hir/src/code_model_impl/module.rs +++ b/crates/ra_hir/src/code_model_impl/module.rs @@ -154,7 +154,7 @@ impl Module { if segments.len() == idx + 1 { // enum variant let matching_variant = - e.variants(db)?.into_iter().find(|(n, _variant)| n == name); + e.variants(db).into_iter().find(|(n, _variant)| n == name); if let Some((_n, variant)) = matching_variant { return Ok(PerNs::both(variant.def_id(), e.def_id())); diff --git a/crates/ra_hir/src/db.rs b/crates/ra_hir/src/db.rs index 3b2498d5a..6229f9778 100644 --- a/crates/ra_hir/src/db.rs +++ b/crates/ra_hir/src/db.rs @@ -37,17 +37,17 @@ pub trait HirDatabase: SyntaxDatabase use fn query_definitions::fn_scopes; } - fn struct_data(def_id: DefId) -> Cancelable> { + fn struct_data(def_id: DefId) -> Arc { type StructDataQuery; use fn crate::adt::StructData::struct_data_query; } - fn enum_data(def_id: DefId) -> Cancelable> { + fn enum_data(def_id: DefId) -> Arc { type EnumDataQuery; use fn crate::adt::EnumData::enum_data_query; } - fn enum_variant_data(def_id: DefId) -> Cancelable> { + fn enum_variant_data(def_id: DefId) -> Arc { type EnumVariantDataQuery; use fn crate::adt::EnumVariantData::enum_variant_data_query; } diff --git a/crates/ra_hir/src/ty.rs b/crates/ra_hir/src/ty.rs index 03787bd89..b0642d905 100644 --- a/crates/ra_hir/src/ty.rs +++ b/crates/ra_hir/src/ty.rs @@ -463,19 +463,19 @@ fn type_for_fn(db: &impl HirDatabase, f: Function) -> Cancelable { fn type_for_struct(db: &impl HirDatabase, s: Struct) -> Cancelable { Ok(Ty::Adt { def_id: s.def_id(), - name: s.name(db)?.unwrap_or_else(Name::missing), + name: s.name(db).unwrap_or_else(Name::missing), }) } pub(crate) fn type_for_enum(db: &impl HirDatabase, s: Enum) -> Cancelable { Ok(Ty::Adt { def_id: s.def_id(), - name: s.name(db)?.unwrap_or_else(Name::missing), + name: s.name(db).unwrap_or_else(Name::missing), }) } pub(crate) fn type_for_enum_variant(db: &impl HirDatabase, ev: EnumVariant) -> Cancelable { - let enum_parent = ev.parent_enum(db)?; + let enum_parent = ev.parent_enum(db); type_for_enum(db, enum_parent) } @@ -510,7 +510,7 @@ pub(super) fn type_for_field( let def = def_id.resolve(db)?; let variant_data = match def { Def::Struct(s) => s.variant_data(db)?, - Def::EnumVariant(ev) => ev.variant_data(db)?, + Def::EnumVariant(ev) => ev.variant_data(db), // TODO: unions _ => panic!( "trying to get type for field in non-struct/variant {:?}", diff --git a/crates/ra_ide_api/src/completion/complete_dot.rs b/crates/ra_ide_api/src/completion/complete_dot.rs index 37985b398..bf6d91a09 100644 --- a/crates/ra_ide_api/src/completion/complete_dot.rs +++ b/crates/ra_ide_api/src/completion/complete_dot.rs @@ -29,7 +29,7 @@ fn complete_fields(acc: &mut Completions, ctx: &CompletionContext, receiver: Ty) Ty::Adt { def_id, .. } => { match def_id.resolve(ctx.db)? { Def::Struct(s) => { - for field in s.fields(ctx.db)? { + for field in s.fields(ctx.db) { CompletionItem::new( CompletionKind::Reference, field.name().to_string(), diff --git a/crates/ra_ide_api/src/completion/complete_path.rs b/crates/ra_ide_api/src/completion/complete_path.rs index a25ad3f13..6388197be 100644 --- a/crates/ra_ide_api/src/completion/complete_path.rs +++ b/crates/ra_ide_api/src/completion/complete_path.rs @@ -22,7 +22,7 @@ pub(super) fn complete_path(acc: &mut Completions, ctx: &CompletionContext) -> C } } hir::Def::Enum(e) => { - e.variants(ctx.db)? + e.variants(ctx.db) .into_iter() .for_each(|(variant_name, _variant)| { CompletionItem::new(CompletionKind::Reference, variant_name.to_string()) diff --git a/crates/ra_ide_api/src/navigation_target.rs b/crates/ra_ide_api/src/navigation_target.rs index 7562b9a1f..306dbfd92 100644 --- a/crates/ra_ide_api/src/navigation_target.rs +++ b/crates/ra_ide_api/src/navigation_target.rs @@ -112,15 +112,15 @@ impl NavigationTarget { pub(crate) fn from_def(db: &RootDatabase, def: Def) -> Cancelable> { let res = match def { Def::Struct(s) => { - let (file_id, node) = s.source(db)?; + let (file_id, node) = s.source(db); NavigationTarget::from_named(file_id.original_file(db), &*node) } Def::Enum(e) => { - let (file_id, node) = e.source(db)?; + let (file_id, node) = e.source(db); NavigationTarget::from_named(file_id.original_file(db), &*node) } Def::EnumVariant(ev) => { - let (file_id, node) = ev.source(db)?; + let (file_id, node) = ev.source(db); NavigationTarget::from_named(file_id.original_file(db), &*node) } Def::Function(f) => { -- cgit v1.2.3 From 9dd4099d9388b5f61e99f923dd6c523f76ad43ff Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Tue, 15 Jan 2019 18:45:01 +0300 Subject: remove Cancelable from static&const API --- crates/ra_hir/src/code_model_api.rs | 19 ++++++++----------- crates/ra_ide_api/src/navigation_target.rs | 8 ++++---- 2 files changed, 12 insertions(+), 15 deletions(-) (limited to 'crates') diff --git a/crates/ra_hir/src/code_model_api.rs b/crates/ra_hir/src/code_model_api.rs index cd61d922b..f6d1d6b23 100644 --- a/crates/ra_hir/src/code_model_api.rs +++ b/crates/ra_hir/src/code_model_api.rs @@ -333,8 +333,8 @@ impl Const { Const { def_id } } - pub fn source(&self, db: &impl HirDatabase) -> Cancelable<(HirFileId, TreeArc)> { - Ok(def_id_to_ast(db, self.def_id)) + pub fn source(&self, db: &impl HirDatabase) -> (HirFileId, TreeArc) { + def_id_to_ast(db, self.def_id) } } @@ -348,11 +348,8 @@ impl Static { Static { def_id } } - pub fn source( - &self, - db: &impl HirDatabase, - ) -> Cancelable<(HirFileId, TreeArc)> { - Ok(def_id_to_ast(db, self.def_id)) + pub fn source(&self, db: &impl HirDatabase) -> (HirFileId, TreeArc) { + def_id_to_ast(db, self.def_id) } } @@ -366,8 +363,8 @@ impl Trait { Trait { def_id } } - pub fn source(&self, db: &impl HirDatabase) -> Cancelable<(HirFileId, TreeArc)> { - Ok(def_id_to_ast(db, self.def_id)) + pub fn source(&self, db: &impl HirDatabase) -> (HirFileId, TreeArc) { + def_id_to_ast(db, self.def_id) } } @@ -381,7 +378,7 @@ impl Type { Type { def_id } } - pub fn source(&self, db: &impl HirDatabase) -> Cancelable<(HirFileId, TreeArc)> { - Ok(def_id_to_ast(db, self.def_id)) + pub fn source(&self, db: &impl HirDatabase) -> (HirFileId, TreeArc) { + def_id_to_ast(db, self.def_id) } } diff --git a/crates/ra_ide_api/src/navigation_target.rs b/crates/ra_ide_api/src/navigation_target.rs index 306dbfd92..965dfc0ca 100644 --- a/crates/ra_ide_api/src/navigation_target.rs +++ b/crates/ra_ide_api/src/navigation_target.rs @@ -128,19 +128,19 @@ impl NavigationTarget { NavigationTarget::from_named(file_id.original_file(db), &*node) } Def::Trait(f) => { - let (file_id, node) = f.source(db)?; + let (file_id, node) = f.source(db); NavigationTarget::from_named(file_id.original_file(db), &*node) } Def::Type(f) => { - let (file_id, node) = f.source(db)?; + let (file_id, node) = f.source(db); NavigationTarget::from_named(file_id.original_file(db), &*node) } Def::Static(f) => { - let (file_id, node) = f.source(db)?; + let (file_id, node) = f.source(db); NavigationTarget::from_named(file_id.original_file(db), &*node) } Def::Const(f) => { - let (file_id, node) = f.source(db)?; + let (file_id, node) = f.source(db); NavigationTarget::from_named(file_id.original_file(db), &*node) } Def::Module(m) => NavigationTarget::from_module(db, m)?, -- cgit v1.2.3 From f1367e0370d5de5cba13c853c7df5f0c5a0edf59 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Tue, 15 Jan 2019 18:50:16 +0300 Subject: remove Cancelable from navigation target --- crates/ra_hir/src/code_model_api.rs | 4 +-- crates/ra_hir/src/code_model_impl/module.rs | 2 +- crates/ra_hir/src/expr.rs | 4 +-- crates/ra_hir/src/ids.rs | 7 ++--- crates/ra_hir/src/ty.rs | 6 ++-- crates/ra_ide_api/src/completion/complete_dot.rs | 2 +- crates/ra_ide_api/src/completion/complete_path.rs | 2 +- .../ra_ide_api/src/completion/completion_item.rs | 2 +- crates/ra_ide_api/src/goto_definition.rs | 6 ++-- crates/ra_ide_api/src/navigation_target.rs | 34 +++++++--------------- crates/ra_ide_api/src/parent_module.rs | 2 +- 11 files changed, 29 insertions(+), 42 deletions(-) (limited to 'crates') diff --git a/crates/ra_hir/src/code_model_api.rs b/crates/ra_hir/src/code_model_api.rs index f6d1d6b23..f28e077c6 100644 --- a/crates/ra_hir/src/code_model_api.rs +++ b/crates/ra_hir/src/code_model_api.rs @@ -297,8 +297,8 @@ impl Function { self.def_id } - pub fn source(&self, db: &impl HirDatabase) -> Cancelable<(HirFileId, TreeArc)> { - Ok(def_id_to_ast(db, self.def_id)) + pub fn source(&self, db: &impl HirDatabase) -> (HirFileId, TreeArc) { + def_id_to_ast(db, self.def_id) } pub fn body_syntax_mapping(&self, db: &impl HirDatabase) -> Cancelable> { diff --git a/crates/ra_hir/src/code_model_impl/module.rs b/crates/ra_hir/src/code_model_impl/module.rs index f27523753..331b0500e 100644 --- a/crates/ra_hir/src/code_model_impl/module.rs +++ b/crates/ra_hir/src/code_model_impl/module.rs @@ -148,7 +148,7 @@ impl Module { } else { return Ok(PerNs::none()); }; - let module = match curr.resolve(db)? { + let module = match curr.resolve(db) { Def::Module(it) => it, Def::Enum(e) => { if segments.len() == idx + 1 { diff --git a/crates/ra_hir/src/expr.rs b/crates/ra_hir/src/expr.rs index 5081466a2..a1e8da348 100644 --- a/crates/ra_hir/src/expr.rs +++ b/crates/ra_hir/src/expr.rs @@ -832,10 +832,10 @@ pub(crate) fn body_syntax_mapping( db: &impl HirDatabase, def_id: DefId, ) -> Cancelable> { - let def = def_id.resolve(db)?; + let def = def_id.resolve(db); let body_syntax_mapping = match def { - Def::Function(f) => collect_fn_body_syntax(&f.source(db)?.1), + Def::Function(f) => collect_fn_body_syntax(&f.source(db).1), // TODO: consts, etc. _ => panic!("Trying to get body for item type without body"), }; diff --git a/crates/ra_hir/src/ids.rs b/crates/ra_hir/src/ids.rs index 7b572061a..3cbf8070f 100644 --- a/crates/ra_hir/src/ids.rs +++ b/crates/ra_hir/src/ids.rs @@ -159,9 +159,9 @@ impl DefId { db.as_ref().id2loc(self) } - pub fn resolve(self, db: &impl HirDatabase) -> Cancelable { + pub fn resolve(self, db: &impl HirDatabase) -> Def { let loc = self.loc(db); - let res = match loc.kind { + match loc.kind { DefKind::Module => { let module = Module::from_module_id(db, loc.source_root_id, loc.module_id); Def::Module(module) @@ -195,8 +195,7 @@ impl DefId { DefKind::StructCtor => Def::Item, DefKind::Item => Def::Item, - }; - Ok(res) + } } pub(crate) fn source(self, db: &impl HirDatabase) -> (HirFileId, TreeArc) { diff --git a/crates/ra_hir/src/ty.rs b/crates/ra_hir/src/ty.rs index b0642d905..3607969ed 100644 --- a/crates/ra_hir/src/ty.rs +++ b/crates/ra_hir/src/ty.rs @@ -481,7 +481,7 @@ pub(crate) fn type_for_enum_variant(db: &impl HirDatabase, ev: EnumVariant) -> C } pub(super) fn type_for_def(db: &impl HirDatabase, def_id: DefId) -> Cancelable { - let def = def_id.resolve(db)?; + let def = def_id.resolve(db); match def { Def::Module(..) => { log::debug!("trying to get type for module {:?}", def_id); @@ -507,7 +507,7 @@ pub(super) fn type_for_field( def_id: DefId, field: Name, ) -> Cancelable> { - let def = def_id.resolve(db)?; + let def = def_id.resolve(db); let variant_data = match def { Def::Struct(s) => s.variant_data(db)?, Def::EnumVariant(ev) => ev.variant_data(db), @@ -877,7 +877,7 @@ impl<'a, D: HirDatabase> InferenceContext<'a, D> { } else { return Ok((Ty::Unknown, None)); }; - Ok(match def_id.resolve(self.db)? { + Ok(match def_id.resolve(self.db) { Def::Struct(s) => { let ty = type_for_struct(self.db, s)?; (ty, Some(def_id)) diff --git a/crates/ra_ide_api/src/completion/complete_dot.rs b/crates/ra_ide_api/src/completion/complete_dot.rs index bf6d91a09..886dc54d4 100644 --- a/crates/ra_ide_api/src/completion/complete_dot.rs +++ b/crates/ra_ide_api/src/completion/complete_dot.rs @@ -27,7 +27,7 @@ fn complete_fields(acc: &mut Completions, ctx: &CompletionContext, receiver: Ty) for receiver in receiver.autoderef(ctx.db) { match receiver { Ty::Adt { def_id, .. } => { - match def_id.resolve(ctx.db)? { + match def_id.resolve(ctx.db) { Def::Struct(s) => { for field in s.fields(ctx.db) { CompletionItem::new( diff --git a/crates/ra_ide_api/src/completion/complete_path.rs b/crates/ra_ide_api/src/completion/complete_path.rs index 6388197be..207a509b3 100644 --- a/crates/ra_ide_api/src/completion/complete_path.rs +++ b/crates/ra_ide_api/src/completion/complete_path.rs @@ -12,7 +12,7 @@ pub(super) fn complete_path(acc: &mut Completions, ctx: &CompletionContext) -> C Some(it) => it, None => return Ok(()), }; - match def_id.resolve(ctx.db)? { + match def_id.resolve(ctx.db) { hir::Def::Module(module) => { let module_scope = module.scope(ctx.db)?; for (name, res) in module_scope.entries() { diff --git a/crates/ra_ide_api/src/completion/completion_item.rs b/crates/ra_ide_api/src/completion/completion_item.rs index b75d65de3..11d00f78c 100644 --- a/crates/ra_ide_api/src/completion/completion_item.rs +++ b/crates/ra_ide_api/src/completion/completion_item.rs @@ -144,7 +144,7 @@ impl Builder { ctx: &CompletionContext, resolution: &hir::Resolution, ) -> Builder { - let resolved = resolution.def_id.and_then(|d| d.resolve(ctx.db).ok()); + let resolved = resolution.def_id.map(|d| d.resolve(ctx.db)); let kind = match resolved { PerNs { types: Some(hir::Def::Module(..)), diff --git a/crates/ra_ide_api/src/goto_definition.rs b/crates/ra_ide_api/src/goto_definition.rs index 591f36cce..7229293a4 100644 --- a/crates/ra_ide_api/src/goto_definition.rs +++ b/crates/ra_ide_api/src/goto_definition.rs @@ -70,7 +70,7 @@ pub(crate) fn reference_definition( .node_expr(expr) .and_then(|it| infer_result.method_resolution(it)) { - if let Some(target) = NavigationTarget::from_def(db, def_id.resolve(db)?)? { + if let Some(target) = NavigationTarget::from_def(db, def_id.resolve(db)) { return Ok(Exact(target)); } }; @@ -87,7 +87,7 @@ pub(crate) fn reference_definition( { let resolved = module.resolve_path(db, &path)?; if let Some(def_id) = resolved.take_types().or(resolved.take_values()) { - if let Some(target) = NavigationTarget::from_def(db, def_id.resolve(db)?)? { + if let Some(target) = NavigationTarget::from_def(db, def_id.resolve(db)) { return Ok(Exact(target)); } } @@ -112,7 +112,7 @@ fn name_definition( if let Some(child_module) = hir::source_binder::module_from_declaration(db, file_id, module) { - let nav = NavigationTarget::from_module(db, child_module)?; + let nav = NavigationTarget::from_module(db, child_module); return Ok(Some(vec![nav])); } } diff --git a/crates/ra_ide_api/src/navigation_target.rs b/crates/ra_ide_api/src/navigation_target.rs index 965dfc0ca..21c15c0c0 100644 --- a/crates/ra_ide_api/src/navigation_target.rs +++ b/crates/ra_ide_api/src/navigation_target.rs @@ -1,4 +1,4 @@ -use ra_db::{FileId, Cancelable}; +use ra_db::FileId; use ra_syntax::{ SyntaxNode, AstNode, SmolStr, TextRange, ast, SyntaxKind::{self, NAME}, @@ -69,47 +69,35 @@ impl NavigationTarget { } } - pub(crate) fn from_module( - db: &RootDatabase, - module: hir::Module, - ) -> Cancelable { + pub(crate) fn from_module(db: &RootDatabase, module: hir::Module) -> NavigationTarget { let (file_id, source) = module.definition_source(db); let name = module .name(db) .map(|it| it.to_string().into()) .unwrap_or_default(); - let res = match source { + match source { ModuleSource::SourceFile(node) => { NavigationTarget::from_syntax(file_id, name, None, node.syntax()) } ModuleSource::Module(node) => { NavigationTarget::from_syntax(file_id, name, None, node.syntax()) } - }; - Ok(res) + } } - pub(crate) fn from_module_to_decl( - db: &RootDatabase, - module: hir::Module, - ) -> Cancelable { + pub(crate) fn from_module_to_decl(db: &RootDatabase, module: hir::Module) -> NavigationTarget { let name = module .name(db) .map(|it| it.to_string().into()) .unwrap_or_default(); if let Some((file_id, source)) = module.declaration_source(db) { - return Ok(NavigationTarget::from_syntax( - file_id, - name, - None, - source.syntax(), - )); + return NavigationTarget::from_syntax(file_id, name, None, source.syntax()); } NavigationTarget::from_module(db, module) } // TODO once Def::Item is gone, this should be able to always return a NavigationTarget - pub(crate) fn from_def(db: &RootDatabase, def: Def) -> Cancelable> { + pub(crate) fn from_def(db: &RootDatabase, def: Def) -> Option { let res = match def { Def::Struct(s) => { let (file_id, node) = s.source(db); @@ -124,7 +112,7 @@ impl NavigationTarget { NavigationTarget::from_named(file_id.original_file(db), &*node) } Def::Function(f) => { - let (file_id, node) = f.source(db)?; + let (file_id, node) = f.source(db); NavigationTarget::from_named(file_id.original_file(db), &*node) } Def::Trait(f) => { @@ -143,10 +131,10 @@ impl NavigationTarget { let (file_id, node) = f.source(db); NavigationTarget::from_named(file_id.original_file(db), &*node) } - Def::Module(m) => NavigationTarget::from_module(db, m)?, - Def::Item => return Ok(None), + Def::Module(m) => NavigationTarget::from_module(db, m), + Def::Item => return None, }; - Ok(Some(res)) + Some(res) } #[cfg(test)] diff --git a/crates/ra_ide_api/src/parent_module.rs b/crates/ra_ide_api/src/parent_module.rs index 451304739..379b3f3a4 100644 --- a/crates/ra_ide_api/src/parent_module.rs +++ b/crates/ra_ide_api/src/parent_module.rs @@ -12,7 +12,7 @@ pub(crate) fn parent_module( None => return Ok(Vec::new()), Some(it) => it, }; - let nav = NavigationTarget::from_module_to_decl(db, module)?; + let nav = NavigationTarget::from_module_to_decl(db, module); Ok(vec![nav]) } -- cgit v1.2.3