@@ -50,13 +50,11 @@ pub(crate) fn unresolved_field(
50
50
}
51
51
52
52
fn fixes ( ctx : & DiagnosticsContext < ' _ > , d : & hir:: UnresolvedField ) -> Option < Vec < Assist > > {
53
- if d. method_with_same_name_exists {
54
- let mut method_fix = method_fix ( ctx, & d. expr ) . unwrap_or_default ( ) ;
55
- method_fix. push ( add_field_fix ( ctx, d) ?) ;
56
- Some ( method_fix)
57
- } else {
58
- Some ( vec ! [ add_field_fix( ctx, d) ?] )
53
+ let mut fixes = if d. method_with_same_name_exists { method_fix ( ctx, & d. expr ) } else { None } ;
54
+ if let Some ( fix) = add_field_fix ( ctx, d) {
55
+ fixes. get_or_insert_with ( Vec :: new) . push ( fix) ;
59
56
}
57
+ fixes
60
58
}
61
59
62
60
fn add_field_fix ( ctx : & DiagnosticsContext < ' _ > , d : & hir:: UnresolvedField ) -> Option < Assist > {
@@ -77,7 +75,7 @@ fn add_field_fix(ctx: &DiagnosticsContext<'_>, d: &hir::UnresolvedField) -> Opti
77
75
if let Some ( new_field_type) = ctx. sema . type_of_expr ( & expr) . map ( |v| v. adjusted ( ) ) {
78
76
let display =
79
77
new_field_type. display_source_code ( ctx. sema . db , target_module. into ( ) , true ) . ok ( ) ;
80
- make:: ty ( display. as_deref ( ) . unwrap_or_else ( || "()" ) )
78
+ make:: ty ( display. as_deref ( ) . unwrap_or ( "()" ) )
81
79
} else {
82
80
make:: ty ( "()" )
83
81
} ;
@@ -106,7 +104,7 @@ fn add_field_fix(ctx: &DiagnosticsContext<'_>, d: &hir::UnresolvedField) -> Opti
106
104
}
107
105
None => {
108
106
// Empty Struct. Add a field right before the closing brace
109
- let indent = IndentLevel :: from_node ( & adt_syntax. value ) + 1 ;
107
+ let indent = IndentLevel :: from_node ( adt_syntax. value ) + 1 ;
110
108
let record_field_list =
111
109
adt_syntax. value . children ( ) . find ( |v| v. kind ( ) == SyntaxKind :: RECORD_FIELD_LIST ) ?;
112
110
let offset = record_field_list. first_token ( ) . map ( |f| f. text_range ( ) . end ( ) ) ?;
0 commit comments