swc_ecma_quote_macros/ast/
enums.rs1use swc_ecma_ast::*;
2use syn::parse_quote;
3
4macro_rules! impl_simple_enum {
5 ($E:ident, [ $($v:ident),* ]) => {
6 impl crate::ast::ToCode for $E {
7 fn to_code(&self, _: &crate::ctxt::Ctx) -> syn::Expr {
8 match self {
9 $(
10 $E::$v => parse_quote!(
11 swc_core::ecma::ast::$E::$v
12 ),
13 )*
14 #[cfg(swc_ast_unknown)]
15 _ => panic!("unable to access unknown nodes"),
16 }
17 }
18 }
19 };
20}
21
22impl_simple_enum!(VarDeclKind, [Var, Const, Let]);
23impl_simple_enum!(UnaryOp, [Minus, Plus, Bang, Tilde, TypeOf, Void, Delete]);
24impl_simple_enum!(UpdateOp, [PlusPlus, MinusMinus]);
25impl_simple_enum!(
26 AssignOp,
27 [
28 Assign,
29 AddAssign,
30 SubAssign,
31 MulAssign,
32 DivAssign,
33 ModAssign,
34 LShiftAssign,
35 RShiftAssign,
36 ZeroFillRShiftAssign,
37 BitOrAssign,
38 BitXorAssign,
39 BitAndAssign,
40 ExpAssign,
41 AndAssign,
42 OrAssign,
43 NullishAssign
44 ]
45);
46impl_simple_enum!(
47 BinaryOp,
48 [
49 EqEq,
50 NotEq,
51 EqEqEq,
52 NotEqEq,
53 Lt,
54 LtEq,
55 Gt,
56 GtEq,
57 LShift,
58 RShift,
59 ZeroFillRShift,
60 Add,
61 Sub,
62 Mul,
63 Div,
64 Mod,
65 BitOr,
66 BitXor,
67 BitAnd,
68 LogicalOr,
69 LogicalAnd,
70 In,
71 InstanceOf,
72 Exp,
73 NullishCoalescing
74 ]
75);
76
77impl_simple_enum!(Accessibility, [Public, Protected, Private]);
78impl_simple_enum!(MethodKind, [Method, Getter, Setter]);
79impl_simple_enum!(MetaPropKind, [NewTarget, ImportMeta]);
80impl_simple_enum!(ImportPhase, [Defer, Source, Evaluation]);