13af6ab5fSopenharmony_ci/**
23af6ab5fSopenharmony_ci * Copyright (c) 2021-2024 Huawei Device Co., Ltd.
33af6ab5fSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
43af6ab5fSopenharmony_ci * you may not use this file except in compliance with the License.
53af6ab5fSopenharmony_ci * You may obtain a copy of the License at
63af6ab5fSopenharmony_ci *
73af6ab5fSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0
83af6ab5fSopenharmony_ci *
93af6ab5fSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
103af6ab5fSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
113af6ab5fSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
123af6ab5fSopenharmony_ci * See the License for the specific language governing permissions and
133af6ab5fSopenharmony_ci * limitations under the License.
143af6ab5fSopenharmony_ci */
153af6ab5fSopenharmony_ci
163af6ab5fSopenharmony_ci#ifndef ES2PANDA_IR_AST_NODE_MAPPING_H
173af6ab5fSopenharmony_ci#define ES2PANDA_IR_AST_NODE_MAPPING_H
183af6ab5fSopenharmony_ci
193af6ab5fSopenharmony_ci// NOLINTBEGIN(cppcoreguidelines-macro-usage)
203af6ab5fSopenharmony_ci#define AST_NODE_MAPPING(_)                                                               \
213af6ab5fSopenharmony_ci    _(ARROW_FUNCTION_EXPRESSION, ArrowFunctionExpression)                                 \
223af6ab5fSopenharmony_ci    _(ASSERT_STATEMENT, AssertStatement)                                                  \
233af6ab5fSopenharmony_ci    _(AWAIT_EXPRESSION, AwaitExpression)                                                  \
243af6ab5fSopenharmony_ci    _(BIGINT_LITERAL, BigIntLiteral)                                                      \
253af6ab5fSopenharmony_ci    _(BINARY_EXPRESSION, BinaryExpression)                                                \
263af6ab5fSopenharmony_ci    _(BLOCK_STATEMENT, BlockStatement)                                                    \
273af6ab5fSopenharmony_ci    _(BOOLEAN_LITERAL, BooleanLiteral)                                                    \
283af6ab5fSopenharmony_ci    _(BREAK_STATEMENT, BreakStatement)                                                    \
293af6ab5fSopenharmony_ci    _(CALL_EXPRESSION, CallExpression)                                                    \
303af6ab5fSopenharmony_ci    _(CATCH_CLAUSE, CatchClause)                                                          \
313af6ab5fSopenharmony_ci    _(CHAIN_EXPRESSION, ChainExpression)                                                  \
323af6ab5fSopenharmony_ci    _(CHAR_LITERAL, CharLiteral)                                                          \
333af6ab5fSopenharmony_ci    _(CLASS_DEFINITION, ClassDefinition)                                                  \
343af6ab5fSopenharmony_ci    _(CLASS_DECLARATION, ClassDeclaration)                                                \
353af6ab5fSopenharmony_ci    _(CLASS_EXPRESSION, ClassExpression)                                                  \
363af6ab5fSopenharmony_ci    _(CLASS_PROPERTY, ClassProperty)                                                      \
373af6ab5fSopenharmony_ci    _(CLASS_STATIC_BLOCK, ClassStaticBlock)                                               \
383af6ab5fSopenharmony_ci    _(CONDITIONAL_EXPRESSION, ConditionalExpression)                                      \
393af6ab5fSopenharmony_ci    _(CONTINUE_STATEMENT, ContinueStatement)                                              \
403af6ab5fSopenharmony_ci    _(DEBUGGER_STATEMENT, DebuggerStatement)                                              \
413af6ab5fSopenharmony_ci    _(DECORATOR, Decorator)                                                               \
423af6ab5fSopenharmony_ci    _(DIRECT_EVAL, DirectEvalExpression)                                                  \
433af6ab5fSopenharmony_ci    _(DO_WHILE_STATEMENT, DoWhileStatement)                                               \
443af6ab5fSopenharmony_ci    _(EMPTY_STATEMENT, EmptyStatement)                                                    \
453af6ab5fSopenharmony_ci    _(EXPORT_ALL_DECLARATION, ExportAllDeclaration)                                       \
463af6ab5fSopenharmony_ci    _(EXPORT_DEFAULT_DECLARATION, ExportDefaultDeclaration)                               \
473af6ab5fSopenharmony_ci    _(EXPORT_NAMED_DECLARATION, ExportNamedDeclaration)                                   \
483af6ab5fSopenharmony_ci    _(EXPORT_SPECIFIER, ExportSpecifier)                                                  \
493af6ab5fSopenharmony_ci    _(EXPRESSION_STATEMENT, ExpressionStatement)                                          \
503af6ab5fSopenharmony_ci    _(FOR_IN_STATEMENT, ForInStatement)                                                   \
513af6ab5fSopenharmony_ci    _(FOR_OF_STATEMENT, ForOfStatement)                                                   \
523af6ab5fSopenharmony_ci    _(FOR_UPDATE_STATEMENT, ForUpdateStatement)                                           \
533af6ab5fSopenharmony_ci    _(FUNCTION_DECLARATION, FunctionDeclaration)                                          \
543af6ab5fSopenharmony_ci    _(FUNCTION_EXPRESSION, FunctionExpression)                                            \
553af6ab5fSopenharmony_ci    _(IDENTIFIER, Identifier)                                                             \
563af6ab5fSopenharmony_ci    _(DUMMYNODE, DummyNode)                                                               \
573af6ab5fSopenharmony_ci    _(IF_STATEMENT, IfStatement)                                                          \
583af6ab5fSopenharmony_ci    _(IMPORT_DECLARATION, ImportDeclaration)                                              \
593af6ab5fSopenharmony_ci    _(IMPORT_EXPRESSION, ImportExpression)                                                \
603af6ab5fSopenharmony_ci    _(IMPORT_DEFAULT_SPECIFIER, ImportDefaultSpecifier)                                   \
613af6ab5fSopenharmony_ci    _(IMPORT_NAMESPACE_SPECIFIER, ImportNamespaceSpecifier)                               \
623af6ab5fSopenharmony_ci    _(IMPORT_SPECIFIER, ImportSpecifier)                                                  \
633af6ab5fSopenharmony_ci    _(LABELLED_STATEMENT, LabelledStatement)                                              \
643af6ab5fSopenharmony_ci    _(MEMBER_EXPRESSION, MemberExpression)                                                \
653af6ab5fSopenharmony_ci    _(META_PROPERTY_EXPRESSION, MetaProperty)                                             \
663af6ab5fSopenharmony_ci    _(METHOD_DEFINITION, MethodDefinition)                                                \
673af6ab5fSopenharmony_ci    _(NAMED_TYPE, NamedType)                                                              \
683af6ab5fSopenharmony_ci    _(NAMESPACE_DECLARATION, NamespaceDeclaration)                                        \
693af6ab5fSopenharmony_ci    _(NAMESPACE_DEFINITION, NamespaceDefinition)                                          \
703af6ab5fSopenharmony_ci    _(NEW_EXPRESSION, NewExpression)                                                      \
713af6ab5fSopenharmony_ci    _(NULL_LITERAL, NullLiteral)                                                          \
723af6ab5fSopenharmony_ci    _(UNDEFINED_LITERAL, UndefinedLiteral)                                                \
733af6ab5fSopenharmony_ci    _(NUMBER_LITERAL, NumberLiteral)                                                      \
743af6ab5fSopenharmony_ci    _(OMITTED_EXPRESSION, OmittedExpression)                                              \
753af6ab5fSopenharmony_ci    _(PREFIX_ASSERTION_EXPRESSION, PrefixAssertionExpression)                             \
763af6ab5fSopenharmony_ci    _(PROPERTY, Property)                                                                 \
773af6ab5fSopenharmony_ci    _(REGEXP_LITERAL, RegExpLiteral)                                                      \
783af6ab5fSopenharmony_ci    _(REEXPORT_STATEMENT, ETSReExportDeclaration)                                         \
793af6ab5fSopenharmony_ci    _(RETURN_STATEMENT, ReturnStatement)                                                  \
803af6ab5fSopenharmony_ci    _(SCRIPT_FUNCTION, ScriptFunction)                                                    \
813af6ab5fSopenharmony_ci    _(SEQUENCE_EXPRESSION, SequenceExpression)                                            \
823af6ab5fSopenharmony_ci    _(STRING_LITERAL, StringLiteral)                                                      \
833af6ab5fSopenharmony_ci    _(ETS_NULL_TYPE, ETSNullType)                                                         \
843af6ab5fSopenharmony_ci    _(ETS_UNDEFINED_TYPE, ETSUndefinedType)                                               \
853af6ab5fSopenharmony_ci    _(ETS_STRING_LITERAL_TYPE, ETSStringLiteralType)                                      \
863af6ab5fSopenharmony_ci    _(ETS_FUNCTION_TYPE, ETSFunctionType)                                                 \
873af6ab5fSopenharmony_ci    _(ETS_WILDCARD_TYPE, ETSWildcardType)                                                 \
883af6ab5fSopenharmony_ci    _(ETS_PRIMITIVE_TYPE, ETSPrimitiveType)                                               \
893af6ab5fSopenharmony_ci    _(ETS_PACKAGE_DECLARATION, ETSPackageDeclaration)                                     \
903af6ab5fSopenharmony_ci    _(ETS_CLASS_LITERAL, ETSClassLiteral)                                                 \
913af6ab5fSopenharmony_ci    _(ETS_TYPE_REFERENCE, ETSTypeReference)                                               \
923af6ab5fSopenharmony_ci    _(ETS_TYPE_REFERENCE_PART, ETSTypeReferencePart)                                      \
933af6ab5fSopenharmony_ci    _(ETS_UNION_TYPE, ETSUnionType)                                                       \
943af6ab5fSopenharmony_ci    _(ETS_LAUNCH_EXPRESSION, ETSLaunchExpression)                                         \
953af6ab5fSopenharmony_ci    _(ETS_NEW_ARRAY_INSTANCE_EXPRESSION, ETSNewArrayInstanceExpression)                   \
963af6ab5fSopenharmony_ci    _(ETS_NEW_MULTI_DIM_ARRAY_INSTANCE_EXPRESSION, ETSNewMultiDimArrayInstanceExpression) \
973af6ab5fSopenharmony_ci    _(ETS_NEW_CLASS_INSTANCE_EXPRESSION, ETSNewClassInstanceExpression)                   \
983af6ab5fSopenharmony_ci    _(ETS_IMPORT_DECLARATION, ETSImportDeclaration)                                       \
993af6ab5fSopenharmony_ci    _(ETS_PARAMETER_EXPRESSION, ETSParameterExpression)                                   \
1003af6ab5fSopenharmony_ci    _(ETS_TUPLE, ETSTuple)                                                                \
1013af6ab5fSopenharmony_ci    _(ETS_SCRIPT, ETSScript)                                                              \
1023af6ab5fSopenharmony_ci    _(SUPER_EXPRESSION, SuperExpression)                                                  \
1033af6ab5fSopenharmony_ci    _(STRUCT_DECLARATION, ETSStructDeclaration)                                           \
1043af6ab5fSopenharmony_ci    _(SWITCH_CASE_STATEMENT, SwitchCaseStatement)                                         \
1053af6ab5fSopenharmony_ci    _(SWITCH_STATEMENT, SwitchStatement)                                                  \
1063af6ab5fSopenharmony_ci    _(TS_ENUM_DECLARATION, TSEnumDeclaration)                                             \
1073af6ab5fSopenharmony_ci    _(TS_ENUM_MEMBER, TSEnumMember)                                                       \
1083af6ab5fSopenharmony_ci    _(TS_EXTERNAL_MODULE_REFERENCE, TSExternalModuleReference)                            \
1093af6ab5fSopenharmony_ci    _(TS_NUMBER_KEYWORD, TSNumberKeyword)                                                 \
1103af6ab5fSopenharmony_ci    _(TS_ANY_KEYWORD, TSAnyKeyword)                                                       \
1113af6ab5fSopenharmony_ci    _(TS_STRING_KEYWORD, TSStringKeyword)                                                 \
1123af6ab5fSopenharmony_ci    _(TS_BOOLEAN_KEYWORD, TSBooleanKeyword)                                               \
1133af6ab5fSopenharmony_ci    _(TS_VOID_KEYWORD, TSVoidKeyword)                                                     \
1143af6ab5fSopenharmony_ci    _(TS_UNDEFINED_KEYWORD, TSUndefinedKeyword)                                           \
1153af6ab5fSopenharmony_ci    _(TS_UNKNOWN_KEYWORD, TSUnknownKeyword)                                               \
1163af6ab5fSopenharmony_ci    _(TS_OBJECT_KEYWORD, TSObjectKeyword)                                                 \
1173af6ab5fSopenharmony_ci    _(TS_BIGINT_KEYWORD, TSBigintKeyword)                                                 \
1183af6ab5fSopenharmony_ci    _(TS_NEVER_KEYWORD, TSNeverKeyword)                                                   \
1193af6ab5fSopenharmony_ci    _(TS_NON_NULL_EXPRESSION, TSNonNullExpression)                                        \
1203af6ab5fSopenharmony_ci    _(TS_NULL_KEYWORD, TSNullKeyword)                                                     \
1213af6ab5fSopenharmony_ci    _(TS_ARRAY_TYPE, TSArrayType)                                                         \
1223af6ab5fSopenharmony_ci    _(TS_UNION_TYPE, TSUnionType)                                                         \
1233af6ab5fSopenharmony_ci    _(TS_TYPE_LITERAL, TSTypeLiteral)                                                     \
1243af6ab5fSopenharmony_ci    _(TS_PROPERTY_SIGNATURE, TSPropertySignature)                                         \
1253af6ab5fSopenharmony_ci    _(TS_METHOD_SIGNATURE, TSMethodSignature)                                             \
1263af6ab5fSopenharmony_ci    _(TS_SIGNATURE_DECLARATION, TSSignatureDeclaration)                                   \
1273af6ab5fSopenharmony_ci    _(TS_PARENT_TYPE, TSParenthesizedType)                                                \
1283af6ab5fSopenharmony_ci    _(TS_LITERAL_TYPE, TSLiteralType)                                                     \
1293af6ab5fSopenharmony_ci    _(TS_INFER_TYPE, TSInferType)                                                         \
1303af6ab5fSopenharmony_ci    _(TS_CONDITIONAL_TYPE, TSConditionalType)                                             \
1313af6ab5fSopenharmony_ci    _(TS_IMPORT_TYPE, TSImportType)                                                       \
1323af6ab5fSopenharmony_ci    _(TS_INTERSECTION_TYPE, TSIntersectionType)                                           \
1333af6ab5fSopenharmony_ci    _(TS_MAPPED_TYPE, TSMappedType)                                                       \
1343af6ab5fSopenharmony_ci    _(TS_MODULE_BLOCK, TSModuleBlock)                                                     \
1353af6ab5fSopenharmony_ci    _(TS_THIS_TYPE, TSThisType)                                                           \
1363af6ab5fSopenharmony_ci    _(TS_TYPE_OPERATOR, TSTypeOperator)                                                   \
1373af6ab5fSopenharmony_ci    _(TS_TYPE_PARAMETER, TSTypeParameter)                                                 \
1383af6ab5fSopenharmony_ci    _(TS_TYPE_PARAMETER_DECLARATION, TSTypeParameterDeclaration)                          \
1393af6ab5fSopenharmony_ci    _(TS_TYPE_PARAMETER_INSTANTIATION, TSTypeParameterInstantiation)                      \
1403af6ab5fSopenharmony_ci    _(TS_TYPE_PREDICATE, TSTypePredicate)                                                 \
1413af6ab5fSopenharmony_ci    _(TS_PARAMETER_PROPERTY, TSParameterProperty)                                         \
1423af6ab5fSopenharmony_ci    _(TS_MODULE_DECLARATION, TSModuleDeclaration)                                         \
1433af6ab5fSopenharmony_ci    _(TS_IMPORT_EQUALS_DECLARATION, TSImportEqualsDeclaration)                            \
1443af6ab5fSopenharmony_ci    _(TS_FUNCTION_TYPE, TSFunctionType)                                                   \
1453af6ab5fSopenharmony_ci    _(TS_CONSTRUCTOR_TYPE, TSConstructorType)                                             \
1463af6ab5fSopenharmony_ci    _(TS_TYPE_ALIAS_DECLARATION, TSTypeAliasDeclaration)                                  \
1473af6ab5fSopenharmony_ci    _(TS_TYPE_REFERENCE, TSTypeReference)                                                 \
1483af6ab5fSopenharmony_ci    _(TS_QUALIFIED_NAME, TSQualifiedName)                                                 \
1493af6ab5fSopenharmony_ci    _(TS_INDEXED_ACCESS_TYPE, TSIndexedAccessType)                                        \
1503af6ab5fSopenharmony_ci    _(TS_INTERFACE_DECLARATION, TSInterfaceDeclaration)                                   \
1513af6ab5fSopenharmony_ci    _(TS_INTERFACE_BODY, TSInterfaceBody)                                                 \
1523af6ab5fSopenharmony_ci    _(TS_INTERFACE_HERITAGE, TSInterfaceHeritage)                                         \
1533af6ab5fSopenharmony_ci    _(TS_TUPLE_TYPE, TSTupleType)                                                         \
1543af6ab5fSopenharmony_ci    _(TS_NAMED_TUPLE_MEMBER, TSNamedTupleMember)                                          \
1553af6ab5fSopenharmony_ci    _(TS_INDEX_SIGNATURE, TSIndexSignature)                                               \
1563af6ab5fSopenharmony_ci    _(TS_TYPE_QUERY, TSTypeQuery)                                                         \
1573af6ab5fSopenharmony_ci    _(TS_AS_EXPRESSION, TSAsExpression)                                                   \
1583af6ab5fSopenharmony_ci    _(TS_CLASS_IMPLEMENTS, TSClassImplements)                                             \
1593af6ab5fSopenharmony_ci    _(TS_TYPE_ASSERTION, TSTypeAssertion)                                                 \
1603af6ab5fSopenharmony_ci    _(TAGGED_TEMPLATE_EXPRESSION, TaggedTemplateExpression)                               \
1613af6ab5fSopenharmony_ci    _(TEMPLATE_ELEMENT, TemplateElement)                                                  \
1623af6ab5fSopenharmony_ci    _(TEMPLATE_LITERAL, TemplateLiteral)                                                  \
1633af6ab5fSopenharmony_ci    _(THIS_EXPRESSION, ThisExpression)                                                    \
1643af6ab5fSopenharmony_ci    _(TYPEOF_EXPRESSION, TypeofExpression)                                                \
1653af6ab5fSopenharmony_ci    _(THROW_STATEMENT, ThrowStatement)                                                    \
1663af6ab5fSopenharmony_ci    _(TRY_STATEMENT, TryStatement)                                                        \
1673af6ab5fSopenharmony_ci    _(UNARY_EXPRESSION, UnaryExpression)                                                  \
1683af6ab5fSopenharmony_ci    _(UPDATE_EXPRESSION, UpdateExpression)                                                \
1693af6ab5fSopenharmony_ci    _(VARIABLE_DECLARATION, VariableDeclaration)                                          \
1703af6ab5fSopenharmony_ci    _(VARIABLE_DECLARATOR, VariableDeclarator)                                            \
1713af6ab5fSopenharmony_ci    _(WHILE_STATEMENT, WhileStatement)                                                    \
1723af6ab5fSopenharmony_ci    _(YIELD_EXPRESSION, YieldExpression)                                                  \
1733af6ab5fSopenharmony_ci    _(OPAQUE_TYPE_NODE, OpaqueTypeNode)                                                   \
1743af6ab5fSopenharmony_ci    _(BLOCK_EXPRESSION, BlockExpression)
1753af6ab5fSopenharmony_ci
1763af6ab5fSopenharmony_ci#define AST_NODE_REINTERPRET_MAPPING(_)                                                   \
1773af6ab5fSopenharmony_ci    _(ARRAY_EXPRESSION, ARRAY_PATTERN, ArrayExpression, ArrayPattern)                     \
1783af6ab5fSopenharmony_ci    _(ASSIGNMENT_EXPRESSION, ASSIGNMENT_PATTERN, AssignmentExpression, AssignmentPattern) \
1793af6ab5fSopenharmony_ci    _(OBJECT_EXPRESSION, OBJECT_PATTERN, ObjectExpression, ObjectPattern)                 \
1803af6ab5fSopenharmony_ci    _(SPREAD_ELEMENT, REST_ELEMENT, SpreadElement, RestElement)
1813af6ab5fSopenharmony_ci// NOLINTEND(cppcoreguidelines-macro-usage)
1823af6ab5fSopenharmony_ci
1833af6ab5fSopenharmony_ci#endif
184