Skip to content

Commit b67b352

Browse files
committed
Make functions in impl have a container name
fixes #16015
1 parent 21b06c1 commit b67b352

File tree

3 files changed

+115
-44
lines changed

3 files changed

+115
-44
lines changed

crates/hir/src/symbols.rs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use hir_def::{
88
TraitId,
99
};
1010
use hir_expand::{HirFileId, InFile};
11-
use hir_ty::db::HirDatabase;
11+
use hir_ty::{db::HirDatabase, display::HirDisplay};
1212
use syntax::{ast::HasName, AstNode, AstPtr, SmolStr, SyntaxNode, SyntaxNodePtr};
1313

1414
use crate::{Module, ModuleDef, Semantics};
@@ -230,9 +230,12 @@ impl<'a> SymbolCollector<'a> {
230230

231231
fn collect_from_impl(&mut self, impl_id: ImplId) {
232232
let impl_data = self.db.impl_data(impl_id);
233-
for &assoc_item_id in &impl_data.items {
234-
self.push_assoc_item(assoc_item_id)
235-
}
233+
let impl_name = Some(SmolStr::new(impl_data.self_ty.display(self.db).to_string()));
234+
self.with_container_name(impl_name, |s| {
235+
for &assoc_item_id in &impl_data.items {
236+
s.push_assoc_item(assoc_item_id)
237+
}
238+
})
236239
}
237240

238241
fn collect_from_trait(&mut self, trait_id: TraitId) {

crates/ide-db/src/symbol_index.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -414,6 +414,12 @@ impl Struct {
414414
fn impl_fn() {}
415415
}
416416
417+
struct StructT<T>;
418+
419+
impl <T> StructT<T> {
420+
fn generic_impl_fn() {}
421+
}
422+
417423
trait Trait {
418424
fn trait_fn(&self);
419425
}

0 commit comments

Comments
 (0)