1
- use syntax:: { ast, AstNode , SyntaxKind , T } ;
1
+ use syntax:: {
2
+ ast:: { self , syntax_factory:: SyntaxFactory } ,
3
+ syntax_editor:: Position ,
4
+ AstNode , SyntaxKind , T ,
5
+ } ;
2
6
3
7
use crate :: { AssistContext , AssistId , AssistKind , Assists } ;
4
8
@@ -40,6 +44,7 @@ pub(crate) fn remove_parentheses(acc: &mut Assists, ctx: &AssistContext<'_>) ->
40
44
"Remove redundant parentheses" ,
41
45
target,
42
46
|builder| {
47
+ let mut editor = builder. make_editor ( parens. syntax ( ) ) ;
43
48
let prev_token = parens. syntax ( ) . first_token ( ) . and_then ( |it| it. prev_token ( ) ) ;
44
49
let need_to_add_ws = match prev_token {
45
50
Some ( it) => {
@@ -48,9 +53,13 @@ pub(crate) fn remove_parentheses(acc: &mut Assists, ctx: &AssistContext<'_>) ->
48
53
}
49
54
None => false ,
50
55
} ;
51
- let expr = if need_to_add_ws { format ! ( " {expr}" ) } else { expr. to_string ( ) } ;
52
-
53
- builder. replace ( parens. syntax ( ) . text_range ( ) , expr)
56
+ if need_to_add_ws {
57
+ let make = SyntaxFactory :: new ( ) ;
58
+ editor. insert ( Position :: before ( parens. syntax ( ) ) , make. whitespace ( " " ) ) ;
59
+ editor. add_mappings ( make. finish_with_mappings ( ) ) ;
60
+ }
61
+ editor. replace ( parens. syntax ( ) , expr. syntax ( ) ) ;
62
+ builder. add_file_edits ( ctx. file_id ( ) , editor) ;
54
63
} ,
55
64
)
56
65
}
0 commit comments