Skip to content

Commit 434895f

Browse files
committed
Remove all occurance of explicit SyntaxFactory::with_mapping, and update all the occurances to use make via SyntaxEditor
1 parent 9010b71 commit 434895f

73 files changed

Lines changed: 996 additions & 1088 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

crates/hir-expand/src/builtin/derive_macro.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ use crate::{
2222
use syntax::{
2323
ast::{
2424
self, AstNode, FieldList, HasAttrs, HasGenericArgs, HasGenericParams, HasModuleItem,
25-
HasName, HasTypeBounds, make, syntax_factory::SyntaxFactory,
25+
HasName, HasTypeBounds, make,
2626
},
2727
syntax_editor::{GetOrCreateWhereClause, SyntaxEditor},
2828
ted,
@@ -1295,9 +1295,7 @@ fn coerce_pointee_expand(
12951295
}
12961296

12971297
let (mut editor, strukt) = SyntaxEditor::with_ast_node(strukt);
1298-
let make = SyntaxFactory::with_mappings();
1299-
strukt.get_or_create_where_clause(&mut editor, &make, new_predicates.into_iter());
1300-
editor.add_mappings(make.finish_with_mappings());
1298+
strukt.get_or_create_where_clause(&mut editor, new_predicates.into_iter());
13011299
let edit = editor.finish();
13021300
let strukt = ast::Struct::cast(edit.new_root().clone()).unwrap();
13031301
let adt = ast::Adt::Struct(strukt.clone());

crates/ide-assists/src/handlers/add_braces.rs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use either::Either;
22
use syntax::{
33
AstNode, T,
4-
ast::{self, edit::AstNodeEdit, syntax_factory::SyntaxFactory},
4+
ast::{self, edit::AstNodeEdit},
55
match_ast,
66
};
77

@@ -56,15 +56,12 @@ pub(crate) fn add_braces(acc: &mut Assists, ctx: &AssistContext<'_>) -> Option<(
5656
},
5757
expr.syntax().text_range(),
5858
|builder| {
59-
let make = SyntaxFactory::with_mappings();
6059
let mut editor = builder.make_editor(expr.syntax());
6160

6261
let new_expr = expr.reset_indent().indent(1.into());
63-
let block_expr = make.block_expr(None, Some(new_expr));
62+
let block_expr = editor.make().block_expr(None, Some(new_expr));
6463

6564
editor.replace(expr.syntax(), block_expr.indent(expr.indent_level()).syntax());
66-
67-
editor.add_mappings(make.finish_with_mappings());
6865
builder.add_file_edits(ctx.vfs_file_id(), editor);
6966
},
7067
)

crates/ide-assists/src/handlers/add_explicit_dot_deref.rs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -53,18 +53,17 @@ pub(crate) fn add_explicit_method_call_deref(
5353
"Insert explicit method call derefs",
5454
dot_token.text_range(),
5555
|builder| {
56-
let mut edit = builder.make_editor(method_call_expr.syntax());
57-
let make = SyntaxFactory::without_mappings();
56+
let mut editor = builder.make_editor(method_call_expr.syntax());
5857
let mut expr = receiver.clone();
5958

6059
for adjust_kind in adjustments {
61-
expr = adjust_kind.wrap_expr(expr, &make);
60+
expr = adjust_kind.wrap_expr(expr, editor.make());
6261
}
6362

64-
expr = make.expr_paren(expr).into();
65-
edit.replace(receiver.syntax(), expr.syntax());
63+
expr = editor.make().expr_paren(expr).into();
64+
editor.replace(receiver.syntax(), expr.syntax());
6665

67-
builder.add_file_edits(ctx.vfs_file_id(), edit);
66+
builder.add_file_edits(ctx.vfs_file_id(), editor);
6867
},
6968
)
7069
}

crates/ide-assists/src/handlers/add_label_to_loop.rs

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use ide_db::{
33
};
44
use syntax::{
55
SyntaxToken, T,
6-
ast::{self, AstNode, HasLoopBody, syntax_factory::SyntaxFactory},
6+
ast::{self, AstNode, HasLoopBody},
77
syntax_editor::{Position, SyntaxEditor},
88
};
99

