aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_syntax/src/ast/node_ext.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_syntax/src/ast/node_ext.rs')
-rw-r--r--crates/ra_syntax/src/ast/node_ext.rs21
1 files changed, 21 insertions, 0 deletions
diff --git a/crates/ra_syntax/src/ast/node_ext.rs b/crates/ra_syntax/src/ast/node_ext.rs
index 313f52226..d2ee9586d 100644
--- a/crates/ra_syntax/src/ast/node_ext.rs
+++ b/crates/ra_syntax/src/ast/node_ext.rs
@@ -473,6 +473,27 @@ impl ast::TokenTree {
473 } 473 }
474} 474}
475 475
476impl ast::GenericParamList {
477 pub fn lifetime_params(&self) -> impl Iterator<Item = ast::LifetimeParam> {
478 self.generic_params().filter_map(|param| match param {
479 ast::GenericParam::LifetimeParam(it) => Some(it),
480 ast::GenericParam::TypeParam(_) | ast::GenericParam::ConstParam(_) => None,
481 })
482 }
483 pub fn type_params(&self) -> impl Iterator<Item = ast::TypeParam> {
484 self.generic_params().filter_map(|param| match param {
485 ast::GenericParam::TypeParam(it) => Some(it),
486 ast::GenericParam::LifetimeParam(_) | ast::GenericParam::ConstParam(_) => None,
487 })
488 }
489 pub fn const_params(&self) -> impl Iterator<Item = ast::ConstParam> {
490 self.generic_params().filter_map(|param| match param {
491 ast::GenericParam::ConstParam(it) => Some(it),
492 ast::GenericParam::TypeParam(_) | ast::GenericParam::LifetimeParam(_) => None,
493 })
494 }
495}
496
476impl ast::DocCommentsOwner for ast::SourceFile {} 497impl ast::DocCommentsOwner for ast::SourceFile {}
477impl ast::DocCommentsOwner for ast::Fn {} 498impl ast::DocCommentsOwner for ast::Fn {}
478impl ast::DocCommentsOwner for ast::Struct {} 499impl ast::DocCommentsOwner for ast::Struct {}