find_usages limited to actual usages again

This commit is contained in:
Matt Niemeir 2020-03-10 22:27:38 -05:00
parent ce8121bd65
commit 13ccbb2919
2 changed files with 84 additions and 14 deletions

View File

@ -381,6 +381,76 @@ fn new(j: i32) -> Self {
);
}
#[test]
fn test_field_shorthand_correct_struct() {
test_rename(
r#"
struct Foo {
i<|>: i32,
}
struct Bar {
i: i32,
}
impl Bar {
fn new(i: i32) -> Self {
Self { i }
}
}
"#,
"j",
r#"
struct Foo {
j: i32,
}
struct Bar {
i: i32,
}
impl Bar {
fn new(i: i32) -> Self {
Self { i }
}
}
"#,
);
}
#[test]
fn test_shadow_local_for_struct_shorthand() {
test_rename(
r#"
struct Foo {
i: i32,
}
fn baz(i<|>: i32) -> Self {
let x = Foo { i };
{
let i = 0;
Foo { i }
}
}
"#,
"j",
r#"
struct Foo {
i: i32,
}
fn baz(j: i32) -> Self {
let x = Foo { i: j };
{
let i = 0;
Foo { i }
}
}
"#,
);
}
#[test]
fn test_rename_mod() {
let (analysis, position) = analysis_and_position(

View File

@ -256,21 +256,21 @@ pub fn find_usages(
access: reference_access(&def, &name_ref),
});
}
Some(NameRefClass::FieldShorthand { local, field: _ }) => {
let kind = match self {
Definition::StructField(_) => {
ReferenceKind::StructFieldShorthandForField
}
Definition::Local(_) => ReferenceKind::StructFieldShorthandForLocal,
_ => continue,
};
Some(NameRefClass::FieldShorthand { local, field }) => {
match self {
Definition::StructField(_) if &field == self => refs.push(Reference {
file_range: sema.original_range(name_ref.syntax()),
kind: ReferenceKind::StructFieldShorthandForField,
access: reference_access(&field, &name_ref),
}),
Definition::Local(l) if &local == l => refs.push(Reference {
file_range: sema.original_range(name_ref.syntax()),
kind: ReferenceKind::StructFieldShorthandForLocal,
access: reference_access(&Definition::Local(local), &name_ref),
}),
let file_range = sema.original_range(name_ref.syntax());
refs.push(Reference {
file_range,
kind,
access: reference_access(&Definition::Local(local), &name_ref),
});
_ => {} // not a usage
};
}
_ => {} // not a usage
}