Unnamed repository; edit this file 'description' to name the repository.
Merge pull request #20134 from Hmikihiro/migrate-replace_is_method_with_if_let_method-to-SyntaxFactory
Migrate `replace_is_method_with_if_let_method` Assist to use `SyntaxFactory`
Laurențiu Nicola 10 months ago
parent eaf37e2 · parent fcc81a3 · commit ce2c0c9
-rw-r--r--crates/ide-assists/src/handlers/replace_is_method_with_if_let_method.rs21
1 files changed, 11 insertions, 10 deletions
diff --git a/crates/ide-assists/src/handlers/replace_is_method_with_if_let_method.rs b/crates/ide-assists/src/handlers/replace_is_method_with_if_let_method.rs
index e933bcc40d..62914ee7f3 100644
--- a/crates/ide-assists/src/handlers/replace_is_method_with_if_let_method.rs
+++ b/crates/ide-assists/src/handlers/replace_is_method_with_if_let_method.rs
@@ -1,8 +1,5 @@
use ide_db::syntax_helpers::suggest_name;
-use syntax::{
- ast::{self, AstNode, make},
- ted,
-};
+use syntax::ast::{self, AstNode, syntax_factory::SyntaxFactory};
use crate::{AssistContext, AssistId, Assists};
@@ -60,21 +57,25 @@ pub(crate) fn replace_is_method_with_if_let_method(
message,
call_expr.syntax().text_range(),
|edit| {
- let call_expr = edit.make_mut(call_expr);
+ let make = SyntaxFactory::with_mappings();
+ let mut editor = edit.make_editor(call_expr.syntax());
- let var_pat = make::ident_pat(false, false, make::name(&var_name));
- let pat = make::tuple_struct_pat(make::ext::ident_path(text), [var_pat.into()]);
- let let_expr = make::expr_let(pat.into(), receiver).clone_for_update();
+ let var_pat = make.ident_pat(false, false, make.name(&var_name));
+ let pat = make.tuple_struct_pat(make.ident_path(text), [var_pat.into()]);
+ let let_expr = make.expr_let(pat.into(), receiver);
if let Some(cap) = ctx.config.snippet_cap {
if let Some(ast::Pat::TupleStructPat(pat)) = let_expr.pat() {
if let Some(first_var) = pat.fields().next() {
- edit.add_placeholder_snippet(cap, first_var);
+ let placeholder = edit.make_placeholder_snippet(cap);
+ editor.add_annotation(first_var.syntax(), placeholder);
}
}
}
- ted::replace(call_expr.syntax(), let_expr.syntax());
+ editor.replace(call_expr.syntax(), let_expr.syntax());
+ editor.add_mappings(make.finish_with_mappings());
+ edit.add_file_edits(ctx.vfs_file_id(), editor);
},
)
}