Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir/src/symbols.rs')
-rw-r--r--crates/hir/src/symbols.rs16
1 files changed, 10 insertions, 6 deletions
diff --git a/crates/hir/src/symbols.rs b/crates/hir/src/symbols.rs
index a2a30edeb0..4da0dfba67 100644
--- a/crates/hir/src/symbols.rs
+++ b/crates/hir/src/symbols.rs
@@ -2,13 +2,14 @@
use base_db::FileRange;
use hir_def::{
+ db::DefDatabase,
item_scope::ItemInNs,
src::{HasChildSource, HasSource},
AdtId, AssocItemId, DefWithBodyId, HasModule, ImplId, Lookup, MacroId, ModuleDefId, ModuleId,
TraitId,
};
use hir_expand::{HirFileId, InFile};
-use hir_ty::db::HirDatabase;
+use hir_ty::{db::HirDatabase, display::HirDisplay};
use syntax::{ast::HasName, AstNode, AstPtr, SmolStr, SyntaxNode, SyntaxNodePtr};
use crate::{Module, ModuleDef, Semantics};
@@ -230,9 +231,12 @@ impl<'a> SymbolCollector<'a> {
fn collect_from_impl(&mut self, impl_id: ImplId) {
let impl_data = self.db.impl_data(impl_id);
- for &assoc_item_id in &impl_data.items {
- self.push_assoc_item(assoc_item_id)
- }
+ let impl_name = Some(SmolStr::new(impl_data.self_ty.display(self.db).to_string()));
+ self.with_container_name(impl_name, |s| {
+ for &assoc_item_id in &impl_data.items {
+ s.push_assoc_item(assoc_item_id)
+ }
+ })
}
fn collect_from_trait(&mut self, trait_id: TraitId) {
@@ -274,9 +278,9 @@ impl<'a> SymbolCollector<'a> {
}
}
- fn push_decl<L>(&mut self, id: L, is_assoc: bool)
+ fn push_decl<'db, L>(&mut self, id: L, is_assoc: bool)
where
- L: Lookup + Into<ModuleDefId>,
+ L: Lookup<Database<'db> = dyn DefDatabase + 'db> + Into<ModuleDefId>,
<L as Lookup>::Data: HasSource,
<<L as Lookup>::Data as HasSource>::Value: HasName,
{