From 15f15d92eb4d6ab791047eefbd6dd9b2baba1140 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Tue, 28 Aug 2018 23:59:57 +0300 Subject: add impl works with lifetimes --- crates/libsyntax2/src/ast/generated.rs | 86 +++++++++++++++++++++++++++++++++- 1 file changed, 84 insertions(+), 2 deletions(-) (limited to 'crates/libsyntax2/src/ast/generated.rs') diff --git a/crates/libsyntax2/src/ast/generated.rs b/crates/libsyntax2/src/ast/generated.rs index e8743caa8..d72e2091a 100644 --- a/crates/libsyntax2/src/ast/generated.rs +++ b/crates/libsyntax2/src/ast/generated.rs @@ -4,6 +4,28 @@ use { SyntaxKind::*, }; +// ArgList +#[derive(Debug, Clone, Copy)] +pub struct ArgList<'a> { + syntax: SyntaxNodeRef<'a>, +} + +impl<'a> AstNode<'a> for ArgList<'a> { + fn cast(syntax: SyntaxNodeRef<'a>) -> Option { + match syntax.kind() { + ARG_LIST => Some(ArgList { syntax }), + _ => None, + } + } + fn syntax(self) -> SyntaxNodeRef<'a> { self.syntax } +} + +impl<'a> ArgList<'a> { + pub fn args(self) -> impl Iterator> + 'a { + super::children(self) + } +} + // ArrayExpr #[derive(Debug, Clone, Copy)] pub struct ArrayExpr<'a> { @@ -181,7 +203,15 @@ impl<'a> AstNode<'a> for CallExpr<'a> { fn syntax(self) -> SyntaxNodeRef<'a> { self.syntax } } -impl<'a> CallExpr<'a> {} +impl<'a> CallExpr<'a> { + pub fn expr(self) -> Option> { + super::child_opt(self) + } + + pub fn arg_list(self) -> Option> { + super::child_opt(self) + } +} // CastExpr #[derive(Debug, Clone, Copy)] @@ -705,7 +735,15 @@ impl<'a> AstNode<'a> for LambdaExpr<'a> { fn syntax(self) -> SyntaxNodeRef<'a> { self.syntax } } -impl<'a> LambdaExpr<'a> {} +impl<'a> LambdaExpr<'a> { + pub fn param_list(self) -> Option> { + super::child_opt(self) + } + + pub fn body(self) -> Option> { + super::child_opt(self) + } +} // LetStmt #[derive(Debug, Clone, Copy)] @@ -733,6 +771,46 @@ impl<'a> LetStmt<'a> { } } +// Lifetime +#[derive(Debug, Clone, Copy)] +pub struct Lifetime<'a> { + syntax: SyntaxNodeRef<'a>, +} + +impl<'a> AstNode<'a> for Lifetime<'a> { + fn cast(syntax: SyntaxNodeRef<'a>) -> Option { + match syntax.kind() { + LIFETIME => Some(Lifetime { syntax }), + _ => None, + } + } + fn syntax(self) -> SyntaxNodeRef<'a> { self.syntax } +} + +impl<'a> Lifetime<'a> {} + +// LifetimeParam +#[derive(Debug, Clone, Copy)] +pub struct LifetimeParam<'a> { + syntax: SyntaxNodeRef<'a>, +} + +impl<'a> AstNode<'a> for LifetimeParam<'a> { + fn cast(syntax: SyntaxNodeRef<'a>) -> Option { + match syntax.kind() { + LIFETIME_PARAM => Some(LifetimeParam { syntax }), + _ => None, + } + } + fn syntax(self) -> SyntaxNodeRef<'a> { self.syntax } +} + +impl<'a> LifetimeParam<'a> { + pub fn lifetime(self) -> Option> { + super::child_opt(self) + } +} + // Literal #[derive(Debug, Clone, Copy)] pub struct Literal<'a> { @@ -1813,6 +1891,10 @@ impl<'a> TypeParamList<'a> { pub fn type_params(self) -> impl Iterator> + 'a { super::children(self) } + + pub fn lifetime_params(self) -> impl Iterator> + 'a { + super::children(self) + } } // TypeRef -- cgit v1.2.3