diff options
Diffstat (limited to 'crates/ra_syntax/src/ast/edit.rs')
-rw-r--r-- | crates/ra_syntax/src/ast/edit.rs | 22 |
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 | ||
262 | impl 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] |
263 | pub fn strip_attrs_and_docs<N: ast::AttrsOwner>(node: &N) -> N { | 281 | pub 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() |