mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-29 13:25:09 +00:00
organizize
This commit is contained in:
parent
26262aaf05
commit
7c67612b8a
376 changed files with 27 additions and 145 deletions
22
crates/libsyntax2/src/ast/generated.rs.tera
Normal file
22
crates/libsyntax2/src/ast/generated.rs.tera
Normal file
|
@ -0,0 +1,22 @@
|
|||
use std::sync::Arc;
|
||||
use {
|
||||
SyntaxNode, SyntaxRoot, TreeRoot, AstNode,
|
||||
SyntaxKind::*,
|
||||
};
|
||||
{% for node in ast %}
|
||||
{% set Name = node.kind | camel %}
|
||||
#[derive(Debug, Clone, Copy)]
|
||||
pub struct {{ Name }}<R: TreeRoot = Arc<SyntaxRoot>> {
|
||||
syntax: SyntaxNode<R>,
|
||||
}
|
||||
|
||||
impl<R: TreeRoot> AstNode<R> for {{ Name }}<R> {
|
||||
fn cast(syntax: SyntaxNode<R>) -> Option<Self> {
|
||||
match syntax.kind() {
|
||||
{{ node.kind }} => Some({{ Name }} { syntax }),
|
||||
_ => None,
|
||||
}
|
||||
}
|
||||
fn syntax(&self) -> &SyntaxNode<R> { &self.syntax }
|
||||
}
|
||||
{% endfor %}
|
Loading…
Add table
Add a link
Reference in a new issue