1use swc_ecma_ast::*;
2
3impl_enum!(AssignTarget, [Simple, Pat], true);
4impl_enum!(
5 SimpleAssignTarget,
6 [
7 Ident,
8 Member,
9 SuperProp,
10 Paren,
11 OptChain,
12 TsAs,
13 TsNonNull,
14 TsSatisfies,
15 TsTypeAssertion,
16 TsInstantiation,
17 Invalid
18 ]
19);
20impl_enum!(AssignTargetPat, [Array, Object, Invalid]);
21impl_enum!(
22 Expr,
23 [
24 This,
25 Array,
26 Object,
27 Fn,
28 Unary,
29 Update,
30 Bin,
31 Assign,
32 Member,
33 SuperProp,
34 Cond,
35 Call,
36 New,
37 Seq,
38 Ident,
39 Lit,
40 Tpl,
41 TaggedTpl,
42 Arrow,
43 Class,
44 Yield,
45 MetaProp,
46 Await,
47 Paren,
48 JSXMember,
49 JSXNamespacedName,
50 JSXEmpty,
51 JSXElement,
52 JSXFragment,
53 TsTypeAssertion,
54 TsConstAssertion,
55 TsNonNull,
56 TsAs,
57 TsInstantiation,
58 TsSatisfies,
59 PrivateName,
60 OptChain,
61 Invalid
62 ],
63 true
64);
65
66impl_struct!(ThisExpr, [span]);
67impl_struct!(ArrayLit, [span, elems]);
68impl_struct!(ObjectLit, [span, props]);
69impl_struct!(FnExpr, [ident, function]);
70impl_struct!(
71 ArrowExpr,
72 [
73 span,
74 ctxt,
75 params,
76 body,
77 is_async,
78 is_generator,
79 type_params,
80 return_type
81 ]
82);
83impl_struct!(ClassExpr, [ident, class]);
84impl_struct!(Tpl, [span, exprs, quasis]);
85impl_struct!(UnaryExpr, [span, op, arg]);
86impl_struct!(UpdateExpr, [span, op, prefix, arg]);
87impl_struct!(BinExpr, [span, op, left, right]);
88impl_struct!(AssignExpr, [span, op, left, right]);
89impl_struct!(MemberExpr, [span, obj, prop]);
90impl_struct!(SuperPropExpr, [span, obj, prop]);
91impl_struct!(CondExpr, [span, test, cons, alt]);
92
93impl_struct!(CallExpr, [span, ctxt, callee, args, type_args]);
94impl_struct!(ExprOrSpread, [spread, expr]);
95impl_struct!(Super, [span]);
96impl_struct!(Import, [span, phase]);
97impl_struct!(NewExpr, [span, ctxt, callee, args, type_args]);
98impl_struct!(SeqExpr, [span, exprs]);
99
100impl_struct!(TaggedTpl, [span, ctxt, tag, type_params, tpl]);
101impl_struct!(YieldExpr, [span, arg, delegate]);
102impl_struct!(MetaPropExpr, [span, kind]);
103impl_struct!(AwaitExpr, [span, arg]);
104impl_struct!(JSXMemberExpr, [span, obj, prop]);
105impl_struct!(JSXNamespacedName, [span, ns, name]);
106impl_struct!(JSXEmptyExpr, [span]);
107impl_struct!(JSXElement, [span, opening, closing, children]);
108impl_struct!(JSXFragment, [span, opening, closing, children]);
109impl_struct!(OptChainExpr, [span, optional, base]);
110
111impl_struct!(ParenExpr, [span, expr]);
112impl_struct!(
113 Function,
114 [
115 ctxt,
116 params,
117 decorators,
118 span,
119 body,
120 is_generator,
121 is_async,
122 type_params,
123 return_type
124 ]
125);
126impl_struct!(Decorator, [span, expr]);
127
128impl_struct!(TplElement, [span, tail, cooked, raw]);
129
130impl_struct!(
131 JSXOpeningElement,
132 [name, span, attrs, self_closing, type_args]
133);
134impl_struct!(JSXClosingElement, [name, span]);
135
136impl_struct!(JSXOpeningFragment, [span]);
137impl_struct!(JSXClosingFragment, [span]);
138
139impl_struct!(SpreadElement, [dot3_token, expr]);
140
141impl_struct!(JSXExprContainer, [span, expr]);
142impl_struct!(JSXSpreadChild, [span, expr]);
143
144impl_struct!(JSXAttr, [span, name, value]);
145
146impl_enum!(
147 JSXAttrValue,
148 [Str, JSXExprContainer, JSXElement, JSXFragment]
149);
150
151impl_enum!(JSXAttrName, [Ident, JSXNamespacedName]);
152
153impl_enum!(JSXExpr, [Expr, JSXEmptyExpr]);
154
155impl_struct!(OptCall, [span, ctxt, callee, args, type_args]);
156
157impl_enum!(Callee, [Super, Import, Expr]);