@@ -50,13 +50,11 @@ pub(crate) fn unresolved_field(
5050}
5151
5252fn 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) ;
5956 }
57+ fixes
6058}
6159
6260fn add_field_fix ( ctx : & DiagnosticsContext < ' _ > , d : & hir:: UnresolvedField ) -> Option < Assist > {
@@ -77,7 +75,7 @@ fn add_field_fix(ctx: &DiagnosticsContext<'_>, d: &hir::UnresolvedField) -> Opti
7775 if let Some ( new_field_type) = ctx. sema . type_of_expr ( & expr) . map ( |v| v. adjusted ( ) ) {
7876 let display =
7977 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 ( "()" ) )
8179 } else {
8280 make:: ty ( "()" )
8381 } ;
@@ -106,7 +104,7 @@ fn add_field_fix(ctx: &DiagnosticsContext<'_>, d: &hir::UnresolvedField) -> Opti
106104 }
107105 None => {
108106 // 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 ;
110108 let record_field_list =
111109 adt_syntax. value . children ( ) . find ( |v| v. kind ( ) == SyntaxKind :: RECORD_FIELD_LIST ) ?;
112110 let offset = record_field_list. first_token ( ) . map ( |f| f. text_range ( ) . end ( ) ) ?;
0 commit comments