about summary refs log tree commit diff
diff options
context:
space:
mode:
authordfireBird <me@dfirebird.dev>2023-11-15 18:26:29 +0530
committerdfireBird <me@dfirebird.dev>2023-11-28 22:21:57 +0530
commiteedeb58a4eb04e15e6eb82f9f2485ebf38ecd30c (patch)
tree600fb5069fc89cc6ae83e18154d5396ad9f57f57
parent5bcafd7dc06e2cede234f0df5a7138d63ac92f6a (diff)
downloadrust-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.rs22
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());
         }