diff options
| author | dfireBird <me@dfirebird.dev> | 2023-11-15 18:26:29 +0530 |
|---|---|---|
| committer | dfireBird <me@dfirebird.dev> | 2023-11-28 22:21:57 +0530 |
| commit | eedeb58a4eb04e15e6eb82f9f2485ebf38ecd30c (patch) | |
| tree | 600fb5069fc89cc6ae83e18154d5396ad9f57f57 | |
| parent | 5bcafd7dc06e2cede234f0df5a7138d63ac92f6a (diff) | |
| download | rust-eedeb58a4eb04e15e6eb82f9f2485ebf38ecd30c.tar.gz rust-eedeb58a4eb04e15e6eb82f9f2485ebf38ecd30c.zip | |
refactor obtaining receivers into idiomatic way
variable name change for clearer usage indication
| -rw-r--r-- | crates/ide-completion/src/render.rs | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/crates/ide-completion/src/render.rs b/crates/ide-completion/src/render.rs index fa6854b0888..26488f49bea 100644 --- a/crates/ide-completion/src/render.rs +++ b/crates/ide-completion/src/render.rs @@ -155,26 +155,24 @@ pub(crate) fn render_field( // call parens. if let Some(receiver) = &dot_access.receiver { - let range = receiver.syntax().text_range(); - builder.insert(range.start(), "(".to_string()); - builder.insert(range.end(), ")".to_string()); + if let Some(receiver) = ctx.completion.sema.original_ast_node(receiver.clone()) { + let range = receiver.syntax().text_range(); + builder.insert(range.start(), "(".to_string()); + builder.insert(range.end(), ")".to_string()); + } } builder.replace( ctx.source_range(), field_with_receiver(db, receiver.as_ref(), &escaped_name).into(), ); - let is_fn_expected = - ctx.completion.expected_type.as_ref().map_or(false, |ty| ty.is_fn() || ty.is_closure()); + let expected_fn_type = + ctx.completion.expected_type.as_ref().is_some_and(|ty| ty.is_fn() || ty.is_closure()); - // This could be refactored as method of DotAccessKind - let is_parens_needed = if let DotAccessKind::Method { has_parens } = dot_access.kind { - !has_parens - } else { - true - }; + let is_parens_needed = + !matches!(dot_access.kind, DotAccessKind::Method { has_parens: true }); - if !is_fn_expected && is_parens_needed { + if !expected_fn_type && is_parens_needed { builder.insert(ctx.source_range().end(), "()".to_string()); } |
