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+ } ;
26
37use crate :: { AssistContext , AssistId , AssistKind , Assists } ;
48
@@ -40,6 +44,7 @@ pub(crate) fn remove_parentheses(acc: &mut Assists, ctx: &AssistContext<'_>) ->
4044 "Remove redundant parentheses" ,
4145 target,
4246 |builder| {
47+ let mut editor = builder. make_editor ( parens. syntax ( ) ) ;
4348 let prev_token = parens. syntax ( ) . first_token ( ) . and_then ( |it| it. prev_token ( ) ) ;
4449 let need_to_add_ws = match prev_token {
4550 Some ( it) => {
@@ -48,9 +53,13 @@ pub(crate) fn remove_parentheses(acc: &mut Assists, ctx: &AssistContext<'_>) ->
4853 }
4954 None => false ,
5055 } ;
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) ;
5463 } ,
5564 )
5665}
0 commit comments