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