typescript_ast/ast/
statement.rs

1use std::sync::Arc;
2
3use super::{
4    class::Class, function::Function, interface::Interface, typedefinition::TypeDefinition,
5    value::Value,
6};
7
8#[derive(Debug)]
9pub struct ElseIf {
10    pub expr: Arc<Value>,
11    pub block: Vec<Statement>,
12}
13
14#[derive(Debug)]
15pub enum Statement {
16    Const {
17        name: String,
18        value: Arc<Value>,
19    },
20    Let {
21        name: String,
22        value: Arc<Value>,
23    },
24    Assign {
25        identifier: String,
26        value: Arc<Value>,
27    },
28    If {
29        expr: Arc<Value>,
30        block: Vec<Statement>,
31        elseifs: Vec<ElseIf>,
32        els: Vec<Statement>,
33    },
34    Return(Arc<Value>),
35    Function(Function),
36    Call(Arc<Value>),
37    Class(Class),
38    Interface(Interface),
39    Type(TypeDefinition),
40}