fix: Fix search for associated trait items being inconsistent

This commit is contained in:
Lukas Wirth 2022-07-20 13:59:31 +02:00
parent 84544134f6
commit bb4bfae422
4 changed files with 125 additions and 43 deletions

View file

@ -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();
//^^^^
}
"#,
);
}

View file

@ -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())
}
}
}