• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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     _(ARROW_FUNCTION_EXPRESSION, ArrowFunctionExpression)            \
21     _(ASSERT_CLAUSE, AssertClause)                                   \
22     _(ASSERT_ENTRY, AssertEntry)                                     \
23     _(AWAIT_EXPRESSION, AwaitExpression)                             \
24     _(BIGINT_LITERAL, BigIntLiteral)                                 \
25     _(BINARY_EXPRESSION, BinaryExpression)                           \
26     _(BLOCK_STATEMENT, BlockStatement)                               \
27     _(BOOLEAN_LITERAL, BooleanLiteral)                               \
28     _(BREAK_STATEMENT, BreakStatement)                               \
29     _(CALL_EXPRESSION, CallExpression)                               \
30     _(CATCH_CLAUSE, CatchClause)                                     \
31     _(CHAIN_EXPRESSION, ChainExpression)                             \
32     _(CLASS_DEFINITION, ClassDefinition)                             \
33     _(CLASS_DECLARATION, ClassDeclaration)                           \
34     _(CLASS_EXPRESSION, ClassExpression)                             \
35     _(CLASS_PROPERTY, ClassProperty)                                 \
36     _(CLASS_STATIC_BLOCK, ClassStaticBlock)                          \
37     _(CONDITIONAL_EXPRESSION, ConditionalExpression)                 \
38     _(CONTINUE_STATEMENT, ContinueStatement)                         \
39     _(DEBUGGER_STATEMENT, DebuggerStatement)                         \
40     _(DECORATOR, Decorator)                                          \
41     _(DO_WHILE_STATEMENT, DoWhileStatement)                          \
42     _(EMPTY_STATEMENT, EmptyStatement)                               \
43     _(EXPORT_ALL_DECLARATION, ExportAllDeclaration)                  \
44     _(EXPORT_DEFAULT_DECLARATION, ExportDefaultDeclaration)          \
45     _(EXPORT_NAMED_DECLARATION, ExportNamedDeclaration)              \
46     _(EXPORT_SPECIFIER, ExportSpecifier)                             \
47     _(EXPRESSION_STATEMENT, ExpressionStatement)                     \
48     _(FOR_IN_STATEMENT, ForInStatement)                              \
49     _(FOR_OF_STATEMENT, ForOfStatement)                              \
50     _(FOR_UPDATE_STATEMENT, ForUpdateStatement)                      \
51     _(FUNCTION_DECLARATION, FunctionDeclaration)                     \
52     _(FUNCTION_EXPRESSION, FunctionExpression)                       \
53     _(IDENTIFIER, Identifier)                                        \
54     _(IF_STATEMENT, IfStatement)                                     \
55     _(IMPORT_DECLARATION, ImportDeclaration)                         \
56     _(IMPORT_EXPRESSION, ImportExpression)                           \
57     _(IMPORT_DEFAULT_SPECIFIER, ImportDefaultSpecifier)              \
58     _(IMPORT_NAMESPACE_SPECIFIER, ImportNamespaceSpecifier)          \
59     _(IMPORT_SPECIFIER, ImportSpecifier)                             \
60     _(LABELLED_STATEMENT, LabelledStatement)                         \
61     _(MEMBER_EXPRESSION, MemberExpression)                           \
62     _(META_PROPERTY_EXPRESSION, MetaProperty)                        \
63     _(METHOD_DEFINITION, MethodDefinition)                           \
64     _(NEW_EXPRESSION, NewExpression)                                 \
65     _(NULL_LITERAL, NullLiteral)                                     \
66     _(NUMBER_LITERAL, NumberLiteral)                                 \
67     _(OMITTED_EXPRESSION, OmittedExpression)                         \
68     _(PRIVATE_IDENTIFIER, PrivateIdentifier)                         \
69     _(PROPERTY, Property)                                            \
70     _(REGEXP_LITERAL, RegExpLiteral)                                 \
71     _(RETURN_STATEMENT, ReturnStatement)                             \
72     _(SCRIPT_FUNCTION, ScriptFunction)                               \
73     _(SEQUENCE_EXPRESSION, SequenceExpression)                       \
74     _(STRING_LITERAL, StringLiteral)                                 \
75     _(SUPER_EXPRESSION, SuperExpression)                             \
76     _(SWITCH_CASE_STATEMENT, SwitchCaseStatement)                    \
77     _(SWITCH_STATEMENT, SwitchStatement)                             \
78     _(TS_ENUM_DECLARATION, TSEnumDeclaration)                        \
79     _(TS_ENUM_MEMBER, TSEnumMember)                                  \
80     _(TS_EXTERNAL_MODULE_REFERENCE, TSExternalModuleReference)       \
81     _(TS_PRIVATE_IDENTIFIER, TSPrivateIdentifier)                    \
82     _(TS_NUMBER_KEYWORD, TSNumberKeyword)                            \
83     _(TS_ANY_KEYWORD, TSAnyKeyword)                                  \
84     _(TS_STRING_KEYWORD, TSStringKeyword)                            \
85     _(TS_SYMBOL_KEYWORD, TSSymbolKeyword)                            \
86     _(TS_BOOLEAN_KEYWORD, TSBooleanKeyword)                          \
87     _(TS_VOID_KEYWORD, TSVoidKeyword)                                \
88     _(TS_UNDEFINED_KEYWORD, TSUndefinedKeyword)                      \
89     _(TS_UNKNOWN_KEYWORD, TSUnknownKeyword)                          \
90     _(TS_OBJECT_KEYWORD, TSObjectKeyword)                            \
91     _(TS_BIGINT_KEYWORD, TSBigintKeyword)                            \
92     _(TS_NEVER_KEYWORD, TSNeverKeyword)                              \
93     _(TS_NON_NULL_EXPRESSION, TSNonNullExpression)                   \
94     _(TS_NULL_KEYWORD, TSNullKeyword)                                \
95     _(TS_OPTIONAL_TYPE, TSOptionalType)                              \
96     _(TS_REST_TYPE, TSRestType)                                      \
97     _(TS_ARRAY_TYPE, TSArrayType)                                    \
98     _(TS_UNION_TYPE, TSUnionType)                                    \
99     _(TS_TYPE_LITERAL, TSTypeLiteral)                                \
100     _(TS_PROPERTY_SIGNATURE, TSPropertySignature)                    \
101     _(TS_METHOD_SIGNATURE, TSMethodSignature)                        \
102     _(TS_SIGNATURE_DECLARATION, TSSignatureDeclaration)              \
103     _(TS_PARENT_TYPE, TSParenthesizedType)                           \
104     _(TS_LITERAL_TYPE, TSLiteralType)                                \
105     _(TS_TEMPLATE_LITERAL_TYPE, TSTemplateLiteralType)               \
106     _(TS_INFER_TYPE, TSInferType)                                    \
107     _(TS_CONDITIONAL_TYPE, TSConditionalType)                        \
108     _(TS_IMPORT_TYPE, TSImportType)                                  \
109     _(TS_INTERSECTION_TYPE, TSIntersectionType)                      \
110     _(TS_MAPPED_TYPE, TSMappedType)                                  \
111     _(TS_MODULE_BLOCK, TSModuleBlock)                                \
112     _(TS_THIS_TYPE, TSThisType)                                      \
113     _(TS_TYPE_OPERATOR, TSTypeOperator)                              \
114     _(TS_TYPE_PARAMETER, TSTypeParameter)                            \
115     _(TS_TYPE_PARAMETER_DECLARATION, TSTypeParameterDeclaration)     \
116     _(TS_TYPE_PARAMETER_INSTANTIATION, TSTypeParameterInstantiation) \
117     _(TS_TYPE_PREDICATE, TSTypePredicate)                            \
118     _(TS_PARAMETER_PROPERTY, TSParameterProperty)                    \
119     _(TS_MODULE_DECLARATION, TSModuleDeclaration)                    \
120     _(TS_IMPORT_EQUALS_DECLARATION, TSImportEqualsDeclaration)       \
121     _(TS_NAMESPACE_EXPORT_DECLARATION, TSNamespaceExportDeclaration) \
122     _(TS_FUNCTION_TYPE, TSFunctionType)                              \
123     _(TS_CONSTRUCTOR_TYPE, TSConstructorType)                        \
124     _(TS_TYPE_ALIAS_DECLARATION, TSTypeAliasDeclaration)             \
125     _(TS_TYPE_REFERENCE, TSTypeReference)                            \
126     _(TS_QUALIFIED_NAME, TSQualifiedName)                            \
127     _(TS_INDEXED_ACCESS_TYPE, TSIndexedAccessType)                   \
128     _(TS_INTERFACE_DECLARATION, TSInterfaceDeclaration)              \
129     _(TS_INTERFACE_BODY, TSInterfaceBody)                            \
130     _(TS_INTERFACE_HERITAGE, TSInterfaceHeritage)                    \
131     _(TS_TUPLE_TYPE, TSTupleType)                                    \
132     _(TS_NAMED_TUPLE_MEMBER, TSNamedTupleMember)                     \
133     _(TS_INDEX_SIGNATURE, TSIndexSignature)                          \
134     _(TS_TYPE_QUERY, TSTypeQuery)                                    \
135     _(TS_AS_EXPRESSION, TSAsExpression)                              \
136     _(TS_CLASS_IMPLEMENTS, TSClassImplements)                        \
137     _(TS_SATISFIES_EXPRESSION, TSSatisfiesExpression)                \
138     _(TS_TYPE_ASSERTION, TSTypeAssertion)                            \
139     _(TAGGED_TEMPLATE_EXPRESSION, TaggedTemplateExpression)          \
140     _(TAGGED_LITERAL, TaggedLiteral)                                 \
141     _(TEMPLATE_ELEMENT, TemplateElement)                             \
142     _(TEMPLATE_LITERAL, TemplateLiteral)                             \
143     _(THIS_EXPRESSION, ThisExpression)                               \
144     _(TYPE_ARGUMENTS_EXPRESSION, TypeArgumentsExpression)            \
145     _(THROW_STATEMENT, ThrowStatement)                               \
146     _(TRY_STATEMENT, TryStatement)                                   \
147     _(UNARY_EXPRESSION, UnaryExpression)                             \
148     _(UPDATE_EXPRESSION, UpdateExpression)                           \
149     _(VARIABLE_DECLARATION, VariableDeclaration)                     \
150     _(VARIABLE_DECLARATOR, VariableDeclarator)                       \
151     _(WHILE_STATEMENT, WhileStatement)                               \
152     _(WITH_STATEMENT, WithStatement)                                 \
153     _(YIELD_EXPRESSION, YieldExpression)
154 
155 #define AST_NODE_REINTERPRET_MAPPING(_)                                                   \
156     _(ARRAY_EXPRESSION, ARRAY_PATTERN, ArrayExpression, ArrayPattern)                     \
157     _(ASSIGNMENT_EXPRESSION, ASSIGNMENT_PATTERN, AssignmentExpression, AssignmentPattern) \
158     _(OBJECT_EXPRESSION, OBJECT_PATTERN, ObjectExpression, ObjectPattern)                 \
159     _(SPREAD_ELEMENT, REST_ELEMENT, SpreadElement, RestElement)
160 
161 #endif
162