• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /**
2  * Copyright (c) 2021-2025 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 // CC-OFFNXT(G.PRE.06) solid logic
20 // NOLINTBEGIN(cppcoreguidelines-macro-usage)
21 #define AST_NODE_MAPPING(_)                                                               \
22     _(ARROW_FUNCTION_EXPRESSION, ArrowFunctionExpression)                                 \
23     _(ANNOTATION_DECLARATION, AnnotationDeclaration)                                      \
24     _(ANNOTATION_USAGE, AnnotationUsage)                                                  \
25     _(ASSERT_STATEMENT, AssertStatement)                                                  \
26     _(AWAIT_EXPRESSION, AwaitExpression)                                                  \
27     _(BIGINT_LITERAL, BigIntLiteral)                                                      \
28     _(BINARY_EXPRESSION, BinaryExpression)                                                \
29     _(BLOCK_STATEMENT, BlockStatement)                                                    \
30     _(BOOLEAN_LITERAL, BooleanLiteral)                                                    \
31     _(BREAK_STATEMENT, BreakStatement)                                                    \
32     _(CALL_EXPRESSION, CallExpression)                                                    \
33     _(CATCH_CLAUSE, CatchClause)                                                          \
34     _(CHAIN_EXPRESSION, ChainExpression)                                                  \
35     _(CHAR_LITERAL, CharLiteral)                                                          \
36     _(CLASS_DEFINITION, ClassDefinition)                                                  \
37     _(CLASS_DECLARATION, ClassDeclaration)                                                \
38     _(CLASS_EXPRESSION, ClassExpression)                                                  \
39     _(CLASS_PROPERTY, ClassProperty)                                                      \
40     _(CLASS_STATIC_BLOCK, ClassStaticBlock)                                               \
41     _(CONDITIONAL_EXPRESSION, ConditionalExpression)                                      \
42     _(CONTINUE_STATEMENT, ContinueStatement)                                              \
43     _(DEBUGGER_STATEMENT, DebuggerStatement)                                              \
44     _(DECORATOR, Decorator)                                                               \
45     _(DIRECT_EVAL, DirectEvalExpression)                                                  \
46     _(DO_WHILE_STATEMENT, DoWhileStatement)                                               \
47     _(EMPTY_STATEMENT, EmptyStatement)                                                    \
48     _(EXPORT_ALL_DECLARATION, ExportAllDeclaration)                                       \
49     _(EXPORT_DEFAULT_DECLARATION, ExportDefaultDeclaration)                               \
50     _(EXPORT_NAMED_DECLARATION, ExportNamedDeclaration)                                   \
51     _(EXPORT_SPECIFIER, ExportSpecifier)                                                  \
52     _(EXPRESSION_STATEMENT, ExpressionStatement)                                          \
53     _(FOR_IN_STATEMENT, ForInStatement)                                                   \
54     _(FOR_OF_STATEMENT, ForOfStatement)                                                   \
55     _(FOR_UPDATE_STATEMENT, ForUpdateStatement)                                           \
56     _(FUNCTION_DECLARATION, FunctionDeclaration)                                          \
57     _(FUNCTION_EXPRESSION, FunctionExpression)                                            \
58     _(IDENTIFIER, Identifier)                                                             \
59     _(DUMMYNODE, DummyNode)                                                               \
60     _(IF_STATEMENT, IfStatement)                                                          \
61     _(IMPORT_DECLARATION, ImportDeclaration)                                              \
62     _(IMPORT_EXPRESSION, ImportExpression)                                                \
63     _(IMPORT_DEFAULT_SPECIFIER, ImportDefaultSpecifier)                                   \
64     _(IMPORT_NAMESPACE_SPECIFIER, ImportNamespaceSpecifier)                               \
65     _(IMPORT_SPECIFIER, ImportSpecifier)                                                  \
66     _(LABELLED_STATEMENT, LabelledStatement)                                              \
67     _(MEMBER_EXPRESSION, MemberExpression)                                                \
68     _(META_PROPERTY_EXPRESSION, MetaProperty)                                             \
69     _(METHOD_DEFINITION, MethodDefinition)                                                \
70     _(NAMED_TYPE, NamedType)                                                              \
71     _(NEW_EXPRESSION, NewExpression)                                                      \
72     _(NULL_LITERAL, NullLiteral)                                                          \
73     _(UNDEFINED_LITERAL, UndefinedLiteral)                                                \
74     _(NUMBER_LITERAL, NumberLiteral)                                                      \
75     _(OMITTED_EXPRESSION, OmittedExpression)                                              \
76     _(PREFIX_ASSERTION_EXPRESSION, PrefixAssertionExpression)                             \
77     _(PROPERTY, Property)                                                                 \
78     _(REGEXP_LITERAL, RegExpLiteral)                                                      \
79     _(REEXPORT_STATEMENT, ETSReExportDeclaration)                                         \
80     _(RETURN_STATEMENT, ReturnStatement)                                                  \
81     _(SCRIPT_FUNCTION, ScriptFunction)                                                    \
82     _(SEQUENCE_EXPRESSION, SequenceExpression)                                            \
83     _(STRING_LITERAL, StringLiteral)                                                      \
84     _(ETS_NON_NULLISH_TYPE, ETSNonNullishTypeNode)                                        \
85     _(ETS_NULL_TYPE, ETSNullType)                                                         \
86     _(ETS_UNDEFINED_TYPE, ETSUndefinedType)                                               \
87     _(ETS_NEVER_TYPE, ETSNeverType)                                                       \
88     _(ETS_STRING_LITERAL_TYPE, ETSStringLiteralType)                                      \
89     _(ETS_FUNCTION_TYPE, ETSFunctionType)                                                 \
90     _(ETS_WILDCARD_TYPE, ETSWildcardType)                                                 \
91     _(ETS_PRIMITIVE_TYPE, ETSPrimitiveType)                                               \
92     _(ETS_PACKAGE_DECLARATION, ETSPackageDeclaration)                                     \
93     _(ETS_CLASS_LITERAL, ETSClassLiteral)                                                 \
94     _(ETS_TYPE_REFERENCE, ETSTypeReference)                                               \
95     _(ETS_TYPE_REFERENCE_PART, ETSTypeReferencePart)                                      \
96     _(ETS_UNION_TYPE, ETSUnionType)                                                       \
97     _(ETS_KEYOF_TYPE, ETSKeyofType)                                                       \
98     _(ETS_NEW_ARRAY_INSTANCE_EXPRESSION, ETSNewArrayInstanceExpression)                   \
99     _(ETS_NEW_MULTI_DIM_ARRAY_INSTANCE_EXPRESSION, ETSNewMultiDimArrayInstanceExpression) \
100     _(ETS_NEW_CLASS_INSTANCE_EXPRESSION, ETSNewClassInstanceExpression)                   \
101     _(ETS_IMPORT_DECLARATION, ETSImportDeclaration)                                       \
102     _(ETS_PARAMETER_EXPRESSION, ETSParameterExpression)                                   \
103     _(ETS_TUPLE, ETSTuple)                                                                \
104     _(ETS_MODULE, ETSModule)                                                              \
105     _(SUPER_EXPRESSION, SuperExpression)                                                  \
106     _(STRUCT_DECLARATION, ETSStructDeclaration)                                           \
107     _(SWITCH_CASE_STATEMENT, SwitchCaseStatement)                                         \
108     _(SWITCH_STATEMENT, SwitchStatement)                                                  \
109     _(TS_ENUM_DECLARATION, TSEnumDeclaration)                                             \
110     _(TS_ENUM_MEMBER, TSEnumMember)                                                       \
111     _(TS_EXTERNAL_MODULE_REFERENCE, TSExternalModuleReference)                            \
112     _(TS_NUMBER_KEYWORD, TSNumberKeyword)                                                 \
113     _(TS_ANY_KEYWORD, TSAnyKeyword)                                                       \
114     _(TS_STRING_KEYWORD, TSStringKeyword)                                                 \
115     _(TS_BOOLEAN_KEYWORD, TSBooleanKeyword)                                               \
116     _(TS_VOID_KEYWORD, TSVoidKeyword)                                                     \
117     _(TS_UNDEFINED_KEYWORD, TSUndefinedKeyword)                                           \
118     _(TS_UNKNOWN_KEYWORD, TSUnknownKeyword)                                               \
119     _(TS_OBJECT_KEYWORD, TSObjectKeyword)                                                 \
120     _(TS_BIGINT_KEYWORD, TSBigintKeyword)                                                 \
121     _(TS_NEVER_KEYWORD, TSNeverKeyword)                                                   \
122     _(TS_NON_NULL_EXPRESSION, TSNonNullExpression)                                        \
123     _(TS_NULL_KEYWORD, TSNullKeyword)                                                     \
124     _(TS_ARRAY_TYPE, TSArrayType)                                                         \
125     _(TS_UNION_TYPE, TSUnionType)                                                         \
126     _(TS_TYPE_LITERAL, TSTypeLiteral)                                                     \
127     _(TS_PROPERTY_SIGNATURE, TSPropertySignature)                                         \
128     _(TS_METHOD_SIGNATURE, TSMethodSignature)                                             \
129     _(TS_SIGNATURE_DECLARATION, TSSignatureDeclaration)                                   \
130     _(TS_PARENT_TYPE, TSParenthesizedType)                                                \
131     _(TS_LITERAL_TYPE, TSLiteralType)                                                     \
132     _(TS_INFER_TYPE, TSInferType)                                                         \
133     _(TS_CONDITIONAL_TYPE, TSConditionalType)                                             \
134     _(TS_IMPORT_TYPE, TSImportType)                                                       \
135     _(TS_INTERSECTION_TYPE, TSIntersectionType)                                           \
136     _(TS_MAPPED_TYPE, TSMappedType)                                                       \
137     _(TS_MODULE_BLOCK, TSModuleBlock)                                                     \
138     _(TS_THIS_TYPE, TSThisType)                                                           \
139     _(TS_TYPE_OPERATOR, TSTypeOperator)                                                   \
140     _(TS_TYPE_PARAMETER, TSTypeParameter)                                                 \
141     _(TS_TYPE_PARAMETER_DECLARATION, TSTypeParameterDeclaration)                          \
142     _(TS_TYPE_PARAMETER_INSTANTIATION, TSTypeParameterInstantiation)                      \
143     _(TS_TYPE_PREDICATE, TSTypePredicate)                                                 \
144     _(TS_PARAMETER_PROPERTY, TSParameterProperty)                                         \
145     _(TS_MODULE_DECLARATION, TSModuleDeclaration)                                         \
146     _(TS_IMPORT_EQUALS_DECLARATION, TSImportEqualsDeclaration)                            \
147     _(TS_FUNCTION_TYPE, TSFunctionType)                                                   \
148     _(TS_CONSTRUCTOR_TYPE, TSConstructorType)                                             \
149     _(TS_TYPE_ALIAS_DECLARATION, TSTypeAliasDeclaration)                                  \
150     _(TS_TYPE_REFERENCE, TSTypeReference)                                                 \
151     _(TS_QUALIFIED_NAME, TSQualifiedName)                                                 \
152     _(TS_INDEXED_ACCESS_TYPE, TSIndexedAccessType)                                        \
153     _(TS_INTERFACE_DECLARATION, TSInterfaceDeclaration)                                   \
154     _(TS_INTERFACE_BODY, TSInterfaceBody)                                                 \
155     _(TS_INTERFACE_HERITAGE, TSInterfaceHeritage)                                         \
156     _(TS_TUPLE_TYPE, TSTupleType)                                                         \
157     _(TS_NAMED_TUPLE_MEMBER, TSNamedTupleMember)                                          \
158     _(TS_INDEX_SIGNATURE, TSIndexSignature)                                               \
159     _(TS_TYPE_QUERY, TSTypeQuery)                                                         \
160     _(TS_AS_EXPRESSION, TSAsExpression)                                                   \
161     _(TS_CLASS_IMPLEMENTS, TSClassImplements)                                             \
162     _(TS_TYPE_ASSERTION, TSTypeAssertion)                                                 \
163     _(TAGGED_TEMPLATE_EXPRESSION, TaggedTemplateExpression)                               \
164     _(TEMPLATE_ELEMENT, TemplateElement)                                                  \
165     _(TEMPLATE_LITERAL, TemplateLiteral)                                                  \
166     _(THIS_EXPRESSION, ThisExpression)                                                    \
167     _(TYPEOF_EXPRESSION, TypeofExpression)                                                \
168     _(THROW_STATEMENT, ThrowStatement)                                                    \
169     _(TRY_STATEMENT, TryStatement)                                                        \
170     _(UNARY_EXPRESSION, UnaryExpression)                                                  \
171     _(UPDATE_EXPRESSION, UpdateExpression)                                                \
172     _(VARIABLE_DECLARATION, VariableDeclaration)                                          \
173     _(VARIABLE_DECLARATOR, VariableDeclarator)                                            \
174     _(WHILE_STATEMENT, WhileStatement)                                                    \
175     _(YIELD_EXPRESSION, YieldExpression)                                                  \
176     _(OPAQUE_TYPE_NODE, OpaqueTypeNode)                                                   \
177     _(BLOCK_EXPRESSION, BlockExpression)                                                  \
178     _(BROKEN_TYPE_NODE, BrokenTypeNode)
179 
180 #define AST_NODE_REINTERPRET_MAPPING(_)                                                   \
181     _(ARRAY_EXPRESSION, ARRAY_PATTERN, ArrayExpression, ArrayPattern)                     \
182     _(ASSIGNMENT_EXPRESSION, ASSIGNMENT_PATTERN, AssignmentExpression, AssignmentPattern) \
183     _(OBJECT_EXPRESSION, OBJECT_PATTERN, ObjectExpression, ObjectPattern)                 \
184     _(SPREAD_ELEMENT, REST_ELEMENT, SpreadElement, RestElement)
185 // NOLINTEND(cppcoreguidelines-macro-usage)
186 
187 #endif
188