swc_ecma_quote_macros/ast/
expr.rs

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]);