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