refactor obtaining receivers into idiomatic way

variable name change for clearer usage indication
This commit is contained in:
dfireBird 2023-11-15 18:26:29 +05:30
parent 5bcafd7dc0
commit eedeb58a4e
No known key found for this signature in database
GPG key ID: 26D522CA5FC2B93D

View file

@ -155,26 +155,24 @@ pub(crate) fn render_field(
// call parens. // call parens.
if let Some(receiver) = &dot_access.receiver { if let Some(receiver) = &dot_access.receiver {
let range = receiver.syntax().text_range(); if let Some(receiver) = ctx.completion.sema.original_ast_node(receiver.clone()) {
builder.insert(range.start(), "(".to_string()); let range = receiver.syntax().text_range();
builder.insert(range.end(), ")".to_string()); builder.insert(range.start(), "(".to_string());
builder.insert(range.end(), ")".to_string());
}
} }
builder.replace( builder.replace(
ctx.source_range(), ctx.source_range(),
field_with_receiver(db, receiver.as_ref(), &escaped_name).into(), field_with_receiver(db, receiver.as_ref(), &escaped_name).into(),
); );
let is_fn_expected = let expected_fn_type =
ctx.completion.expected_type.as_ref().map_or(false, |ty| ty.is_fn() || ty.is_closure()); 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 =
let is_parens_needed = if let DotAccessKind::Method { has_parens } = dot_access.kind { !matches!(dot_access.kind, DotAccessKind::Method { has_parens: true });
!has_parens
} else {
true
};
if !is_fn_expected && is_parens_needed { if !expected_fn_type && is_parens_needed {
builder.insert(ctx.source_range().end(), "()".to_string()); builder.insert(ctx.source_range().end(), "()".to_string());
} }