@@ -42,14 +42,13 @@ pub(crate) fn add_label_to_loop(acc: &mut Assists, ctx: &AssistContext<'_>) -> O
4242
"Add Label",
4343
loop_expr.syntax().text_range(),
4444
|builder| {
45-
let make = SyntaxFactory::with_mappings();
4645
let mut editor = builder.make_editor(loop_expr.syntax());
4746

48-
let label = make.lifetime("'l");
47+
let label = editor.make().lifetime("'l");
4948
let elements = vec![
5049
label.syntax().clone().into(),
51-
make.token(T![:]).into(),
52-
make.whitespace(" ").into(),
50+
editor.make().token(T![:]).into(),
51+
editor.make().whitespace(" ").into(),
5352
];
5453
editor.insert_all(Position::before(&loop_kw), elements);
5554

@@ -65,11 +64,10 @@ pub(crate) fn add_label_to_loop(acc: &mut Assists, ctx: &AssistContext<'_>) -> O
6564
_ => return,
6665
};
6766
if let Some(token) = token {
68-
insert_label_after_token(&mut editor, &make, &token, ctx, builder);
67+
insert_label_after_token(&mut editor, &token, ctx, builder);
6968
}
7069
});
7170

72-
editor.add_mappings(make.finish_with_mappings());
7371
builder.add_file_edits(ctx.vfs_file_id(), editor);
7472
builder.rename();
7573
},
@@ -86,13 +84,12 @@ fn loop_token(loop_expr: &ast::AnyHasLoopBody) -> Option<syntax::SyntaxToken> {
8684

8785
fn insert_label_after_token(
8886
editor: &mut SyntaxEditor,
89-
make: &SyntaxFactory,
9087
token: &SyntaxToken,
9188
ctx: &AssistContext<'_>,
9289
builder: &mut SourceChangeBuilder,
9390
) {
94-
let label = make.lifetime("'l");
95-
let elements = vec![make.whitespace(" ").into(), label.syntax().clone().into()];
91+
let label = editor.make().lifetime("'l");
92+
let elements = vec![editor.make().whitespace(" ").into(), label.syntax().clone().into()];
9693
editor.insert_all(Position::after(token), elements);
9794

9895
if let Some(cap) = ctx.config.snippet_cap {

crates/ide-assists/src/handlers/add_missing_impl_members.rs

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -148,9 +148,9 @@ fn add_missing_impl_members_inner(
148148

149149
let target = impl_def.syntax().text_range();
150150
acc.add(AssistId::quick_fix(assist_id), label, target, |edit| {
151-
let make = SyntaxFactory::with_mappings();
151+
let mut editor = edit.make_editor(impl_def.syntax());
152152
let new_item = add_trait_assoc_items_to_impl(
153-
&make,
153+
editor.make(),
154154
&ctx.sema,
155155
ctx.config,
156156
&missing_items,
@@ -166,7 +166,7 @@ fn add_missing_impl_members_inner(
166166
let mut first_new_item = if let DefaultMethods::No = mode
167167
&& let ast::AssocItem::Fn(func) = &first_new_item
168168
&& let Some(body) = try_gen_trait_body(
169-
&make,
169+
editor.make(),
170170
ctx,
171171
func,
172172
trait_ref,
@@ -188,14 +188,13 @@ fn add_missing_impl_members_inner(
188188
.chain(other_items.iter().cloned())
189189
.collect::<Vec<_>>();
190190

191-
let mut editor = edit.make_editor(impl_def.syntax());
192191
if let Some(assoc_item_list) = impl_def.assoc_item_list() {
193192
assoc_item_list.add_items(&mut editor, new_assoc_items);
194193
} else {
195-
let assoc_item_list = make.assoc_item_list(new_assoc_items);
194+
let assoc_item_list = editor.make().assoc_item_list(new_assoc_items);
196195
editor.insert_all(
197196
Position::after(impl_def.syntax()),
198-
vec![make.whitespace(" ").into(), assoc_item_list.syntax().clone().into()],
197+
vec![editor.make().whitespace(" ").into(), assoc_item_list.syntax().clone().into()],
199198
);
200199
first_new_item = assoc_item_list.assoc_items().next();
201200
}
@@ -218,7 +217,6 @@ fn add_missing_impl_members_inner(
218217
editor.add_annotation(first_new_item.syntax(), tabstop);
219218
};
220219
};
221-
editor.add_mappings(make.finish_with_mappings());
222220
edit.add_file_edits(ctx.vfs_file_id(), editor);
223221
})
224222
}

crates/ide-assists/src/handlers/add_missing_match_arms.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ pub(crate) fn add_missing_match_arms(acc: &mut Assists, ctx: &AssistContext<'_>)
7474
.filter(|pat| !matches!(pat, Pat::WildcardPat(_)))
7575
.collect();
7676

77-
let make = SyntaxFactory::with_mappings();
77+
let make = SyntaxFactory::without_mappings();
7878

7979
let scope = ctx.sema.scope(expr.syntax())?;
8080
let module = scope.module();
@@ -297,7 +297,6 @@ pub(crate) fn add_missing_match_arms(acc: &mut Assists, ctx: &AssistContext<'_>)
297297
}
298298
}
299299

300-
editor.add_mappings(make.take());
301300
builder.add_file_edits(ctx.vfs_file_id(), editor);
302301
},
303302
)

crates/ide-assists/src/handlers/add_turbo_fish.rs

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -94,21 +94,20 @@ pub(crate) fn add_turbo_fish(acc: &mut Assists, ctx: &AssistContext<'_>) -> Opti
9494
ident.text_range(),
9595
|builder| {
9696
let mut editor = builder.make_editor(let_stmt.syntax());
97-
let make = SyntaxFactory::without_mappings();
9897

9998
if let_stmt.semicolon_token().is_none() {
10099
editor.insert(
101100
Position::last_child_of(let_stmt.syntax()),
102-
make.token(syntax::SyntaxKind::SEMICOLON),
101+
editor.make().token(syntax::SyntaxKind::SEMICOLON),
103102
);
104103
}
105104

106-
let placeholder_ty = make.ty_placeholder();
105+
let placeholder_ty = editor.make().ty_placeholder();
107106

108107
if let Some(pat) = let_stmt.pat() {
109108
let elements = vec![
110-
make.token(syntax::SyntaxKind::COLON).into(),
111-
make.whitespace(" ").into(),
109+
editor.make().token(syntax::SyntaxKind::COLON).into(),
110+
editor.make().whitespace(" ").into(),
112111
placeholder_ty.syntax().clone().into(),
113112
];
114113
editor.insert_all(Position::after(pat.syntax()), elements);
@@ -141,14 +140,12 @@ pub(crate) fn add_turbo_fish(acc: &mut Assists, ctx: &AssistContext<'_>) -> Opti
141140
ident.text_range(),
142141
|builder| {
143142
builder.trigger_parameter_hints();
144-
145-
let make = SyntaxFactory::with_mappings();
146143
let mut editor = match &turbofish_target {
147144
Either::Left(it) => builder.make_editor(it.syntax()),
148145
Either::Right(it) => builder.make_editor(it.syntax()),
149146
};
150147

151-
let fish_head = get_fish_head(&make, number_of_arguments);
148+
let fish_head = get_fish_head(editor.make(), number_of_arguments);
152149

153150
match turbofish_target {
154151
Either::Left(path_segment) => {
@@ -180,8 +177,6 @@ pub(crate) fn add_turbo_fish(acc: &mut Assists, ctx: &AssistContext<'_>) -> Opti
180177
editor.add_annotation(arg.syntax(), builder.make_placeholder_snippet(cap));
181178
}
182179
}
183-
184-
editor.add_mappings(make.finish_with_mappings());
185180
builder.add_file_edits(ctx.vfs_file_id(), editor);
186181
},
187182
)

crates/ide-assists/src/handlers/apply_demorgan.rs

Lines changed: 21 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -80,10 +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-
8583
let (mut editor, demorganed) = SyntaxEditor::with_ast_node(&bin_expr);
86-
editor.replace(demorganed.op_token()?, make.token(inv_token));
84+
editor.replace(demorganed.op_token()?, editor.make().token(inv_token));
8785

8886
let mut exprs = VecDeque::from([
8987
(bin_expr.lhs()?, demorganed.lhs()?, prec),
@@ -94,29 +92,28 @@ pub(crate) fn apply_demorgan(acc: &mut Assists, ctx: &AssistContext<'_>) -> Opti
9492
if let BinExpr(bin_expr) = &expr {
9593
if let BinExpr(cbin_expr) = &demorganed {
9694
if op == bin_expr.op_kind()? {
97-
editor.replace(cbin_expr.op_token()?, make.token(inv_token));
95+
editor.replace(cbin_expr.op_token()?, editor.make().token(inv_token));
9896
exprs.push_back((bin_expr.lhs()?, cbin_expr.lhs()?, prec));
9997
exprs.push_back((bin_expr.rhs()?, cbin_expr.rhs()?, prec));
10098
} else {
101-
let mut inv = invert_boolean_expression(&make, expr);
99+
let mut inv = invert_boolean_expression(editor.make(), expr);
102100
if precedence(&inv).needs_parentheses_in(prec) {
103-
inv = make.expr_paren(inv).into();
101+
inv = editor.make().expr_paren(inv).into();
104102
}
105103
editor.replace(demorganed.syntax(), inv.syntax());
106104
}
107105
} else {
108106
return None;
109107
}
110108
} else {
111-
let mut inv = invert_boolean_expression(&make, demorganed.clone());
109+
let mut inv = invert_boolean_expression(editor.make(), demorganed.clone());
112110
if precedence(&inv).needs_parentheses_in(prec) {
113-
inv = make.expr_paren(inv).into();
111+
inv = editor.make().expr_paren(inv).into();
114112
}
115113
editor.replace(demorganed.syntax(), inv.syntax());
116114
}
117115
}
118116

119-
editor.add_mappings(make.finish_with_mappings());
120117
let edit = editor.finish();
121118
let demorganed = ast::Expr::cast(edit.new_root().clone())?;
122119

@@ -126,7 +123,8 @@ pub(crate) fn apply_demorgan(acc: &mut Assists, ctx: &AssistContext<'_>) -> Opti
126123
"Apply De Morgan's law",
127124
op_range,
128125
|builder| {
129-
let make = SyntaxFactory::with_mappings();
126+
let mut editor = builder.make_editor(bin_expr.syntax());
127+
130128
let (target_node, result_expr) = if let Some(neg_expr) = bin_expr
131129
.syntax()
132130
.parent()
@@ -141,24 +139,22 @@ pub(crate) fn apply_demorgan(acc: &mut Assists, ctx: &AssistContext<'_>) -> Opti
141139
bin_expr.syntax().parent().and_then(ast::ParenExpr::cast)
142140
{
143141
cov_mark::hit!(demorgan_double_parens);
144-
(paren_expr.syntax().clone(), add_bang_paren(&make, demorganed))
142+
(paren_expr.syntax().clone(), add_bang_paren(editor.make(), demorganed))
145143
} else {
146-
(bin_expr.syntax().clone(), add_bang_paren(&make, demorganed))
144+
(bin_expr.syntax().clone(), add_bang_paren(editor.make(), demorganed))
147145
};
148146

149147
let final_expr = if target_node
150148
.parent()
151149
.is_some_and(|p| result_expr.needs_parens_in_place_of(&p, &target_node))
152150
{
153151
cov_mark::hit!(demorgan_keep_parens_for_op_precedence2);
154-
make.expr_paren(result_expr).into()
152+
editor.make().expr_paren(result_expr).into()
155153
} else {
156154
result_expr
157155
};
158156

159-
let mut editor = builder.make_editor(&target_node);
160157
editor.replace(&target_node, final_expr.syntax());
161-
editor.add_mappings(make.finish_with_mappings());
162158
builder.add_file_edits(ctx.vfs_file_id(), editor);
163159
},
164160
)
@@ -206,18 +202,17 @@ pub(crate) fn apply_demorgan_iterator(acc: &mut Assists, ctx: &AssistContext<'_>
206202
label,
207203
op_range,
208204
|builder| {
209-
let make = SyntaxFactory::with_mappings();
210205
let mut editor = builder.make_editor(method_call.syntax());
211206
// replace the method name
212207
let new_name = match name.text().as_str() {
213-
"all" => make.name_ref("any"),
214-
"any" => make.name_ref("all"),
208+
"all" => editor.make().name_ref("any"),
209+
"any" => editor.make().name_ref("all"),
215210
_ => unreachable!(),
216211
};
217212
editor.replace(name.syntax(), new_name.syntax());
218213

219214
// negate all tail expressions in the closure body
220-
let tail_cb = &mut |e: &_| tail_cb_impl(&mut editor, &make, e);
215+
let tail_cb = &mut |e: &_| tail_cb_impl(&mut editor, e);
221216
walk_expr(&closure_body, &mut |expr| {
222217
if let ast::Expr::ReturnExpr(ret_expr) = expr
223218
&& let Some(ret_expr_arg) = &ret_expr.expr()
@@ -238,10 +233,11 @@ pub(crate) fn apply_demorgan_iterator(acc: &mut Assists, ctx: &AssistContext<'_>
238233
prefix_expr.op_token().expect("prefix expression always has an operator"),
239234
);
240235
} else {
241-
editor.insert(Position::before(method_call.syntax()), make.token(SyntaxKind::BANG));
236+
editor.insert(
237+
Position::before(method_call.syntax()),
238+
editor.make().token(SyntaxKind::BANG),
239+
);
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: &mut 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

Comments
 (0)