typescript_ast/ast/
statement.rs1use 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}