mxmlextrema_as3parser/tree/
type_expression.rs

1use crate::ns::*;
2use serde::{Serialize, Deserialize};
3
4#[derive(Debug, Clone, Serialize, Deserialize)]
5pub struct AnyTypeExpression {
6    pub location: Location,
7}
8
9#[derive(Debug, Clone, Serialize, Deserialize)]
10pub struct VoidTypeExpression {
11    pub location: Location,
12}
13
14#[derive(Debug, Clone, Serialize, Deserialize)]
15pub struct ArrayTypeExpression {
16    pub location: Location,
17    pub expression: Rc<Expression>,
18}
19
20/// A tuple type expression consisting of at least two elements.
21#[derive(Debug, Clone, Serialize, Deserialize)]
22pub struct TupleTypeExpression {
23    pub location: Location,
24    pub expressions: Vec<Rc<Expression>>,
25}
26
27#[derive(Debug, Clone, Serialize, Deserialize)]
28pub struct FunctionTypeExpression {
29    pub location: Location,
30    pub parameters: Vec<Rc<FunctionTypeParameter>>,
31    pub result_type: Option<Rc<Expression>>,
32}
33
34/// ```plain
35/// function(T, T=, ...)
36/// function(...[T])
37/// ```
38#[derive(Debug, Clone, Serialize, Deserialize)]
39pub struct FunctionTypeParameter {
40    pub location: Location,
41    pub kind: ParameterKind,
42    /// Possibly `None` for the rest parameter.
43    pub type_expression: Option<Rc<Expression>>,
44}