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 _(NEW_EXPRESSION, NewExpression) \ 69 _(NULL_LITERAL, NullLiteral) \ 70 _(UNDEFINED_LITERAL, UndefinedLiteral) \ 71 _(NUMBER_LITERAL, NumberLiteral) \ 72 _(OMITTED_EXPRESSION, OmittedExpression) \ 73 _(PREFIX_ASSERTION_EXPRESSION, PrefixAssertionExpression) \ 74 _(PROPERTY, Property) \ 75 _(REGEXP_LITERAL, RegExpLiteral) \ 76 _(REEXPORT_STATEMENT, ETSReExportDeclaration) \ 77 _(RETURN_STATEMENT, ReturnStatement) \ 78 _(SCRIPT_FUNCTION, ScriptFunction) \ 79 _(SEQUENCE_EXPRESSION, SequenceExpression) \ 80 _(STRING_LITERAL, StringLiteral) \ 81 _(ETS_NULL_TYPE, ETSNullType) \ 82 _(ETS_UNDEFINED_TYPE, ETSUndefinedType) \ 83 _(ETS_FUNCTION_TYPE, ETSFunctionType) \ 84 _(ETS_WILDCARD_TYPE, ETSWildcardType) \ 85 _(ETS_PRIMITIVE_TYPE, ETSPrimitiveType) \ 86 _(ETS_PACKAGE_DECLARATION, ETSPackageDeclaration) \ 87 _(ETS_CLASS_LITERAL, ETSClassLiteral) \ 88 _(ETS_TYPE_REFERENCE, ETSTypeReference) \ 89 _(ETS_TYPE_REFERENCE_PART, ETSTypeReferencePart) \ 90 _(ETS_UNION_TYPE, ETSUnionType) \ 91 _(ETS_LAUNCH_EXPRESSION, ETSLaunchExpression) \ 92 _(ETS_NEW_ARRAY_INSTANCE_EXPRESSION, ETSNewArrayInstanceExpression) \ 93 _(ETS_NEW_MULTI_DIM_ARRAY_INSTANCE_EXPRESSION, ETSNewMultiDimArrayInstanceExpression) \ 94 _(ETS_NEW_CLASS_INSTANCE_EXPRESSION, ETSNewClassInstanceExpression) \ 95 _(ETS_IMPORT_DECLARATION, ETSImportDeclaration) \ 96 _(ETS_PARAMETER_EXPRESSION, ETSParameterExpression) \ 97 _(ETS_TUPLE, ETSTuple) \ 98 _(ETS_SCRIPT, ETSScript) \ 99 _(SUPER_EXPRESSION, SuperExpression) \ 100 _(STRUCT_DECLARATION, ETSStructDeclaration) \ 101 _(SWITCH_CASE_STATEMENT, SwitchCaseStatement) \ 102 _(SWITCH_STATEMENT, SwitchStatement) \ 103 _(TS_ENUM_DECLARATION, TSEnumDeclaration) \ 104 _(TS_ENUM_MEMBER, TSEnumMember) \ 105 _(TS_EXTERNAL_MODULE_REFERENCE, TSExternalModuleReference) \ 106 _(TS_NUMBER_KEYWORD, TSNumberKeyword) \ 107 _(TS_ANY_KEYWORD, TSAnyKeyword) \ 108 _(TS_STRING_KEYWORD, TSStringKeyword) \ 109 _(TS_BOOLEAN_KEYWORD, TSBooleanKeyword) \ 110 _(TS_VOID_KEYWORD, TSVoidKeyword) \ 111 _(TS_UNDEFINED_KEYWORD, TSUndefinedKeyword) \ 112 _(TS_UNKNOWN_KEYWORD, TSUnknownKeyword) \ 113 _(TS_OBJECT_KEYWORD, TSObjectKeyword) \ 114 _(TS_BIGINT_KEYWORD, TSBigintKeyword) \ 115 _(TS_NEVER_KEYWORD, TSNeverKeyword) \ 116 _(TS_NON_NULL_EXPRESSION, TSNonNullExpression) \ 117 _(TS_NULL_KEYWORD, TSNullKeyword) \ 118 _(TS_ARRAY_TYPE, TSArrayType) \ 119 _(TS_UNION_TYPE, TSUnionType) \ 120 _(TS_TYPE_LITERAL, TSTypeLiteral) \ 121 _(TS_PROPERTY_SIGNATURE, TSPropertySignature) \ 122 _(TS_METHOD_SIGNATURE, TSMethodSignature) \ 123 _(TS_SIGNATURE_DECLARATION, TSSignatureDeclaration) \ 124 _(TS_PARENT_TYPE, TSParenthesizedType) \ 125 _(TS_LITERAL_TYPE, TSLiteralType) \ 126 _(TS_INFER_TYPE, TSInferType) \ 127 _(TS_CONDITIONAL_TYPE, TSConditionalType) \ 128 _(TS_IMPORT_TYPE, TSImportType) \ 129 _(TS_INTERSECTION_TYPE, TSIntersectionType) \ 130 _(TS_MAPPED_TYPE, TSMappedType) \ 131 _(TS_MODULE_BLOCK, TSModuleBlock) \ 132 _(TS_THIS_TYPE, TSThisType) \ 133 _(TS_TYPE_OPERATOR, TSTypeOperator) \ 134 _(TS_TYPE_PARAMETER, TSTypeParameter) \ 135 _(TS_TYPE_PARAMETER_DECLARATION, TSTypeParameterDeclaration) \ 136 _(TS_TYPE_PARAMETER_INSTANTIATION, TSTypeParameterInstantiation) \ 137 _(TS_TYPE_PREDICATE, TSTypePredicate) \ 138 _(TS_PARAMETER_PROPERTY, TSParameterProperty) \ 139 _(TS_MODULE_DECLARATION, TSModuleDeclaration) \ 140 _(TS_IMPORT_EQUALS_DECLARATION, TSImportEqualsDeclaration) \ 141 _(TS_FUNCTION_TYPE, TSFunctionType) \ 142 _(TS_CONSTRUCTOR_TYPE, TSConstructorType) \ 143 _(TS_TYPE_ALIAS_DECLARATION, TSTypeAliasDeclaration) \ 144 _(TS_TYPE_REFERENCE, TSTypeReference) \ 145 _(TS_QUALIFIED_NAME, TSQualifiedName) \ 146 _(TS_INDEXED_ACCESS_TYPE, TSIndexedAccessType) \ 147 _(TS_INTERFACE_DECLARATION, TSInterfaceDeclaration) \ 148 _(TS_INTERFACE_BODY, TSInterfaceBody) \ 149 _(TS_INTERFACE_HERITAGE, TSInterfaceHeritage) \ 150 _(TS_TUPLE_TYPE, TSTupleType) \ 151 _(TS_NAMED_TUPLE_MEMBER, TSNamedTupleMember) \ 152 _(TS_INDEX_SIGNATURE, TSIndexSignature) \ 153 _(TS_TYPE_QUERY, TSTypeQuery) \ 154 _(TS_AS_EXPRESSION, TSAsExpression) \ 155 _(TS_CLASS_IMPLEMENTS, TSClassImplements) \ 156 _(TS_TYPE_ASSERTION, TSTypeAssertion) \ 157 _(TAGGED_TEMPLATE_EXPRESSION, TaggedTemplateExpression) \ 158 _(TEMPLATE_ELEMENT, TemplateElement) \ 159 _(TEMPLATE_LITERAL, TemplateLiteral) \ 160 _(THIS_EXPRESSION, ThisExpression) \ 161 _(TYPEOF_EXPRESSION, TypeofExpression) \ 162 _(THROW_STATEMENT, ThrowStatement) \ 163 _(TRY_STATEMENT, TryStatement) \ 164 _(UNARY_EXPRESSION, UnaryExpression) \ 165 _(UPDATE_EXPRESSION, UpdateExpression) \ 166 _(VARIABLE_DECLARATION, VariableDeclaration) \ 167 _(VARIABLE_DECLARATOR, VariableDeclarator) \ 168 _(WHILE_STATEMENT, WhileStatement) \ 169 _(YIELD_EXPRESSION, YieldExpression) \ 170 _(OPAQUE_TYPE_NODE, OpaqueTypeNode) \ 171 _(BLOCK_EXPRESSION, BlockExpression) 172 173 #define AST_NODE_REINTERPRET_MAPPING(_) \ 174 _(ARRAY_EXPRESSION, ARRAY_PATTERN, ArrayExpression, ArrayPattern) \ 175 _(ASSIGNMENT_EXPRESSION, ASSIGNMENT_PATTERN, AssignmentExpression, AssignmentPattern) \ 176 _(OBJECT_EXPRESSION, OBJECT_PATTERN, ObjectExpression, ObjectPattern) \ 177 _(SPREAD_ELEMENT, REST_ELEMENT, SpreadElement, RestElement) 178 // NOLINTEND(cppcoreguidelines-macro-usage) 179 180 #endif 181