Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-assists/src/handlers/convert_match_to_let_else.rs')
-rw-r--r--crates/ide-assists/src/handlers/convert_match_to_let_else.rs17
1 files changed, 6 insertions, 11 deletions
diff --git a/crates/ide-assists/src/handlers/convert_match_to_let_else.rs b/crates/ide-assists/src/handlers/convert_match_to_let_else.rs
index 1a6d176c90..bc49acc1ef 100644
--- a/crates/ide-assists/src/handlers/convert_match_to_let_else.rs
+++ b/crates/ide-assists/src/handlers/convert_match_to_let_else.rs
@@ -1,7 +1,7 @@
use ide_db::defs::{Definition, NameRefClass};
use syntax::{
AstNode, SyntaxNode,
- ast::{self, HasName, Name, edit::AstNodeEdit, syntax_factory::SyntaxFactory},
+ ast::{self, HasName, Name, edit::AstNodeEdit},
syntax_editor::SyntaxEditor,
};
@@ -121,9 +121,8 @@ fn find_extracted_variable(ctx: &AssistContext<'_>, arm: &ast::MatchArm) -> Opti
// Rename `extracted` with `binding` in `pat`.
fn rename_variable(pat: &ast::Pat, extracted: &[Name], binding: ast::Pat) -> SyntaxNode {
- let syntax = pat.syntax().clone_subtree();
- let mut editor = SyntaxEditor::new(syntax.clone());
- let make = SyntaxFactory::with_mappings();
+ let (editor, syntax) = SyntaxEditor::new(pat.syntax().clone());
+ let make = editor.make();
let extracted = extracted
.iter()
.map(|e| e.syntax().text_range() - pat.syntax().text_range().start())
@@ -138,18 +137,14 @@ fn rename_variable(pat: &ast::Pat, extracted: &[Name], binding: ast::Pat) -> Syn
if let Some(name_ref) = record_pat_field.field_name() {
editor.replace(
record_pat_field.syntax(),
- make.record_pat_field(
- make.name_ref(&name_ref.text()),
- binding.clone_for_update(),
- )
- .syntax(),
+ make.record_pat_field(make.name_ref(&name_ref.text()), binding.clone())
+ .syntax(),
);
}
} else {
- editor.replace(extracted_syntax, binding.syntax().clone_for_update());
+ editor.replace(extracted_syntax, binding.syntax());
}
}
- editor.add_mappings(make.finish_with_mappings());
let new_node = editor.finish().new_root().clone();
if let Some(pat) = ast::Pat::cast(new_node.clone()) {
pat.dedent(1.into()).syntax().clone()