Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-assists/src/handlers/desugar_try_expr.rs')
-rw-r--r--crates/ide-assists/src/handlers/desugar_try_expr.rs46
1 files changed, 26 insertions, 20 deletions
diff --git a/crates/ide-assists/src/handlers/desugar_try_expr.rs b/crates/ide-assists/src/handlers/desugar_try_expr.rs
index 865dc86221..399b2aa69b 100644
--- a/crates/ide-assists/src/handlers/desugar_try_expr.rs
+++ b/crates/ide-assists/src/handlers/desugar_try_expr.rs
@@ -65,19 +65,19 @@ pub(crate) fn desugar_try_expr(acc: &mut Assists, ctx: &AssistContext<'_>) -> Op
"Replace try expression with match",
target,
|builder| {
- let make = SyntaxFactory::with_mappings();
- let mut editor = builder.make_editor(try_expr.syntax());
-
+ let editor = builder.make_editor(try_expr.syntax());
+ let make = editor.make();
let sad_pat = match try_enum {
TryEnum::Option => make.path_pat(make.ident_path("None")),
- TryEnum::Result => make
+ TryEnum::Result => editor
+ .make()
.tuple_struct_pat(
make.ident_path("Err"),
iter::once(make.path_pat(make.ident_path("err"))),
)
.into(),
};
- let sad_expr = make.expr_return(Some(sad_expr(try_enum, &make, || {
+ let sad_expr = make.expr_return(Some(sad_expr(try_enum, make, || {
make.expr_path(make.ident_path("err"))
})));
@@ -90,12 +90,12 @@ pub(crate) fn desugar_try_expr(acc: &mut Assists, ctx: &AssistContext<'_>) -> Op
let match_arm_list = make.match_arm_list([happy_arm, sad_arm]);
- let expr_match = make
+ let expr_match = editor
+ .make()
.expr_match(expr.clone(), match_arm_list)
.indent(IndentLevel::from_node(try_expr.syntax()));
editor.replace(try_expr.syntax(), expr_match.syntax());
- editor.add_mappings(make.finish_with_mappings());
builder.add_file_edits(ctx.vfs_file_id(), editor);
},
);
@@ -109,8 +109,8 @@ pub(crate) fn desugar_try_expr(acc: &mut Assists, ctx: &AssistContext<'_>) -> Op
"Replace try expression with let else",
target,
|builder| {
- let make = SyntaxFactory::with_mappings();
- let mut editor = builder.make_editor(let_stmt.syntax());
+ let editor = builder.make_editor(let_stmt.syntax());
+ let make = editor.make();
let indent_level = IndentLevel::from_node(let_stmt.syntax());
let fill_expr = || crate::utils::expr_fill_default(ctx.config);
@@ -121,19 +121,25 @@ pub(crate) fn desugar_try_expr(acc: &mut Assists, ctx: &AssistContext<'_>) -> Op
TryEnum::Result => make.ty_result(ty, make.ty_infer().into()).into(),
}),
expr,
- make.block_expr(
- iter::once(
- make.expr_stmt(
- make.expr_return(Some(sad_expr(try_enum, &make, fill_expr))).into(),
- )
- .into(),
- ),
- None,
- )
- .indent(indent_level),
+ editor
+ .make()
+ .block_expr(
+ iter::once(
+ editor
+ .make()
+ .expr_stmt(
+ editor
+ .make()
+ .expr_return(Some(sad_expr(try_enum, make, fill_expr)))
+ .into(),
+ )
+ .into(),
+ ),
+ None,
+ )
+ .indent(indent_level),
);
editor.replace(let_stmt.syntax(), new_let_stmt.syntax());
- editor.add_mappings(make.finish_with_mappings());
builder.add_file_edits(ctx.vfs_file_id(), editor);
},
);