diff --git a/crates/ra_hir/src/code_model_api.rs b/crates/ra_hir/src/code_model_api.rs index 87175476b6..4d7925ac47 100644 --- a/crates/ra_hir/src/code_model_api.rs +++ b/crates/ra_hir/src/code_model_api.rs @@ -305,13 +305,13 @@ impl Function { db.body_syntax_mapping(self.def_id) } - pub fn scopes(&self, db: &impl HirDatabase) -> Cancelable { - let scopes = db.fn_scopes(self.def_id)?; + pub fn scopes(&self, db: &impl HirDatabase) -> ScopesWithSyntaxMapping { + let scopes = db.fn_scopes(self.def_id); let syntax_mapping = db.body_syntax_mapping(self.def_id); - Ok(ScopesWithSyntaxMapping { + ScopesWithSyntaxMapping { scopes, syntax_mapping, - }) + } } pub fn signature(&self, db: &impl HirDatabase) -> Arc { diff --git a/crates/ra_hir/src/db.rs b/crates/ra_hir/src/db.rs index c81b8f5f43..d20c03f434 100644 --- a/crates/ra_hir/src/db.rs +++ b/crates/ra_hir/src/db.rs @@ -32,7 +32,7 @@ pub trait HirDatabase: SyntaxDatabase use fn crate::macros::expand_macro_invocation; } - fn fn_scopes(def_id: DefId) -> Cancelable> { + fn fn_scopes(def_id: DefId) -> Arc { type FnScopesQuery; use fn query_definitions::fn_scopes; } diff --git a/crates/ra_hir/src/query_definitions.rs b/crates/ra_hir/src/query_definitions.rs index 31086d1e18..8f33ec7073 100644 --- a/crates/ra_hir/src/query_definitions.rs +++ b/crates/ra_hir/src/query_definitions.rs @@ -18,10 +18,10 @@ use crate::{ nameres::{InputModuleItems, ItemMap, Resolver}, }; -pub(super) fn fn_scopes(db: &impl HirDatabase, def_id: DefId) -> Cancelable> { +pub(super) fn fn_scopes(db: &impl HirDatabase, def_id: DefId) -> Arc { let body = db.body_hir(def_id); let res = FnScopes::new(body); - Ok(Arc::new(res)) + Arc::new(res) } pub(super) fn file_items(db: &impl HirDatabase, file_id: HirFileId) -> Arc { diff --git a/crates/ra_hir/src/ty.rs b/crates/ra_hir/src/ty.rs index 5196600845..54eece1651 100644 --- a/crates/ra_hir/src/ty.rs +++ b/crates/ra_hir/src/ty.rs @@ -1206,7 +1206,7 @@ pub fn infer(db: &impl HirDatabase, def_id: DefId) -> Cancelable String { { let func = source_binder::function_from_source(&db, file_id, fn_def).unwrap(); let inference_result = func.infer(&db).unwrap(); - let body_syntax_mapping = func.body_syntax_mapping(&db).unwrap(); + let body_syntax_mapping = func.body_syntax_mapping(&db); let mut types = Vec::new(); for (pat, ty) in inference_result.type_of_pat.iter() { let syntax_ptr = match body_syntax_mapping.pat_syntax(pat) { diff --git a/crates/ra_ide_api/src/completion/complete_scope.rs b/crates/ra_ide_api/src/completion/complete_scope.rs index f422bb9a70..fdb64895e6 100644 --- a/crates/ra_ide_api/src/completion/complete_scope.rs +++ b/crates/ra_ide_api/src/completion/complete_scope.rs @@ -15,7 +15,7 @@ pub(super) fn complete_scope(acc: &mut Completions, ctx: &CompletionContext) -> None => return Ok(()), }; if let Some(function) = &ctx.function { - let scopes = function.scopes(ctx.db)?; + let scopes = function.scopes(ctx.db); complete_fn(acc, &scopes, ctx.offset); } diff --git a/crates/ra_ide_api/src/goto_definition.rs b/crates/ra_ide_api/src/goto_definition.rs index 46fd6883f2..5d522181b3 100644 --- a/crates/ra_ide_api/src/goto_definition.rs +++ b/crates/ra_ide_api/src/goto_definition.rs @@ -50,7 +50,7 @@ pub(crate) fn reference_definition( if let Some(function) = hir::source_binder::function_from_child_node(db, file_id, name_ref.syntax()) { - let scope = function.scopes(db)?; + let scope = function.scopes(db); // First try to resolve the symbol locally if let Some(entry) = scope.resolve_local_name(name_ref) { let nav = NavigationTarget::from_scope_entry(file_id, &entry); diff --git a/crates/ra_ide_api/src/imp.rs b/crates/ra_ide_api/src/imp.rs index 3ef11dfa17..8b2cd6e279 100644 --- a/crates/ra_ide_api/src/imp.rs +++ b/crates/ra_ide_api/src/imp.rs @@ -128,7 +128,7 @@ impl db::RootDatabase { .collect::>(); ret.extend( descr - .scopes(self)? + .scopes(self) .find_all_refs(binding) .into_iter() .map(|ref_desc| (position.file_id, ref_desc.range)), @@ -156,7 +156,7 @@ impl db::RootDatabase { position.file_id, name_ref.syntax(), )); - let scope = descr.scopes(db)?; + let scope = descr.scopes(db); let resolved = ctry!(scope.resolve_local_name(name_ref)); let resolved = resolved.ptr().resolve(source_file); let binding = ctry!(find_node_at_offset::(