1 /* 2 * Copyright (c) 2021 - 2023 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_FLAGS_H 17 #define ES2PANDA_IR_AST_NODE_FLAGS_H 18 19 #include <cstdint> 20 21 namespace panda::es2panda::ir { 22 enum class AstNodeFlags { 23 NO_OPTS = 0, 24 CHECKCAST = 1U << 0U, 25 }; 26 27 enum class ModifierFlags : uint32_t { 28 NONE = 0U, 29 STATIC = 1U << 0U, 30 ASYNC = 1U << 1U, 31 PUBLIC = 1U << 2U, 32 PROTECTED = 1U << 3U, 33 PRIVATE = 1U << 4U, 34 DECLARE = 1U << 5U, 35 READONLY = 1U << 6U, 36 OPTIONAL = 1U << 7U, 37 DEFINITE = 1U << 8U, 38 ABSTRACT = 1U << 9U, 39 CONST = 1U << 10U, 40 FINAL = 1U << 11U, 41 NATIVE = 1U << 12U, 42 OVERRIDE = 1U << 13U, 43 CONSTRUCTOR = 1U << 14U, 44 SYNCHRONIZED = 1U << 15U, 45 FUNCTIONAL = 1U << 16U, 46 IN = 1U << 17U, 47 OUT = 1U << 18U, 48 INTERNAL = 1U << 19U, 49 NULL_ASSIGNABLE = 1U << 20U, 50 UNDEFINED_ASSIGNABLE = 1U << 21U, 51 EXPORT = 1U << 22U, 52 SETTER = 1U << 23U, 53 DEFAULT_EXPORT = 1U << 24U, 54 ACCESS = PUBLIC | PROTECTED | PRIVATE | INTERNAL, 55 ALL = STATIC | ASYNC | ACCESS | DECLARE | READONLY | ABSTRACT, 56 ALLOWED_IN_CTOR_PARAMETER = ACCESS | READONLY, 57 INTERNAL_PROTECTED = INTERNAL | PROTECTED, 58 ACCESSOR_MODIFIERS = ABSTRACT | FINAL | OVERRIDE 59 }; 60 61 enum class PrivateFieldKind { FIELD, METHOD, GET, SET, STATIC_FIELD, STATIC_METHOD, STATIC_GET, STATIC_SET }; 62 63 enum class ScriptFunctionFlags : uint32_t { 64 NONE = 0U, 65 GENERATOR = 1U << 0U, 66 ASYNC = 1U << 1U, 67 ARROW = 1U << 2U, 68 EXPRESSION = 1U << 3U, 69 OVERLOAD = 1U << 4U, 70 CONSTRUCTOR = 1U << 5U, 71 METHOD = 1U << 6U, 72 STATIC_BLOCK = 1U << 7U, 73 HIDDEN = 1U << 8U, 74 IMPLICIT_SUPER_CALL_NEEDED = 1U << 9U, 75 ENUM = 1U << 10U, 76 EXTERNAL = 1U << 11U, 77 PROXY = 1U << 12U, 78 THROWS = 1U << 13U, 79 RETHROWS = 1U << 14U, 80 GETTER = 1U << 15U, 81 SETTER = 1U << 16U, 82 DEFAULT_PARAM_PROXY = 1U << 17U, 83 ENTRY_POINT = 1U << 18U, 84 INSTANCE_EXTENSION_METHOD = 1U << 19U, 85 HAS_RETURN = 1U << 20U 86 }; 87 88 enum class TSOperatorType { READONLY, KEYOF, UNIQUE }; 89 enum class MappedOption { NO_OPTS, PLUS, MINUS }; 90 91 enum class BoxingUnboxingFlags : uint32_t { 92 NONE = 0U, 93 BOX_TO_BOOLEAN = 1U << 0U, 94 BOX_TO_BYTE = 1U << 1U, 95 BOX_TO_SHORT = 1U << 2U, 96 BOX_TO_CHAR = 1U << 3U, 97 BOX_TO_INT = 1U << 4U, 98 BOX_TO_LONG = 1U << 5U, 99 BOX_TO_FLOAT = 1U << 6U, 100 BOX_TO_DOUBLE = 1U << 7U, 101 UNBOX_TO_BOOLEAN = 1U << 8U, 102 UNBOX_TO_BYTE = 1U << 9U, 103 UNBOX_TO_SHORT = 1U << 10U, 104 UNBOX_TO_CHAR = 1U << 11U, 105 UNBOX_TO_INT = 1U << 12U, 106 UNBOX_TO_LONG = 1U << 13U, 107 UNBOX_TO_FLOAT = 1U << 14U, 108 UNBOX_TO_DOUBLE = 1U << 15U, 109 BOXING_FLAG = BOX_TO_BOOLEAN | BOX_TO_BYTE | BOX_TO_SHORT | BOX_TO_CHAR | BOX_TO_INT | BOX_TO_LONG | BOX_TO_FLOAT | 110 BOX_TO_DOUBLE, 111 UNBOXING_FLAG = UNBOX_TO_BOOLEAN | UNBOX_TO_BYTE | UNBOX_TO_SHORT | UNBOX_TO_CHAR | UNBOX_TO_INT | UNBOX_TO_LONG | 112 UNBOX_TO_FLOAT | UNBOX_TO_DOUBLE, 113 }; 114 } // namespace panda::es2panda::ir 115 116 #endif 117