Unnamed repository; edit this file 'description' to name the repository.
Merge pull request #20845 from A4-Tacks/migrate-add-braces
Migrate `add_braces` assist, because edit_in_place uses ted
Shoyu Vanilla (Flint) 6 months ago
parent 765954a · parent d3c027d · commit c1b4b64
-rw-r--r--crates/ide-assists/src/handlers/add_braces.rs43
1 files changed, 39 insertions, 4 deletions
diff --git a/crates/ide-assists/src/handlers/add_braces.rs b/crates/ide-assists/src/handlers/add_braces.rs
index 5af622eaf2..d855fb7718 100644
--- a/crates/ide-assists/src/handlers/add_braces.rs
+++ b/crates/ide-assists/src/handlers/add_braces.rs
@@ -1,7 +1,7 @@
use either::Either;
use syntax::{
AstNode,
- ast::{self, edit_in_place::Indent, syntax_factory::SyntaxFactory},
+ ast::{self, edit::AstNodeEdit, syntax_factory::SyntaxFactory},
};
use crate::{AssistContext, AssistId, Assists};
@@ -43,10 +43,10 @@ pub(crate) fn add_braces(acc: &mut Assists, ctx: &AssistContext<'_>) -> Option<(
let make = SyntaxFactory::with_mappings();
let mut editor = builder.make_editor(expr.syntax());
- let block_expr = make.block_expr(None, Some(expr.clone()));
- block_expr.indent(expr.indent_level());
+ let new_expr = expr.reset_indent().indent(1.into());
+ let block_expr = make.block_expr(None, Some(new_expr));
- editor.replace(expr.syntax(), block_expr.syntax());
+ editor.replace(expr.syntax(), block_expr.indent(expr.indent_level()).syntax());
editor.add_mappings(make.finish_with_mappings());
builder.add_file_edits(ctx.vfs_file_id(), editor);
@@ -172,6 +172,41 @@ fn foo() {
}
#[test]
+ fn multiple_indent() {
+ check_assist(
+ add_braces,
+ r#"
+fn foo() {
+ {
+ match n {
+ Some(n) $0=> foo(
+ 29,
+ 30,
+ ),
+ _ => ()
+ };
+ }
+}
+"#,
+ r#"
+fn foo() {
+ {
+ match n {
+ Some(n) => {
+ foo(
+ 29,
+ 30,
+ )
+ },
+ _ => ()
+ };
+ }
+}
+"#,
+ );
+ }
+
+ #[test]
fn no_assist_for_match_with_braces() {
check_assist_not_applicable(
add_braces,