aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_syntax
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_syntax')
-rw-r--r--crates/ra_syntax/src/ast/edit.rs16
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
188impl 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
188pub fn strip_attrs_and_docs<N: ast::AttrsOwner>(node: N) -> N { 202pub 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}