1/**
2 * Copyright (c) 2021-2022 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16#ifndef ES2PANDA_IR_AST_NODE_MAPPING_H
17#define ES2PANDA_IR_AST_NODE_MAPPING_H
18
19#define AST_NODE_MAPPING(_)                                          \
20    _(ANNOTATION, Annotation)                                        \
21    _(ARROW_FUNCTION_EXPRESSION, ArrowFunctionExpression)            \
22    _(ASSERT_CLAUSE, AssertClause)                                   \
23    _(ASSERT_ENTRY, AssertEntry)                                     \
24    _(AWAIT_EXPRESSION, AwaitExpression)                             \
25    _(BIGINT_LITERAL, BigIntLiteral)                                 \
26    _(BINARY_EXPRESSION, BinaryExpression)                           \
27    _(BLOCK_STATEMENT, BlockStatement)                               \
28    _(BOOLEAN_LITERAL, BooleanLiteral)                               \
29    _(BREAK_STATEMENT, BreakStatement)                               \
30    _(CALL_EXPRESSION, CallExpression)                               \
31    _(CATCH_CLAUSE, CatchClause)                                     \
32    _(CHAIN_EXPRESSION, ChainExpression)                             \
33    _(CLASS_DEFINITION, ClassDefinition)                             \
34    _(CLASS_DECLARATION, ClassDeclaration)                           \
35    _(CLASS_EXPRESSION, ClassExpression)                             \
36    _(CLASS_PROPERTY, ClassProperty)                                 \
37    _(CLASS_STATIC_BLOCK, ClassStaticBlock)                          \
38    _(CONDITIONAL_EXPRESSION, ConditionalExpression)                 \
39    _(CONTINUE_STATEMENT, ContinueStatement)                         \
40    _(DEBUGGER_STATEMENT, DebuggerStatement)                         \
41    _(DECORATOR, Decorator)                                          \
42    _(DO_WHILE_STATEMENT, DoWhileStatement)                          \
43    _(EMPTY_STATEMENT, EmptyStatement)                               \
44    _(EXPORT_ALL_DECLARATION, ExportAllDeclaration)                  \
45    _(EXPORT_DEFAULT_DECLARATION, ExportDefaultDeclaration)          \
46    _(EXPORT_NAMED_DECLARATION, ExportNamedDeclaration)              \
47    _(EXPORT_SPECIFIER, ExportSpecifier)                             \
48    _(EXPRESSION_STATEMENT, ExpressionStatement)                     \
49    _(FOR_IN_STATEMENT, ForInStatement)                              \
50    _(FOR_OF_STATEMENT, ForOfStatement)                              \
51    _(FOR_UPDATE_STATEMENT, ForUpdateStatement)                      \
52    _(FUNCTION_DECLARATION, FunctionDeclaration)                     \
53    _(FUNCTION_EXPRESSION, FunctionExpression)                       \
54    _(IDENTIFIER, Identifier)                                        \
55    _(IF_STATEMENT, IfStatement)                                     \
56    _(IMPORT_DECLARATION, ImportDeclaration)                         \
57    _(IMPORT_EXPRESSION, ImportExpression)                           \
58    _(IMPORT_DEFAULT_SPECIFIER, ImportDefaultSpecifier)              \
59    _(IMPORT_NAMESPACE_SPECIFIER, ImportNamespaceSpecifier)          \
60    _(IMPORT_SPECIFIER, ImportSpecifier)                             \
61    _(LABELLED_STATEMENT, LabelledStatement)                         \
62    _(MEMBER_EXPRESSION, MemberExpression)                           \
63    _(META_PROPERTY_EXPRESSION, MetaProperty)                        \
64    _(METHOD_DEFINITION, MethodDefinition)                           \
65    _(NEW_EXPRESSION, NewExpression)                                 \
66    _(NULL_LITERAL, NullLiteral)                                     \
67    _(NUMBER_LITERAL, NumberLiteral)                                 \
68    _(OMITTED_EXPRESSION, OmittedExpression)                         \
69    _(PRIVATE_IDENTIFIER, PrivateIdentifier)                         \
70    _(PROPERTY, Property)                                            \
71    _(REGEXP_LITERAL, RegExpLiteral)                                 \
72    _(RETURN_STATEMENT, ReturnStatement)                             \
73    _(SCRIPT_FUNCTION, ScriptFunction)                               \
74    _(SEQUENCE_EXPRESSION, SequenceExpression)                       \
75    _(STRING_LITERAL, StringLiteral)                                 \
76    _(SUPER_EXPRESSION, SuperExpression)                             \
77    _(SWITCH_CASE_STATEMENT, SwitchCaseStatement)                    \
78    _(SWITCH_STATEMENT, SwitchStatement)                             \
79    _(TS_ENUM_DECLARATION, TSEnumDeclaration)                        \
80    _(TS_ENUM_MEMBER, TSEnumMember)                                  \
81    _(TS_EXTERNAL_MODULE_REFERENCE, TSExternalModuleReference)       \
82    _(TS_PRIVATE_IDENTIFIER, TSPrivateIdentifier)                    \
83    _(TS_NUMBER_KEYWORD, TSNumberKeyword)                            \
84    _(TS_ANY_KEYWORD, TSAnyKeyword)                                  \
85    _(TS_STRING_KEYWORD, TSStringKeyword)                            \
86    _(TS_SYMBOL_KEYWORD, TSSymbolKeyword)                            \
87    _(TS_BOOLEAN_KEYWORD, TSBooleanKeyword)                          \
88    _(TS_VOID_KEYWORD, TSVoidKeyword)                                \
89    _(TS_UNDEFINED_KEYWORD, TSUndefinedKeyword)                      \
90    _(TS_UNKNOWN_KEYWORD, TSUnknownKeyword)                          \
91    _(TS_OBJECT_KEYWORD, TSObjectKeyword)                            \
92    _(TS_BIGINT_KEYWORD, TSBigintKeyword)                            \
93    _(TS_NEVER_KEYWORD, TSNeverKeyword)                              \
94    _(TS_NON_NULL_EXPRESSION, TSNonNullExpression)                   \
95    _(TS_NULL_KEYWORD, TSNullKeyword)                                \
96    _(TS_OPTIONAL_TYPE, TSOptionalType)                              \
97    _(TS_REST_TYPE, TSRestType)                                      \
98    _(TS_ARRAY_TYPE, TSArrayType)                                    \
99    _(TS_UNION_TYPE, TSUnionType)                                    \
100    _(TS_TYPE_LITERAL, TSTypeLiteral)                                \
101    _(TS_PROPERTY_SIGNATURE, TSPropertySignature)                    \
102    _(TS_METHOD_SIGNATURE, TSMethodSignature)                        \
103    _(TS_SIGNATURE_DECLARATION, TSSignatureDeclaration)              \
104    _(TS_PARENT_TYPE, TSParenthesizedType)                           \
105    _(TS_LITERAL_TYPE, TSLiteralType)                                \
106    _(TS_TEMPLATE_LITERAL_TYPE, TSTemplateLiteralType)               \
107    _(TS_INFER_TYPE, TSInferType)                                    \
108    _(TS_CONDITIONAL_TYPE, TSConditionalType)                        \
109    _(TS_IMPORT_TYPE, TSImportType)                                  \
110    _(TS_INTERSECTION_TYPE, TSIntersectionType)                      \
111    _(TS_MAPPED_TYPE, TSMappedType)                                  \
112    _(TS_MODULE_BLOCK, TSModuleBlock)                                \
113    _(TS_THIS_TYPE, TSThisType)                                      \
114    _(TS_TYPE_OPERATOR, TSTypeOperator)                              \
115    _(TS_TYPE_PARAMETER, TSTypeParameter)                            \
116    _(TS_TYPE_PARAMETER_DECLARATION, TSTypeParameterDeclaration)     \
117    _(TS_TYPE_PARAMETER_INSTANTIATION, TSTypeParameterInstantiation) \
118    _(TS_TYPE_PREDICATE, TSTypePredicate)                            \
119    _(TS_PARAMETER_PROPERTY, TSParameterProperty)                    \
120    _(TS_MODULE_DECLARATION, TSModuleDeclaration)                    \
121    _(TS_IMPORT_EQUALS_DECLARATION, TSImportEqualsDeclaration)       \
122    _(TS_NAMESPACE_EXPORT_DECLARATION, TSNamespaceExportDeclaration) \
123    _(TS_FUNCTION_TYPE, TSFunctionType)                              \
124    _(TS_CONSTRUCTOR_TYPE, TSConstructorType)                        \
125    _(TS_TYPE_ALIAS_DECLARATION, TSTypeAliasDeclaration)             \
126    _(TS_TYPE_REFERENCE, TSTypeReference)                            \
127    _(TS_QUALIFIED_NAME, TSQualifiedName)                            \
128    _(TS_INDEXED_ACCESS_TYPE, TSIndexedAccessType)                   \
129    _(TS_INTERFACE_DECLARATION, TSInterfaceDeclaration)              \
130    _(TS_INTERFACE_BODY, TSInterfaceBody)                            \
131    _(TS_INTERFACE_HERITAGE, TSInterfaceHeritage)                    \
132    _(TS_TUPLE_TYPE, TSTupleType)                                    \
133    _(TS_NAMED_TUPLE_MEMBER, TSNamedTupleMember)                     \
134    _(TS_INDEX_SIGNATURE, TSIndexSignature)                          \
135    _(TS_TYPE_QUERY, TSTypeQuery)                                    \
136    _(TS_AS_EXPRESSION, TSAsExpression)                              \
137    _(TS_CLASS_IMPLEMENTS, TSClassImplements)                        \
138    _(TS_SATISFIES_EXPRESSION, TSSatisfiesExpression)                \
139    _(TS_TYPE_ASSERTION, TSTypeAssertion)                            \
140    _(TAGGED_TEMPLATE_EXPRESSION, TaggedTemplateExpression)          \
141    _(TAGGED_LITERAL, TaggedLiteral)                                 \
142    _(TEMPLATE_ELEMENT, TemplateElement)                             \
143    _(TEMPLATE_LITERAL, TemplateLiteral)                             \
144    _(THIS_EXPRESSION, ThisExpression)                               \
145    _(TYPE_ARGUMENTS_EXPRESSION, TypeArgumentsExpression)            \
146    _(THROW_STATEMENT, ThrowStatement)                               \
147    _(TRY_STATEMENT, TryStatement)                                   \
148    _(UNARY_EXPRESSION, UnaryExpression)                             \
149    _(UPDATE_EXPRESSION, UpdateExpression)                           \
150    _(VARIABLE_DECLARATION, VariableDeclaration)                     \
151    _(VARIABLE_DECLARATOR, VariableDeclarator)                       \
152    _(WHILE_STATEMENT, WhileStatement)                               \
153    _(WITH_STATEMENT, WithStatement)                                 \
154    _(YIELD_EXPRESSION, YieldExpression)
155
156#define AST_NODE_REINTERPRET_MAPPING(_)                                                   \
157    _(ARRAY_EXPRESSION, ARRAY_PATTERN, ArrayExpression, ArrayPattern)                     \
158    _(ASSIGNMENT_EXPRESSION, ASSIGNMENT_PATTERN, AssignmentExpression, AssignmentPattern) \
159    _(OBJECT_EXPRESSION, OBJECT_PATTERN, ObjectExpression, ObjectPattern)                 \
160    _(SPREAD_ELEMENT, REST_ELEMENT, SpreadElement, RestElement)
161
162#endif
163