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.rs17
1 files changed, 17 insertions, 0 deletions
diff --git a/crates/syntax/src/ast/edit_in_place.rs b/crates/syntax/src/ast/edit_in_place.rs
index eadebbe8a2..7d63235282 100644
--- a/crates/syntax/src/ast/edit_in_place.rs
+++ b/crates/syntax/src/ast/edit_in_place.rs
@@ -235,6 +235,23 @@ impl ast::GenericParamList {
}
}
}
+
+ /// Extracts the const, type, and lifetime names into a new [`ast::GenericParamList`]
+ pub fn to_generic_args(&self) -> ast::GenericParamList {
+ let params = self.generic_params().filter_map(|param| match param {
+ ast::GenericParam::ConstParam(it) => {
+ Some(ast::GenericParam::TypeParam(make::type_param(it.name()?, None)))
+ }
+ ast::GenericParam::LifetimeParam(it) => {
+ Some(ast::GenericParam::LifetimeParam(make::lifetime_param(it.lifetime()?)))
+ }
+ ast::GenericParam::TypeParam(it) => {
+ Some(ast::GenericParam::TypeParam(make::type_param(it.name()?, None)))
+ }
+ });
+
+ make::generic_param_list(params)
+ }
}
impl ast::WhereClause {