From bb4bfae42294dea4c0f97f2cea42817110caa809 Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Wed, 20 Jul 2022 13:59:31 +0200 Subject: fix: Fix search for associated trait items being inconsistent --- crates/ide/src/highlight_related.rs | 64 +++++++++++++++++++++++++++++++++++++ crates/ide/src/references.rs | 3 +- 2 files changed, 66 insertions(+), 1 deletion(-) (limited to 'crates/ide') diff --git a/crates/ide/src/highlight_related.rs b/crates/ide/src/highlight_related.rs index 7c0a7fa1e72..9b4bfc41075 100644 --- a/crates/ide/src/highlight_related.rs +++ b/crates/ide/src/highlight_related.rs @@ -1307,6 +1307,70 @@ fn foo(( //^^^read let foo; } +"#, + ); + } + + #[test] + fn test_hl_trait_impl_methods() { + check( + r#" +trait Trait { + fn func$0(self) {} + //^^^^ +} + +impl Trait for () { + fn func(self) {} + //^^^^ +} + +fn main() { + <()>::func(()); + //^^^^ + ().func(); + //^^^^ +} +"#, + ); + check( + r#" +trait Trait { + fn func(self) {} + //^^^^ +} + +impl Trait for () { + fn func$0(self) {} + //^^^^ +} + +fn main() { + <()>::func(()); + //^^^^ + ().func(); + //^^^^ +} +"#, + ); + check( + r#" +trait Trait { + fn func(self) {} + //^^^^ +} + +impl Trait for () { + fn func(self) {} + //^^^^ +} + +fn main() { + <()>::func(()); + //^^^^ + ().func$0(); + //^^^^ +} "#, ); } diff --git a/crates/ide/src/references.rs b/crates/ide/src/references.rs index 626e8fe34a9..8a00d6f1441 100644 --- a/crates/ide/src/references.rs +++ b/crates/ide/src/references.rs @@ -73,6 +73,7 @@ pub(crate) fn find_all_refs( }); let mut usages = def.usages(sema).set_scope(search_scope.clone()).include_self_refs().all(); + if literal_search { retain_adt_literal_usages(&mut usages, def, sema); } @@ -105,7 +106,7 @@ pub(crate) fn find_all_refs( } None => { let search = make_searcher(false); - Some(find_defs(sema, &syntax, position.offset)?.into_iter().map(search).collect()) + Some(find_defs(sema, &syntax, position.offset)?.map(search).collect()) } } } -- cgit 1.4.1-3-g733a5