Skip to content

Commit 46d7b08

Browse files
bors[bot]viorina
andcommitted
Merge #1519
1519: Move whitespace manipulation inside AstEditor r=matklad a=viorina Co-authored-by: Ekaterina Babshukova <[email protected]>
2 parents 82c3fe7 + 895597d commit 46d7b08

File tree

2 files changed

+17
-19
lines changed

2 files changed

+17
-19
lines changed

crates/ra_assists/src/add_missing_impl_members.rs

+11-13
Original file line numberDiff line numberDiff line change
@@ -78,26 +78,24 @@ fn add_missing_impl_members_inner(
7878

7979
ctx.add_action(AssistId(assist_id), label, |edit| {
8080
let n_existing_items = impl_item_list.impl_items().count();
81-
let mut ast_editor = AstEditor::new(impl_item_list);
82-
if n_existing_items == 0 {
83-
ast_editor.make_multiline();
84-
}
85-
86-
for item in missing_items {
87-
let it = match item.kind() {
81+
let items: Vec<_> = missing_items
82+
.into_iter()
83+
.map(|it| match it.kind() {
8884
ImplItemKind::FnDef(def) => {
8985
strip_docstring(ImplItem::cast(add_body(def).syntax()).unwrap())
9086
}
91-
_ => strip_docstring(item),
92-
};
93-
ast_editor.append_item(&it)
94-
}
87+
_ => strip_docstring(it),
88+
})
89+
.collect();
90+
let mut ast_editor = AstEditor::new(impl_item_list);
91+
92+
ast_editor.append_items(items.iter().map(|it| &**it));
9593

9694
let first_new_item = ast_editor.ast().impl_items().nth(n_existing_items).unwrap();
97-
let cursor_poisition = first_new_item.syntax().range().start();
95+
let cursor_position = first_new_item.syntax().range().start();
9896
ast_editor.into_text_edit(edit.text_edit_builder());
9997

100-
edit.set_cursor(cursor_poisition);
98+
edit.set_cursor(cursor_position);
10199
});
102100

103101
ctx.build()

crates/ra_assists/src/ast_editor.rs

+6-6
Original file line numberDiff line numberDiff line change
@@ -85,10 +85,6 @@ impl AstEditor<ast::NamedFieldList> {
8585
self.insert_field(InsertPosition::Last, field)
8686
}
8787

88-
pub fn make_multiline(&mut self) {
89-
self.do_make_multiline()
90-
}
91-
9288
pub fn insert_field(
9389
&mut self,
9490
position: InsertPosition<&'_ ast::NamedField>,
@@ -161,8 +157,12 @@ impl AstEditor<ast::NamedFieldList> {
161157
}
162158

163159
impl AstEditor<ast::ItemList> {
164-
pub fn make_multiline(&mut self) {
165-
self.do_make_multiline()
160+
pub fn append_items<'a>(&mut self, items: impl Iterator<Item = &'a ast::ImplItem>) {
161+
let n_existing_items = self.ast().impl_items().count();
162+
if n_existing_items == 0 {
163+
self.do_make_multiline();
164+
}
165+
items.for_each(|it| self.append_item(it));
166166
}
167167

168168
pub fn append_item(&mut self, item: &ast::ImplItem) {

0 commit comments

Comments
 (0)