• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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