Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-assists/src/handlers/replace_qualified_name_with_use.rs')
-rw-r--r--crates/ide-assists/src/handlers/replace_qualified_name_with_use.rs27
1 files changed, 14 insertions, 13 deletions
diff --git a/crates/ide-assists/src/handlers/replace_qualified_name_with_use.rs b/crates/ide-assists/src/handlers/replace_qualified_name_with_use.rs
index eebe93f005..0bd1ec12d0 100644
--- a/crates/ide-assists/src/handlers/replace_qualified_name_with_use.rs
+++ b/crates/ide-assists/src/handlers/replace_qualified_name_with_use.rs
@@ -1,11 +1,11 @@
use hir::{AsAssocItem, ModuleDef, PathResolution};
use ide_db::{
- helpers::mod_path_to_ast,
- imports::insert_use::{ImportScope, insert_use},
+ helpers::mod_path_to_ast_with_factory,
+ imports::insert_use::{ImportScope, insert_use_with_editor},
};
use syntax::{
AstNode, Edition, SyntaxNode,
- ast::{self, HasGenericArgs, make},
+ ast::{self, HasGenericArgs},
match_ast,
syntax_editor::SyntaxEditor,
};
@@ -29,7 +29,7 @@ use crate::{AssistContext, AssistId, Assists};
// ```
pub(crate) fn replace_qualified_name_with_use(
acc: &mut Assists,
- ctx: &AssistContext<'_>,
+ ctx: &AssistContext<'_, '_>,
) -> Option<()> {
let original_path: ast::Path = ctx.find_node_at_offset()?;
// We don't want to mess with use statements
@@ -75,7 +75,7 @@ pub(crate) fn replace_qualified_name_with_use(
let scope_node = scope.as_syntax_node();
let editor = builder.make_editor(scope_node);
shorten_paths(&editor, scope_node, &original_path);
- builder.add_file_edits(ctx.vfs_file_id(), editor);
+ let make = editor.make();
let path = drop_generic_args(&original_path);
let edition = ctx
.sema
@@ -83,18 +83,19 @@ pub(crate) fn replace_qualified_name_with_use(
.map(|semantics_scope| semantics_scope.krate().edition(ctx.db()))
.unwrap_or(Edition::CURRENT);
// stick the found import in front of the to be replaced path
- let path =
- match path_to_qualifier.and_then(|it| mod_path_to_ast(&it, edition).qualifier()) {
- Some(qualifier) => make::path_concat(qualifier, path),
- None => path,
- };
- let scope = builder.make_import_scope_mut(scope);
- insert_use(&scope, path, &ctx.config.insert_use);
+ let path = match path_to_qualifier
+ .and_then(|it| mod_path_to_ast_with_factory(make, &it, edition).qualifier())
+ {
+ Some(qualifier) => make.path_concat(qualifier, path),
+ None => path,
+ };
+ insert_use_with_editor(&scope, path, &ctx.config.insert_use, &editor);
+ builder.add_file_edits(ctx.vfs_file_id(), editor);
},
)
}
-fn target_path(ctx: &AssistContext<'_>, mut original_path: ast::Path) -> Option<ast::Path> {
+fn target_path(ctx: &AssistContext<'_, '_>, mut original_path: ast::Path) -> Option<ast::Path> {
let on_first = original_path.qualifier().is_none();
if on_first {