Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-assists/src/handlers/generate_single_field_struct_from.rs')
-rw-r--r--crates/ide-assists/src/handlers/generate_single_field_struct_from.rs45
1 files changed, 21 insertions, 24 deletions
diff --git a/crates/ide-assists/src/handlers/generate_single_field_struct_from.rs b/crates/ide-assists/src/handlers/generate_single_field_struct_from.rs
index d46514dce1..7160400a96 100644
--- a/crates/ide-assists/src/handlers/generate_single_field_struct_from.rs
+++ b/crates/ide-assists/src/handlers/generate_single_field_struct_from.rs
@@ -80,55 +80,52 @@ pub(crate) fn generate_single_field_struct_from(
"Generate single field `From`",
strukt.syntax().text_range(),
|builder| {
- let mut editor = builder.make_editor(strukt.syntax());
+ let editor = builder.make_editor(strukt.syntax());
+ let make = editor.make();
let indent = strukt.indent_level();
let ty_where_clause = strukt.where_clause();
let type_gen_params = strukt.generic_param_list();
let type_gen_args = type_gen_params.as_ref().map(|params| params.to_generic_args());
- let trait_gen_args = Some(editor.make().generic_arg_list(
- [ast::GenericArg::TypeArg(editor.make().type_arg(main_field_ty.clone()))],
+ let trait_gen_args = Some(make.generic_arg_list(
+ [ast::GenericArg::TypeArg(make.type_arg(main_field_ty.clone()))],
false,
));
- let ty = editor.make().ty(&strukt_name.text());
+ let ty = make.ty(&strukt_name.text());
- let constructor = make_adt_constructor(
- names.as_deref(),
- constructors,
- &main_field_name,
- editor.make(),
- );
- let body = editor.make().block_expr([], Some(constructor));
+ let constructor =
+ make_adt_constructor(names.as_deref(), constructors, &main_field_name, make);
+ let body = make.block_expr([], Some(constructor));
let fn_ = editor
.make()
.fn_(
[],
None,
- editor.make().name("from"),
+ make.name("from"),
None,
None,
- editor.make().param_list(
+ make.param_list(
None,
- [editor.make().param(
- editor.make().path_pat(editor.make().path_from_text(&main_field_name)),
+ [make.param(
+ make.path_pat(make.path_from_text(&main_field_name)),
main_field_ty,
)],
),
body,
- Some(editor.make().ret_type(editor.make().ty("Self"))),
+ Some(make.ret_type(make.ty("Self"))),
false,
false,
false,
false,
)
- .indent_with_mapping(1.into(), editor.make());
+ .indent_with_mapping(1.into(), make);
let cfg_attrs =
strukt.attrs().filter(|attr| matches!(attr.meta(), Some(ast::Meta::CfgMeta(_))));
- let impl_ = editor.make().impl_trait(
+ let impl_ = make.impl_trait(
cfg_attrs,
false,
None,
@@ -136,24 +133,24 @@ pub(crate) fn generate_single_field_struct_from(
type_gen_params,
type_gen_args,
false,
- editor.make().ty("From"),
+ make.ty("From"),
ty.clone(),
None,
ty_where_clause.map(|wc| wc.reset_indent()),
None,
);
- let (mut impl_editor, impl_root) = SyntaxEditor::with_ast_node(&impl_);
- let assoc_list = impl_root.get_or_create_assoc_item_list_with_editor(&mut impl_editor);
- assoc_list.add_items(&mut impl_editor, vec![fn_.into()]);
+ let (impl_editor, impl_root) = SyntaxEditor::with_ast_node(&impl_);
+ let assoc_list = impl_root.get_or_create_assoc_item_list_with_editor(&impl_editor);
+ assoc_list.add_items(&impl_editor, vec![fn_.into()]);
let impl_ = ast::Impl::cast(impl_editor.finish().new_root().clone())
.unwrap()
- .indent_with_mapping(indent, editor.make());
+ .indent_with_mapping(indent, make);
editor.insert_all(
Position::after(strukt.syntax()),
vec![
- editor.make().whitespace(&format!("\n\n{indent}")).into(),
+ make.whitespace(&format!("\n\n{indent}")).into(),
impl_.syntax().clone().into(),
],
);