Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-assists/src/handlers/extract_struct_from_enum_variant.rs')
-rw-r--r--crates/ide-assists/src/handlers/extract_struct_from_enum_variant.rs15
1 files changed, 10 insertions, 5 deletions
diff --git a/crates/ide-assists/src/handlers/extract_struct_from_enum_variant.rs b/crates/ide-assists/src/handlers/extract_struct_from_enum_variant.rs
index 21013e2e61..50ce8d9b4d 100644
--- a/crates/ide-assists/src/handlers/extract_struct_from_enum_variant.rs
+++ b/crates/ide-assists/src/handlers/extract_struct_from_enum_variant.rs
@@ -5,7 +5,7 @@ use hir::{EnumVariant, HasCrate, Module, ModuleDef, Name};
use ide_db::{
FxHashSet, RootDatabase,
defs::Definition,
- helpers::mod_path_to_ast,
+ helpers::mod_path_to_ast_with_factory,
imports::insert_use::{ImportScope, InsertUseConfig, insert_use_with_editor},
path_transform::PathTransform,
search::FileReference,
@@ -40,7 +40,7 @@ use crate::{AssistContext, AssistId, Assists};
// ```
pub(crate) fn extract_struct_from_enum_variant(
acc: &mut Assists,
- ctx: &AssistContext<'_>,
+ ctx: &AssistContext<'_, '_>,
) -> Option<()> {
let variant = ctx.find_node_at_offset::<ast::Variant>()?;
let field_list = extract_field_list_if_applicable(&variant)?;
@@ -338,7 +338,7 @@ fn update_variant(
let name = variant.name()?;
let generic_args = generics
.filter(|generics| generics.generic_params().count() > 0)
- .map(|generics| generics.to_generic_args());
+ .map(|generics| generics.to_generic_args(make));
// FIXME: replace with a `ast::make` constructor
let ty = match generic_args {
Some(generic_args) => make.ty(&format!("{name}{generic_args}")),
@@ -401,7 +401,12 @@ fn apply_references(
) {
let make = editor.make();
if let Some((scope, path)) = import {
- insert_use_with_editor(&scope, mod_path_to_ast(&path, edition), &insert_use_cfg, editor);
+ insert_use_with_editor(
+ &scope,
+ mod_path_to_ast_with_factory(make, &path, edition),
+ &insert_use_cfg,
+ editor,
+ );
}
// deep clone to prevent cycle
let path = make.path_from_segments(iter::once(segment.clone()), false);
@@ -411,7 +416,7 @@ fn apply_references(
}
fn process_references(
- ctx: &AssistContext<'_>,
+ ctx: &AssistContext<'_, '_>,
visited_modules: &mut FxHashSet<Module>,
enum_module_def: &ModuleDef,
variant_hir_name: &Name,