File tree Expand file tree Collapse file tree 1 file changed +22
-14
lines changed
crates/ide_assists/src/handlers Expand file tree Collapse file tree 1 file changed +22
-14
lines changed Original file line number Diff line number Diff line change @@ -1227,9 +1227,19 @@ fn make_body(
1227
1227
FunctionBody :: Expr ( expr) => {
1228
1228
let expr = rewrite_body_segment ( ctx, & fun. params , & handler, expr. syntax ( ) ) ;
1229
1229
let expr = ast:: Expr :: cast ( expr) . unwrap ( ) ;
1230
- let expr = expr. dedent ( old_indent) . indent ( IndentLevel ( 1 ) ) ;
1230
+ match expr {
1231
+ ast:: Expr :: BlockExpr ( block) => {
1232
+ // If the extracted expression is itself a block, there is no need to wrap it inside another block.
1233
+ let block = block. dedent ( old_indent) ;
1234
+ // Recreate the block for formatting consistency with other extracted functions.
1235
+ make:: block_expr ( block. statements ( ) , block. tail_expr ( ) )
1236
+ }
1237
+ _ => {
1238
+ let expr = expr. dedent ( old_indent) . indent ( IndentLevel ( 1 ) ) ;
1231
1239
1232
- make:: block_expr ( Vec :: new ( ) , Some ( expr) )
1240
+ make:: block_expr ( Vec :: new ( ) , Some ( expr) )
1241
+ }
1242
+ }
1233
1243
}
1234
1244
FunctionBody :: Span { parent, text_range } => {
1235
1245
let mut elements: Vec < _ > = parent
@@ -1544,7 +1554,7 @@ fn foo() {
1544
1554
}
1545
1555
1546
1556
fn $0fun_name() -> i32 {
1547
- { 1 + 1 }
1557
+ 1 + 1
1548
1558
}"# ,
1549
1559
) ;
1550
1560
}
@@ -2526,17 +2536,15 @@ fn foo() {
2526
2536
}
2527
2537
2528
2538
fn $0fun_name(n: &mut i32) {
2529
- {
2530
- *n += *n;
2531
- bar(*n);
2532
- bar(*n+1);
2533
- bar(*n**n);
2534
- bar(&*n);
2535
- n.inc();
2536
- let v = n;
2537
- *v = v.succ();
2538
- n.succ();
2539
- }
2539
+ *n += *n;
2540
+ bar(*n);
2541
+ bar(*n+1);
2542
+ bar(*n**n);
2543
+ bar(&*n);
2544
+ n.inc();
2545
+ let v = n;
2546
+ *v = v.succ();
2547
+ n.succ();
2540
2548
}" ,
2541
2549
) ;
2542
2550
}
You can’t perform that action at this time.
0 commit comments