diff options
Diffstat (limited to 'crates/ra_syntax')
-rw-r--r-- | crates/ra_syntax/src/ast/edit.rs | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/crates/ra_syntax/src/ast/edit.rs b/crates/ra_syntax/src/ast/edit.rs index 6e64c0675..9d0fd1383 100644 --- a/crates/ra_syntax/src/ast/edit.rs +++ b/crates/ra_syntax/src/ast/edit.rs | |||
@@ -10,7 +10,7 @@ use crate::{ | |||
10 | ast::{ | 10 | ast::{ |
11 | self, | 11 | self, |
12 | make::{self, tokens}, | 12 | make::{self, tokens}, |
13 | AstNode, | 13 | AstNode, TypeBoundsOwner, |
14 | }, | 14 | }, |
15 | AstToken, Direction, InsertPosition, SmolStr, SyntaxElement, | 15 | AstToken, Direction, InsertPosition, SmolStr, SyntaxElement, |
16 | SyntaxKind::{ATTR, COMMENT, WHITESPACE}, | 16 | SyntaxKind::{ATTR, COMMENT, WHITESPACE}, |
@@ -185,6 +185,20 @@ impl ast::RecordFieldList { | |||
185 | } | 185 | } |
186 | } | 186 | } |
187 | 187 | ||
188 | impl ast::TypeParam { | ||
189 | pub fn remove_bounds(&self) -> ast::TypeParam { | ||
190 | let colon = match self.colon_token() { | ||
191 | Some(it) => it, | ||
192 | None => return self.clone(), | ||
193 | }; | ||
194 | let end = match self.type_bound_list() { | ||
195 | Some(it) => it.syntax().clone().into(), | ||
196 | None => colon.clone().into(), | ||
197 | }; | ||
198 | replace_children(self, RangeInclusive::new(colon.into(), end), iter::empty()) | ||
199 | } | ||
200 | } | ||
201 | |||
188 | pub fn strip_attrs_and_docs<N: ast::AttrsOwner>(node: N) -> N { | 202 | pub fn strip_attrs_and_docs<N: ast::AttrsOwner>(node: N) -> N { |
189 | N::cast(strip_attrs_and_docs_inner(node.syntax().clone())).unwrap() | 203 | N::cast(strip_attrs_and_docs_inner(node.syntax().clone())).unwrap() |
190 | } | 204 | } |