From ce8121bd65daecd9e92371c244dd1ac2b0e5ecda Mon Sep 17 00:00:00 2001 From: Matt Niemeir Date: Mon, 9 Mar 2020 21:34:33 -0500 Subject: Renaming a local renames struct field shorthand --- crates/ra_ide_db/src/search.rs | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) (limited to 'crates/ra_ide_db') diff --git a/crates/ra_ide_db/src/search.rs b/crates/ra_ide_db/src/search.rs index 9436a7562..b843b5b57 100644 --- a/crates/ra_ide_db/src/search.rs +++ b/crates/ra_ide_db/src/search.rs @@ -30,7 +30,8 @@ pub struct Reference { #[derive(Debug, Clone, PartialEq)] pub enum ReferenceKind { - StructFieldShorthand, + StructFieldShorthandForField, + StructFieldShorthandForLocal, StructLiteral, Other, } @@ -238,8 +239,8 @@ impl Definition { // FIXME: reuse sb // See https://github.com/rust-lang/rust/pull/68198#issuecomment-574269098 - match (classify_name_ref(&sema, &name_ref), self) { - (Some(NameRefClass::Definition(def)), _) if &def == self => { + match classify_name_ref(&sema, &name_ref) { + Some(NameRefClass::Definition(def)) if &def == self => { let kind = if is_record_lit_name_ref(&name_ref) || is_call_expr_name_ref(&name_ref) { @@ -255,14 +256,19 @@ impl Definition { access: reference_access(&def, &name_ref), }); } - ( - Some(NameRefClass::FieldShorthand { local, field: _ }), - Definition::StructField(_), - ) => { + Some(NameRefClass::FieldShorthand { local, field: _ }) => { + let kind = match self { + Definition::StructField(_) => { + ReferenceKind::StructFieldShorthandForField + } + Definition::Local(_) => ReferenceKind::StructFieldShorthandForLocal, + _ => continue, + }; + let file_range = sema.original_range(name_ref.syntax()); refs.push(Reference { - file_range: file_range, - kind: ReferenceKind::StructFieldShorthand, + file_range, + kind, access: reference_access(&Definition::Local(local), &name_ref), }); } -- cgit v1.2.3