From b5021411a84822cb3f1e3aeffad9550dd15bdeb6 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Sun, 16 Sep 2018 12:54:24 +0300 Subject: rename all things --- crates/ra_syntax/src/ast/generated.rs.tera | 83 ++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 crates/ra_syntax/src/ast/generated.rs.tera (limited to 'crates/ra_syntax/src/ast/generated.rs.tera') diff --git a/crates/ra_syntax/src/ast/generated.rs.tera b/crates/ra_syntax/src/ast/generated.rs.tera new file mode 100644 index 000000000..a72e9b732 --- /dev/null +++ b/crates/ra_syntax/src/ast/generated.rs.tera @@ -0,0 +1,83 @@ +use { + ast, + SyntaxNodeRef, AstNode, + SyntaxKind::*, +}; +{% for node, methods in ast %} +// {{ node }} +{%- if methods.enum %} +#[derive(Debug, Clone, Copy)] +pub enum {{ node }}<'a> { +{%- for kind in methods.enum %} + {{ kind }}({{ kind }}<'a>), +{%- endfor %} +} + +impl<'a> AstNode<'a> for {{ node }}<'a> { + fn cast(syntax: SyntaxNodeRef<'a>) -> Option { + match syntax.kind() { +{%- for kind in methods.enum %} + {{ kind | SCREAM }} => Some({{ node }}::{{ kind }}({{ kind }} { syntax })), +{%- endfor %} + _ => None, + } + } + fn syntax(self) -> SyntaxNodeRef<'a> { + match self { +{%- for kind in methods.enum %} + {{ node }}::{{ kind }}(inner) => inner.syntax(), +{%- endfor %} + } + } +} +{% else %} +#[derive(Debug, Clone, Copy)] +pub struct {{ node }}<'a> { + syntax: SyntaxNodeRef<'a>, +} + +impl<'a> AstNode<'a> for {{ node }}<'a> { + fn cast(syntax: SyntaxNodeRef<'a>) -> Option { + match syntax.kind() { + {{ node | SCREAM }} => Some({{ node }} { syntax }), + _ => None, + } + } + fn syntax(self) -> SyntaxNodeRef<'a> { self.syntax } +} +{% endif %} +{% if methods.traits -%} +{%- for t in methods.traits -%} +impl<'a> ast::{{ t }}<'a> for {{ node }}<'a> {} +{% endfor -%} +{%- endif -%} + +impl<'a> {{ node }}<'a> { +{%- if methods.collections -%} +{%- for m in methods.collections -%} +{%- set method_name = m.0 -%} +{%- set ChildName = m.1 %} + pub fn {{ method_name }}(self) -> impl Iterator> + 'a { + super::children(self) + } +{% endfor -%} +{%- endif -%} + +{%- if methods.options -%} +{%- for m in methods.options -%} + +{%- if m is string -%} +{%- set method_name = m | snake -%} +{%- set ChildName = m %} +{%- else -%} +{%- set method_name = m.0 -%} +{%- set ChildName = m.1 %} +{%- endif -%} + + pub fn {{ method_name }}(self) -> Option<{{ ChildName }}<'a>> { + super::child_opt(self) + } +{% endfor -%} +{%- endif -%} +} +{% endfor %} -- cgit v1.2.3