diff --git a/crates/ide/src/goto_implementation.rs b/crates/ide/src/goto_implementation.rs index 43356a94edf..95fd398500b 100644 --- a/crates/ide/src/goto_implementation.rs +++ b/crates/ide/src/goto_implementation.rs @@ -52,13 +52,13 @@ pub(crate) fn goto_implementation( hir::ModuleDef::Function(f) => { let assoc = f.as_assoc_item(sema.db)?; let name = assoc.name(sema.db)?; - let trait_ = assoc.containing_trait(sema.db)?; + let trait_ = assoc.containing_trait_or_trait_impl(sema.db)?; impls_for_trait_item(&sema, trait_, name) } hir::ModuleDef::Const(c) => { let assoc = c.as_assoc_item(sema.db)?; let name = assoc.name(sema.db)?; - let trait_ = assoc.containing_trait(sema.db)?; + let trait_ = assoc.containing_trait_or_trait_impl(sema.db)?; impls_for_trait_item(&sema, trait_, name) } _ => return None, diff --git a/crates/ide_completion/src/render.rs b/crates/ide_completion/src/render.rs index 902df46ca16..f24ef7e49f4 100644 --- a/crates/ide_completion/src/render.rs +++ b/crates/ide_completion/src/render.rs @@ -111,7 +111,10 @@ fn is_deprecated_assoc_item(&self, as_assoc_item: impl AsAssocItem) -> bool { hir::AssocItem::TypeAlias(it) => self.is_deprecated(it), }; is_assoc_deprecated - || assoc.containing_trait(db).map(|trait_| self.is_deprecated(trait_)).unwrap_or(false) + || assoc + .containing_trait_or_trait_impl(db) + .map(|trait_| self.is_deprecated(trait_)) + .unwrap_or(false) } fn docs(&self, node: impl HasAttrs) -> Option {