File tree 1 file changed +10
-12
lines changed
crates/ide-completion/src
1 file changed +10
-12
lines changed Original file line number Diff line number Diff line change @@ -155,26 +155,24 @@ pub(crate) fn render_field(
155
155
// call parens.
156
156
157
157
if let Some ( receiver) = & dot_access. receiver {
158
- let range = receiver. syntax ( ) . text_range ( ) ;
159
- builder. insert ( range. start ( ) , "(" . to_string ( ) ) ;
160
- builder. insert ( range. end ( ) , ")" . to_string ( ) ) ;
158
+ if let Some ( receiver) = ctx. completion . sema . original_ast_node ( receiver. clone ( ) ) {
159
+ let range = receiver. syntax ( ) . text_range ( ) ;
160
+ builder. insert ( range. start ( ) , "(" . to_string ( ) ) ;
161
+ builder. insert ( range. end ( ) , ")" . to_string ( ) ) ;
162
+ }
161
163
}
162
164
builder. replace (
163
165
ctx. source_range ( ) ,
164
166
field_with_receiver ( db, receiver. as_ref ( ) , & escaped_name) . into ( ) ,
165
167
) ;
166
168
167
- let is_fn_expected =
168
- ctx. completion . expected_type . as_ref ( ) . map_or ( false , |ty| ty. is_fn ( ) || ty. is_closure ( ) ) ;
169
+ let expected_fn_type =
170
+ ctx. completion . expected_type . as_ref ( ) . is_some_and ( |ty| ty. is_fn ( ) || ty. is_closure ( ) ) ;
169
171
170
- // This could be refactored as method of DotAccessKind
171
- let is_parens_needed = if let DotAccessKind :: Method { has_parens } = dot_access. kind {
172
- !has_parens
173
- } else {
174
- true
175
- } ;
172
+ let is_parens_needed =
173
+ !matches ! ( dot_access. kind, DotAccessKind :: Method { has_parens: true } ) ;
176
174
177
- if !is_fn_expected && is_parens_needed {
175
+ if !expected_fn_type && is_parens_needed {
178
176
builder. insert ( ctx. source_range ( ) . end ( ) , "()" . to_string ( ) ) ;
179
177
}
180
178
You can’t perform that action at this time.
0 commit comments