diff options
| author | Lukas Wirth <lukastw97@gmail.com> | 2022-07-20 13:59:31 +0200 |
|---|---|---|
| committer | Lukas Wirth <lukastw97@gmail.com> | 2022-07-20 13:59:31 +0200 |
| commit | bb4bfae42294dea4c0f97f2cea42817110caa809 (patch) | |
| tree | 6c464bd453f7e92961b37b9f446cbd9f79b3fac8 /crates/ide | |
| parent | 84544134f6e2e1f53a9ce3f821dbe7a70f924145 (diff) | |
| download | rust-bb4bfae42294dea4c0f97f2cea42817110caa809.tar.gz rust-bb4bfae42294dea4c0f97f2cea42817110caa809.zip | |
fix: Fix search for associated trait items being inconsistent
Diffstat (limited to 'crates/ide')
| -rw-r--r-- | crates/ide/src/highlight_related.rs | 64 | ||||
| -rw-r--r-- | crates/ide/src/references.rs | 3 |
2 files changed, 66 insertions, 1 deletions
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 @@ -1310,4 +1310,68 @@ fn 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()) } } } |
