@@ -80,9 +80,8 @@ pub(crate) fn apply_demorgan(acc: &mut Assists, ctx: &AssistContext<'_>) -> Opti
8080 _ => return None ,
8181 } ;
8282
83- let make = SyntaxFactory :: with_mappings ( ) ;
84-
85- let ( mut editor, demorganed) = SyntaxEditor :: with_ast_node ( & bin_expr) ;
83+ let ( editor, demorganed) = SyntaxEditor :: with_ast_node ( & bin_expr) ;
84+ let make = editor. make ( ) ;
8685 editor. replace ( demorganed. op_token ( ) ?, make. token ( inv_token) ) ;
8786
8887 let mut exprs = VecDeque :: from ( [
@@ -98,7 +97,7 @@ pub(crate) fn apply_demorgan(acc: &mut Assists, ctx: &AssistContext<'_>) -> Opti
9897 exprs. push_back ( ( bin_expr. lhs ( ) ?, cbin_expr. lhs ( ) ?, prec) ) ;
9998 exprs. push_back ( ( bin_expr. rhs ( ) ?, cbin_expr. rhs ( ) ?, prec) ) ;
10099 } else {
101- let mut inv = invert_boolean_expression ( & make, expr) ;
100+ let mut inv = invert_boolean_expression ( make, expr) ;
102101 if precedence ( & inv) . needs_parentheses_in ( prec) {
103102 inv = make. expr_paren ( inv) . into ( ) ;
104103 }
@@ -108,15 +107,14 @@ pub(crate) fn apply_demorgan(acc: &mut Assists, ctx: &AssistContext<'_>) -> Opti
108107 return None ;
109108 }
110109 } else {
111- let mut inv = invert_boolean_expression ( & make, demorganed. clone ( ) ) ;
110+ let mut inv = invert_boolean_expression ( make, demorganed. clone ( ) ) ;
112111 if precedence ( & inv) . needs_parentheses_in ( prec) {
113112 inv = make. expr_paren ( inv) . into ( ) ;
114113 }
115114 editor. replace ( demorganed. syntax ( ) , inv. syntax ( ) ) ;
116115 }
117116 }
118117
119- editor. add_mappings ( make. finish_with_mappings ( ) ) ;
120118 let edit = editor. finish ( ) ;
121119 let demorganed = ast:: Expr :: cast ( edit. new_root ( ) . clone ( ) ) ?;
122120
@@ -126,7 +124,9 @@ pub(crate) fn apply_demorgan(acc: &mut Assists, ctx: &AssistContext<'_>) -> Opti
126124 "Apply De Morgan's law" ,
127125 op_range,
128126 |builder| {
129- let make = SyntaxFactory :: with_mappings ( ) ;
127+ let editor = builder. make_editor ( bin_expr. syntax ( ) ) ;
128+ let make = editor. make ( ) ;
129+
130130 let ( target_node, result_expr) = if let Some ( neg_expr) = bin_expr
131131 . syntax ( )
132132 . parent ( )
@@ -141,9 +141,9 @@ pub(crate) fn apply_demorgan(acc: &mut Assists, ctx: &AssistContext<'_>) -> Opti
141141 bin_expr. syntax ( ) . parent ( ) . and_then ( ast:: ParenExpr :: cast)
142142 {
143143 cov_mark:: hit!( demorgan_double_parens) ;
144- ( paren_expr. syntax ( ) . clone ( ) , add_bang_paren ( & make, demorganed) )
144+ ( paren_expr. syntax ( ) . clone ( ) , add_bang_paren ( make, demorganed) )
145145 } else {
146- ( bin_expr. syntax ( ) . clone ( ) , add_bang_paren ( & make, demorganed) )
146+ ( bin_expr. syntax ( ) . clone ( ) , add_bang_paren ( make, demorganed) )
147147 } ;
148148
149149 let final_expr = if target_node
@@ -156,9 +156,7 @@ pub(crate) fn apply_demorgan(acc: &mut Assists, ctx: &AssistContext<'_>) -> Opti
156156 result_expr
157157 } ;
158158
159- let mut editor = builder. make_editor ( & target_node) ;
160159 editor. replace ( & target_node, final_expr. syntax ( ) ) ;
161- editor. add_mappings ( make. finish_with_mappings ( ) ) ;
162160 builder. add_file_edits ( ctx. vfs_file_id ( ) , editor) ;
163161 } ,
164162 )
@@ -206,8 +204,8 @@ pub(crate) fn apply_demorgan_iterator(acc: &mut Assists, ctx: &AssistContext<'_>
206204 label,
207205 op_range,
208206 |builder| {
209- let make = SyntaxFactory :: with_mappings ( ) ;
210- let mut editor = builder . make_editor ( method_call . syntax ( ) ) ;
207+ let editor = builder . make_editor ( method_call . syntax ( ) ) ;
208+ let make = editor . make ( ) ;
211209 // replace the method name
212210 let new_name = match name. text ( ) . as_str ( ) {
213211 "all" => make. name_ref ( "any" ) ,
@@ -217,7 +215,7 @@ pub(crate) fn apply_demorgan_iterator(acc: &mut Assists, ctx: &AssistContext<'_>
217215 editor. replace ( name. syntax ( ) , new_name. syntax ( ) ) ;
218216
219217 // negate all tail expressions in the closure body
220- let tail_cb = & mut |e : & _ | tail_cb_impl ( & mut editor, & make , e) ;
218+ let tail_cb = & mut |e : & _ | tail_cb_impl ( & editor, e) ;
221219 walk_expr ( & closure_body, & mut |expr| {
222220 if let ast:: Expr :: ReturnExpr ( ret_expr) = expr
223221 && let Some ( ret_expr_arg) = & ret_expr. expr ( )
@@ -240,8 +238,6 @@ pub(crate) fn apply_demorgan_iterator(acc: &mut Assists, ctx: &AssistContext<'_>
240238 } else {
241239 editor. insert ( Position :: before ( method_call. syntax ( ) ) , make. token ( SyntaxKind :: BANG ) ) ;
242240 }
243-
244- editor. add_mappings ( make. finish_with_mappings ( ) ) ;
245241 builder. add_file_edits ( ctx. vfs_file_id ( ) , editor) ;
246242 } ,
247243 )
@@ -269,18 +265,18 @@ fn validate_method_call_expr(
269265 it_type. impls_trait ( sema. db , iter_trait, & [ ] ) . then_some ( ( name_ref, arg_expr) )
270266}
271267
272- fn tail_cb_impl ( editor : & mut SyntaxEditor , make : & SyntaxFactory , e : & ast:: Expr ) {
268+ fn tail_cb_impl ( editor : & SyntaxEditor , e : & ast:: Expr ) {
273269 match e {
274270 ast:: Expr :: BreakExpr ( break_expr) => {
275271 if let Some ( break_expr_arg) = break_expr. expr ( ) {
276- for_each_tail_expr ( & break_expr_arg, & mut |e| tail_cb_impl ( editor, make , e) )
272+ for_each_tail_expr ( & break_expr_arg, & mut |e| tail_cb_impl ( editor, e) )
277273 }
278274 }
279275 ast:: Expr :: ReturnExpr ( _) => {
280276 // all return expressions have already been handled by the walk loop
281277 }
282278 e => {
283- let inverted_body = invert_boolean_expression ( make, e. clone ( ) ) ;
279+ let inverted_body = invert_boolean_expression ( editor . make ( ) , e. clone ( ) ) ;
284280 editor. replace ( e. syntax ( ) , inverted_body. syntax ( ) ) ;
285281 }
286282 }
0 commit comments