Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/syntax/src/ast/edit_in_place.rs')
| -rw-r--r-- | crates/syntax/src/ast/edit_in_place.rs | 25 |
1 files changed, 5 insertions, 20 deletions
diff --git a/crates/syntax/src/ast/edit_in_place.rs b/crates/syntax/src/ast/edit_in_place.rs index a893f65dc3..7d7c875508 100644 --- a/crates/syntax/src/ast/edit_in_place.rs +++ b/crates/syntax/src/ast/edit_in_place.rs @@ -9,7 +9,7 @@ use crate::{ SyntaxKind::{ATTR, COMMENT, WHITESPACE}, SyntaxNode, SyntaxToken, algo::{self, neighbor}, - ast::{self, edit::IndentLevel, make}, + ast::{self, edit::IndentLevel, make, syntax_factory::SyntaxFactory}, syntax_editor::{self, SyntaxEditor}, ted, }; @@ -43,33 +43,18 @@ pub trait AttrsOwnerEdit: ast::HasAttrs { impl<T: ast::HasAttrs> AttrsOwnerEdit for T {} impl ast::GenericParamList { - /// Removes the existing generic param - pub fn remove_generic_param(&self, generic_param: ast::GenericParam) { - if let Some(previous) = generic_param.syntax().prev_sibling() { - if let Some(next_token) = previous.next_sibling_or_token() { - ted::remove_all(next_token..=generic_param.syntax().clone().into()); - } - } else if let Some(next) = generic_param.syntax().next_sibling() { - if let Some(next_token) = next.prev_sibling_or_token() { - ted::remove_all(generic_param.syntax().clone().into()..=next_token); - } - } else { - ted::remove(generic_param.syntax()); - } - } - /// Constructs a matching [`ast::GenericArgList`] - pub fn to_generic_args(&self) -> ast::GenericArgList { + pub fn to_generic_args(&self, make: &SyntaxFactory) -> ast::GenericArgList { let args = self.generic_params().filter_map(|param| match param { ast::GenericParam::LifetimeParam(it) => { - Some(ast::GenericArg::LifetimeArg(make::lifetime_arg(it.lifetime()?))) + Some(ast::GenericArg::LifetimeArg(make.lifetime_arg(it.lifetime()?))) } ast::GenericParam::TypeParam(it) => { - Some(ast::GenericArg::TypeArg(make::type_arg(make::ext::ty_name(it.name()?)))) + Some(ast::GenericArg::TypeArg(make.type_arg(make.ty_name(it.name()?)))) } ast::GenericParam::ConstParam(it) => { // Name-only const params get parsed as `TypeArg`s - Some(ast::GenericArg::TypeArg(make::type_arg(make::ext::ty_name(it.name()?)))) + Some(ast::GenericArg::TypeArg(make.type_arg(make.ty_name(it.name()?)))) } }); |