aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_syntax/src/ast/edit.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_syntax/src/ast/edit.rs')
-rw-r--r--crates/ra_syntax/src/ast/edit.rs22
1 files changed, 20 insertions, 2 deletions
diff --git a/crates/ra_syntax/src/ast/edit.rs b/crates/ra_syntax/src/ast/edit.rs
index 1858e2b6c..40a04b9c5 100644
--- a/crates/ra_syntax/src/ast/edit.rs
+++ b/crates/ra_syntax/src/ast/edit.rs
@@ -139,7 +139,7 @@ impl ast::RecordFieldList {
139 let mut to_insert: ArrayVec<[SyntaxElement; 4]> = ArrayVec::new(); 139 let mut to_insert: ArrayVec<[SyntaxElement; 4]> = ArrayVec::new();
140 to_insert.push(space.into()); 140 to_insert.push(space.into());
141 to_insert.push(field.syntax().clone().into()); 141 to_insert.push(field.syntax().clone().into());
142 to_insert.push(tokens::comma().into()); 142 to_insert.push(make::token(T![,]).into());
143 143
144 macro_rules! after_l_curly { 144 macro_rules! after_l_curly {
145 () => {{ 145 () => {{
@@ -160,7 +160,7 @@ impl ast::RecordFieldList {
160 { 160 {
161 InsertPosition::After(comma) 161 InsertPosition::After(comma)
162 } else { 162 } else {
163 to_insert.insert(0, tokens::comma().into()); 163 to_insert.insert(0, make::token(T![,]).into());
164 InsertPosition::After($anchor.syntax().clone().into()) 164 InsertPosition::After($anchor.syntax().clone().into())
165 } 165 }
166 }; 166 };
@@ -259,6 +259,24 @@ impl ast::UseItem {
259 } 259 }
260} 260}
261 261
262impl ast::UseTree {
263 #[must_use]
264 pub fn with_path(&self, path: ast::Path) -> ast::UseTree {
265 if let Some(old) = self.path() {
266 return replace_descendants(self, iter::once((old, path)));
267 }
268 self.clone()
269 }
270
271 #[must_use]
272 pub fn with_use_tree_list(&self, use_tree_list: ast::UseTreeList) -> ast::UseTree {
273 if let Some(old) = self.use_tree_list() {
274 return replace_descendants(self, iter::once((old, use_tree_list)));
275 }
276 self.clone()
277 }
278}
279
262#[must_use] 280#[must_use]
263pub fn strip_attrs_and_docs<N: ast::AttrsOwner>(node: &N) -> N { 281pub fn strip_attrs_and_docs<N: ast::AttrsOwner>(node: &N) -> N {
264 N::cast(strip_attrs_and_docs_inner(node.syntax().clone())).unwrap() 282 N::cast(strip_attrs_and_docs_inner(node.syntax().clone())).unwrap()