diff options
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()) } } } |
