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.rs19
1 files changed, 13 insertions, 6 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 10c009a2ea..4348dfa212 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
@@ -1,8 +1,9 @@
use hir::next_solver::{DbInterner, TypingMode};
use hir::{HasCrate, ModuleDef, Semantics};
+use ide_db::use_trivial_constructor::use_trivial_constructor_with_factory;
use ide_db::{
- RootDatabase, famous_defs::FamousDefs, helpers::mod_path_to_ast,
- imports::import_assets::item_for_path_search, use_trivial_constructor::use_trivial_constructor,
+ RootDatabase, famous_defs::FamousDefs, helpers::mod_path_to_ast_with_factory,
+ imports::import_assets::item_for_path_search,
};
use syntax::syntax_editor::{Position, SyntaxEditor};
use syntax::{
@@ -46,7 +47,7 @@ use crate::{
// ```
pub(crate) fn generate_single_field_struct_from(
acc: &mut Assists,
- ctx: &AssistContext<'_>,
+ ctx: &AssistContext<'_, '_>,
) -> Option<()> {
let strukt_name = ctx.find_node_at_offset::<ast::Name>()?;
let adt = ast::Adt::cast(strukt_name.syntax().parent()?)?;
@@ -86,7 +87,7 @@ pub(crate) fn generate_single_field_struct_from(
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 type_gen_args = type_gen_params.as_ref().map(|params| params.to_generic_args(make));
let trait_gen_args = Some(make.generic_arg_list(
[ast::GenericArg::TypeArg(make.type_arg(main_field_ty.clone()))],
false,
@@ -178,7 +179,7 @@ fn make_adt_constructor(
}
fn make_constructors(
- ctx: &AssistContext<'_>,
+ ctx: &AssistContext<'_, '_>,
module: hir::Module,
types: &[ast::Type],
) -> Vec<Option<ast::Expr>> {
@@ -197,7 +198,13 @@ fn make_constructors(
let ty_path = module.find_path(db, item_for_path_search(db, item_in_ns)?, cfg)?;
- use_trivial_constructor(db, mod_path_to_ast(&ty_path, edition), &ty, edition)
+ use_trivial_constructor_with_factory(
+ &make,
+ db,
+ mod_path_to_ast_with_factory(&make, &ty_path, edition),
+ &ty,
+ edition,
+ )
})
.collect()
}