Unnamed repository; edit this file 'description' to name the repository.
| -rw-r--r-- | crates/ide-diagnostics/src/handlers/missing_fields.rs | 34 |
1 files changed, 4 insertions, 30 deletions
diff --git a/crates/ide-diagnostics/src/handlers/missing_fields.rs b/crates/ide-diagnostics/src/handlers/missing_fields.rs index 5896fb2cb1..607f0cbd23 100644 --- a/crates/ide-diagnostics/src/handlers/missing_fields.rs +++ b/crates/ide-diagnostics/src/handlers/missing_fields.rs @@ -170,7 +170,8 @@ fn fixes(ctx: &DiagnosticsContext<'_, '_>, d: &hir::MissingFields) -> Option<Vec ); new_fields.push(field); } - let new_field_list = add_record_expr_fields(editor, &old_field_list, new_fields)?; + old_field_list.add_fields(&editor, new_fields); + let new_field_list = editor.finish().find_element(old_field_list.syntax())?; build_text_edit(&new_field_list, old_field_list.syntax()) } Either::Right(field_list_parent) => { @@ -193,40 +194,13 @@ fn fixes(ctx: &DiagnosticsContext<'_, '_>, d: &hir::MissingFields) -> Option<Vec ); new_fields.push(field); } - let new_field_list = add_record_pat_fields(editor, &old_field_list, new_fields)?; + old_field_list.add_fields(&editor, new_fields); + let new_field_list = editor.finish().find_element(old_field_list.syntax())?; build_text_edit(&new_field_list, old_field_list.syntax()) } } } -fn add_record_expr_fields( - editor: SyntaxEditor, - field_list: &ast::RecordExprFieldList, - fields: Vec<ast::RecordExprField>, -) -> Option<SyntaxNode> { - let old_range = field_list.syntax().text_range(); - let kind = field_list.syntax().kind(); - field_list.add_fields(&editor, fields); - let edit = editor.finish(); - edit.new_root() - .descendants() - .find(|it| it.kind() == kind && it.text_range().start() == old_range.start()) -} - -fn add_record_pat_fields( - editor: SyntaxEditor, - field_list: &ast::RecordPatFieldList, - fields: Vec<ast::RecordPatField>, -) -> Option<SyntaxNode> { - let old_range = field_list.syntax().text_range(); - let kind = field_list.syntax().kind(); - field_list.add_fields(&editor, fields); - let edit = editor.finish(); - edit.new_root() - .descendants() - .find(|it| it.kind() == kind && it.text_range().start() == old_range.start()) -} - fn make_ty( ty: &hir::Type<'_>, db: &dyn HirDatabase, |