Skip to content

Commit 6a52b3a

Browse files
committed
Migrate replace_is_method_with_if_let_method Assist to use SyntaxFactory
Signed-off-by: Hayashi Mikihiro <34ttrweoewiwe28@gmail.com>
1 parent c5f4b80 commit 6a52b3a

File tree

1 file changed

+17
-17
lines changed

1 file changed

+17
-17
lines changed

src/tools/rust-analyzer/crates/ide-assists/src/handlers/replace_is_method_with_if_let_method.rs

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
use ide_db::syntax_helpers::suggest_name;
2-
use syntax::{
3-
ast::{self, AstNode, make},
4-
ted,
5-
};
2+
use syntax::ast::{self, AstNode, syntax_factory::SyntaxFactory};
63

74
use crate::{AssistContext, AssistId, Assists};
85

@@ -60,21 +57,24 @@ pub(crate) fn replace_is_method_with_if_let_method(
6057
message,
6158
call_expr.syntax().text_range(),
6259
|edit| {
63-
let call_expr = edit.make_mut(call_expr);
64-
65-
let var_pat = make::ident_pat(false, false, make::name(&var_name));
66-
let pat = make::tuple_struct_pat(make::ext::ident_path(text), [var_pat.into()]);
67-
let let_expr = make::expr_let(pat.into(), receiver).clone_for_update();
68-
69-
if let Some(cap) = ctx.config.snippet_cap {
70-
if let Some(ast::Pat::TupleStructPat(pat)) = let_expr.pat() {
71-
if let Some(first_var) = pat.fields().next() {
72-
edit.add_placeholder_snippet(cap, first_var);
73-
}
74-
}
60+
let make = SyntaxFactory::with_mappings();
61+
let mut editor = edit.make_editor(call_expr.syntax());
62+
63+
let var_pat = make.ident_pat(false, false, make.name(&var_name));
64+
let pat = make.tuple_struct_pat(make.ident_path(text), [var_pat.into()]);
65+
let let_expr = make.expr_let(pat.into(), receiver);
66+
67+
if let Some(cap) = ctx.config.snippet_cap
68+
&& let Some(ast::Pat::TupleStructPat(pat)) = let_expr.pat()
69+
&& let Some(first_var) = pat.fields().next()
70+
{
71+
let placeholder = edit.make_placeholder_snippet(cap);
72+
editor.add_annotation(first_var.syntax(), placeholder);
7573
}
7674

77-
ted::replace(call_expr.syntax(), let_expr.syntax());
75+
editor.replace(call_expr.syntax(), let_expr.syntax());
76+
editor.add_mappings(make.finish_with_mappings());
77+
edit.add_file_edits(ctx.vfs_file_id(), editor);
7878
},
7979
)
8080
}

0 commit comments

Comments
 (0)