aboutsummaryrefslogtreecommitdiff
path: root/crates/ide_db/src/search.rs
diff options
context:
space:
mode:
authorLukas Wirth <[email protected]>2020-11-14 16:49:36 +0000
committerLukas Wirth <[email protected]>2020-11-14 16:51:09 +0000
commite55a44a831477e2fc8e11340c3d91db883b97c8e (patch)
treedb334060759bcc4252689e305a466ec3dd2b5d8b /crates/ide_db/src/search.rs
parent99fa139beab0c03583c676554c3d807525f602af (diff)
Use shorthand record syntax when renaming struct initializer field
Diffstat (limited to 'crates/ide_db/src/search.rs')
-rw-r--r--crates/ide_db/src/search.rs16
1 files changed, 10 insertions, 6 deletions
diff --git a/crates/ide_db/src/search.rs b/crates/ide_db/src/search.rs
index a24335240..4248606c8 100644
--- a/crates/ide_db/src/search.rs
+++ b/crates/ide_db/src/search.rs
@@ -30,6 +30,7 @@ pub enum ReferenceKind {
30 FieldShorthandForField, 30 FieldShorthandForField,
31 FieldShorthandForLocal, 31 FieldShorthandForLocal,
32 StructLiteral, 32 StructLiteral,
33 RecordExprField,
33 Other, 34 Other,
34} 35}
35 36
@@ -278,12 +279,15 @@ impl<'a> FindUsages<'a> {
278 ) -> bool { 279 ) -> bool {
279 match NameRefClass::classify(self.sema, &name_ref) { 280 match NameRefClass::classify(self.sema, &name_ref) {
280 Some(NameRefClass::Definition(def)) if &def == self.def => { 281 Some(NameRefClass::Definition(def)) if &def == self.def => {
281 let kind = if is_record_lit_name_ref(&name_ref) || is_call_expr_name_ref(&name_ref) 282 let kind =
282 { 283 if name_ref.syntax().parent().and_then(ast::RecordExprField::cast).is_some() {
283 ReferenceKind::StructLiteral 284 ReferenceKind::RecordExprField
284 } else { 285 } else if is_record_lit_name_ref(&name_ref) || is_call_expr_name_ref(&name_ref)
285 ReferenceKind::Other 286 {
286 }; 287 ReferenceKind::StructLiteral
288 } else {
289 ReferenceKind::Other
290 };
287 291
288 let reference = Reference { 292 let reference = Reference {
289 file_range: self.sema.original_range(name_ref.syntax()), 293 file_range: self.sema.original_range(name_ref.syntax()),