Unnamed repository; edit this file 'description' to name the repository.
-rw-r--r--crates/ide-assists/src/handlers/replace_named_generic_with_impl.rs15
-rw-r--r--crates/syntax/src/ast/syntax_factory/constructors.rs4
2 files changed, 11 insertions, 8 deletions
diff --git a/crates/ide-assists/src/handlers/replace_named_generic_with_impl.rs b/crates/ide-assists/src/handlers/replace_named_generic_with_impl.rs
index df7057835c..018642a047 100644
--- a/crates/ide-assists/src/handlers/replace_named_generic_with_impl.rs
+++ b/crates/ide-assists/src/handlers/replace_named_generic_with_impl.rs
@@ -5,9 +5,10 @@ use ide_db::{
defs::Definition,
search::{SearchScope, UsageSearchResult},
};
+use syntax::ast::syntax_factory::SyntaxFactory;
use syntax::{
AstNode,
- ast::{self, HasGenericParams, HasName, HasTypeBounds, Name, NameLike, PathType, make},
+ ast::{self, HasGenericParams, HasName, HasTypeBounds, Name, NameLike, PathType},
match_ast,
};
@@ -72,6 +73,7 @@ pub(crate) fn replace_named_generic_with_impl(
target,
|edit| {
let mut editor = edit.make_editor(type_param.syntax());
+ let make = SyntaxFactory::without_mappings();
// remove trait from generic param list
if let Some(generic_params) = fn_.generic_param_list() {
@@ -83,17 +85,14 @@ pub(crate) fn replace_named_generic_with_impl(
if params.is_empty() {
editor.delete(generic_params.syntax());
} else {
- let new_generic_param_list = make::generic_param_list(params);
- editor.replace(
- generic_params.syntax(),
- new_generic_param_list.syntax().clone_for_update(),
- );
+ let new_generic_param_list = make.generic_param_list(params);
+ editor.replace(generic_params.syntax(), new_generic_param_list.syntax());
}
}
- let new_bounds = make::impl_trait_type(type_bound_list);
+ let new_bounds = make.impl_trait_type(type_bound_list);
for path_type in path_types_to_replace.iter().rev() {
- editor.replace(path_type.syntax(), new_bounds.clone_for_update().syntax());
+ editor.replace(path_type.syntax(), new_bounds.syntax());
}
edit.add_file_edits(ctx.vfs_file_id(), editor);
},
diff --git a/crates/syntax/src/ast/syntax_factory/constructors.rs b/crates/syntax/src/ast/syntax_factory/constructors.rs
index 40412c7733..50fe565380 100644
--- a/crates/syntax/src/ast/syntax_factory/constructors.rs
+++ b/crates/syntax/src/ast/syntax_factory/constructors.rs
@@ -141,6 +141,10 @@ impl SyntaxFactory {
make::where_clause(predicates).clone_for_update()
}
+ pub fn impl_trait_type(&self, bounds: ast::TypeBoundList) -> ast::ImplTraitType {
+ make::impl_trait_type(bounds).clone_for_update()
+ }
+
pub fn expr_field(&self, receiver: ast::Expr, field: &str) -> ast::FieldExpr {
let ast::Expr::FieldExpr(ast) =
make::expr_field(receiver.clone(), field).clone_for_update()