find_usages limited to actual usages again
This commit is contained in:
parent
ce8121bd65
commit
13ccbb2919
@ -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(
|
||||
|
@ -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
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user