Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/syntax/src/ast/node_ext.rs')
-rw-r--r--crates/syntax/src/ast/node_ext.rs16
1 files changed, 13 insertions, 3 deletions
diff --git a/crates/syntax/src/ast/node_ext.rs b/crates/syntax/src/ast/node_ext.rs
index 693bfe330b..6ec73e76f7 100644
--- a/crates/syntax/src/ast/node_ext.rs
+++ b/crates/syntax/src/ast/node_ext.rs
@@ -795,7 +795,7 @@ pub enum TypeBoundKind {
/// for<'a> ...
ForType(ast::ForType),
/// use
- Use(ast::GenericParamList),
+ Use(ast::UseBoundGenericArgs),
/// 'a
Lifetime(ast::Lifetime),
}
@@ -806,8 +806,8 @@ impl ast::TypeBound {
TypeBoundKind::PathType(path_type)
} else if let Some(for_type) = support::children(self.syntax()).next() {
TypeBoundKind::ForType(for_type)
- } else if let Some(generic_param_list) = self.generic_param_list() {
- TypeBoundKind::Use(generic_param_list)
+ } else if let Some(args) = self.use_bound_generic_args() {
+ TypeBoundKind::Use(args)
} else if let Some(lifetime) = self.lifetime() {
TypeBoundKind::Lifetime(lifetime)
} else {
@@ -1140,3 +1140,13 @@ impl From<ast::AssocItem> for ast::AnyHasAttrs {
Self::new(node)
}
}
+
+impl ast::OrPat {
+ pub fn leading_pipe(&self) -> Option<SyntaxToken> {
+ self.syntax
+ .children_with_tokens()
+ .find(|it| !it.kind().is_trivia())
+ .and_then(NodeOrToken::into_token)
+ .filter(|it| it.kind() == T![|])
+ }
+}