1/*
2 * Copyright (c) 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
16var o = {
17    "foo": function () {
18        var number0 = 1;
19        var string0 = "helloworld";
20        var boolean0 = false;
21        var obj0 = {
22            "key0": "value0",
23            "key1": 100
24        };
25        var undefined0 = undefined;
26        var null0 = null;
27        var symbol0 = Symbol("symbol0");
28        function function0() {
29            var test = 0;
30        }
31        var date0 = new Date('December 17, 1995 03:24:00');
32        var map0 = new Map();
33        var set0 = new Set();
34        let array0 = ['Apple', 'Banana'];
35        function* generator0() {
36            let aa = 0;
37            var a1 = 100;
38            yield 1;
39            yield 2;
40            yield 3;
41        }
42        var regexp0 = /^\d+\.\d+$/i;
43        var arraybuffer0 = new ArrayBuffer(24);
44        var uint8array0 = new Uint8Array(arraybuffer0);
45        const dataview0 = new DataView(arraybuffer0, 0);
46        var bigint0 = BigInt(999n);
47        var typedarray0 = new Uint8Array();
48        var sharedarraybuffer0 = new SharedArrayBuffer(32);
49        var iterator0 = string0[Symbol.iterator];
50        var weakref0 = new WeakRef(obj0);
51
52        var set1 = new Set();
53        set1.add(number0);
54        var set2 = new Set(string0);
55        var set3 = new Set();
56        set3.add(obj0);
57        var set4 = new Set(undefined0);
58        var set5 = new Set(array0);
59        var set6 = new Set();
60        var set7 = new Set();
61        var set8 = new Set();
62        set8.add(generator0);
63        var set9 = new Set();
64        set9.add(regexp0);
65        var set10 = new Set();
66        set10.add(arraybuffer0);
67        var set11 = new Set();
68        set11.add(uint8array0);
69        var set12 = new Set();
70        set12.add(dataview0);
71        var set13 = new Set();
72        set13.add(function0);
73        var set14 = set0;
74        var set15 = new Set();
75        set15.add(0);
76        set15.add("hello");
77        set15.add(obj0);
78        set15.add(number0);
79        var set16 = new Set();
80        set16.add(map0);
81        var set17 = new Set();
82        set17.add(bigint0);
83        var set18 = new Set();
84        set18.add(boolean0);
85        var set19 = new Set(set0);
86
87        var number1 = 65535;
88        var number2 = 5e-324;
89        var number3 = 10 ** 10;
90        var number4 = 0x1ffffffffff;
91        var number5 = 0b11111111111111;
92        var number6 = new Number(bigint0);
93        var number7 = 123e45;
94        var number8 = number0;
95        var number9 = number0 + number1;
96        var number10 = number0 - number1;
97        var number11 = number0 * number1;
98        var number12 = number0 / number1;
99        var number13 = number0 % number1;
100        var number14 = new Number(0);
101        var number15 = new Number(1.7976931348623157e+308);
102        var number16 = new Number(5e-324);
103        var number17 = new Number(10 ** 10);
104        var number18 = new Number(0x1ffffffffff);
105        var number19 = new Number(0b11111111111111);
106        var number20 = new Number(123e45);
107        var number21 = new Number(number0);
108        var number22 = new Number(number0 + number1);
109        var number23 = new Number(number0 - number1);
110        var number24 = new Number(number0 * number1);
111        var number25 = new Number(number0 / number1);
112        var number26 = new Number(number0 % number1);
113        var number27 = 1.7976931348623157e+308;
114
115        var string1 = "";
116        var string2 = string1;
117        var string3 = string1 + 'world';
118        var string4 = 'hello' + 'world';
119        var string5 = string4.charAt(1);
120        var string6 = string1 + number0;
121        var string7 = new String(string1);
122        var string8 = new String(set0);
123        var string9 = new String(number0);
124        var string10 = new String(string0);
125        var string11 = new String(obj0);
126        var string12 = new String(undefined0);
127        var string13 = new String(array0);
128        var string14 = new String(bigint0);
129        var string15 = new String(generator0);
130        var string16 = new String(regexp0);
131        var string17 = new String(arraybuffer0);
132        var string18 = new String(uint8array0);
133        var string19 = new String(dataview0);
134        var string20 = new String(map0);
135        var string21 = new String(function0);
136
137        var bigint1 = BigInt(9007199254740991n);
138        var bigint2 = BigInt(9007199254740991);
139        var bigint3 = BigInt("9007199254740991");
140        var bigint4 = BigInt("0x1fffffffffffff");
141        var bigint5 = BigInt(0x1fffffffffffff);
142        var bigint6 = BigInt("0b11111111111111111111111111111111111111111111111111111");
143        var bigint7 = bigint0;
144        var bigint8 = bigint0 + bigint1;
145        var bigint9 = bigint0 - bigint1;
146        var bigint10 = bigint0 * bigint1;
147        var bigint11 = bigint0 / bigint1;
148        var bigint12 = bigint0 % bigint1;
149        var bigint13 = 10n ** 10n;
150        var bigint14 = 888888888888888888888888888888888888888888888n;
151        var bigint15 = BigInt(0b11111111111111);
152        var bigint16 = BigInt(0);
153        var bigint17 = 0n;
154        var bigint18 = BigInt(123e45);
155        var bigint19 = BigInt("01234567");
156        var bigint20 = BigInt(number1);
157
158        var boolean1 = new Boolean(1);
159        var boolean2 = new Boolean(-1);
160        var boolean3 = new Boolean(true);
161        var boolean4 = new Boolean(false);
162        var boolean5 = new Boolean(boolean0 + boolean1);
163        var boolean6 = new Boolean(boolean0 && boolean1);
164        var boolean7 = new Boolean(boolean0 || boolean1);
165        var boolean8 = new Boolean(!boolean0);
166        var boolean9 = true;
167        var boolean10 = false;
168        var boolean11 = boolean0;
169        var boolean12 = boolean0 && boolean10;
170        var boolean13 = boolean0 || boolean10;
171        var boolean14 = !boolean10;
172        var boolean15 = new Boolean("hello");
173        var boolean16 = new Boolean("");
174        var boolean17 = new Boolean(function0);
175        var boolean18 = new Boolean(map0);
176        var boolean19 = new Boolean(set0);
177        var boolean20 = new Boolean(number0);
178        var boolean21 = new Boolean(string0);
179        var boolean22 = new Boolean(obj0);
180        var boolean23 = new Boolean(undefined0);
181        var boolean24 = new Boolean(array0);
182        var boolean25 = new Boolean(generator0);
183        var boolean26 = new Boolean(regexp0);
184        var boolean27 = new Boolean(arraybuffer0);
185        var boolean28 = new Boolean(uint8array0);
186        var boolean29 = new Boolean(dataview0);
187
188        var map1 = new Map(map0);
189        var map2 = new Map([
190            [1, 'hello'],
191            [2, 'world']
192        ]);
193        var map3 = new Map();
194        map3.set(NaN, 'NaN');
195        var map4 = new Map();
196        map4[0] = 'hello';
197        var map5 = new Map();
198        map5.set(0, 'zero');
199        map5.set(1, 'one');
200        map5.set(2, 'two');
201        map5.set(3, 'three');
202        var map6 = new Map();
203        map6.set(set0, "set0");
204        var map7 = new Map();
205        map7.set(number0, "number0");
206        var map8 = new Map();
207        map8.set(string0, "string0");
208        var map9 = new Map();
209        map9.set(obj0, "object0");
210        var map10 = new Map();
211        map10.set(undefined0, "undefined0");
212        var map11 = new Map();
213        map11.set(array0, "array0");
214        var map12 = new Map();
215        map12.set(map3, "map3");
216        var map13 = new Map();
217        map13.set(generator0, "generator0");
218        var map14 = new Map();
219        map14.set(regexp0, "regexp0");
220        var map15 = new Map();
221        map15.set(arraybuffer0, "arraybuffer0");
222        var map16 = new Map();
223        map16.set(uint8array0, "uint8array0");
224        var map17 = new Map();
225        map17.set(dataview0, "dataview0");
226        var map18 = new Map();
227        map18.set(bigint10, "bigint10");
228        var map19 = new Map();
229        map19.set(function0, "function0");
230
231        var object1 = { 0: 'zero', 1: 'one', 2: 'two', 3: 'three', 4: 'four', 5: 'five' };
232        var object2 = object1;
233        var object3 = new Object({ 0: 'zero', 1: 'one', 2: 'two', 3: 'three', 4: 'four', 5: 'five' });
234        var object4 = new Object(set0);
235        var object5 = new Object(string0);
236        var object6 = new Object(map0);
237        var object7 = new Object(number0);
238        var object8 = new Object(obj0);
239        var object9 = new Object(undefined0);
240        var object10 = new Object(array0);
241        var object11 = new Object(bigint10);
242        var object12 = new Object(generator0);
243        var object13 = new Object(regexp0);
244        var object14 = new Object(bigint0);
245        var object15 = new Object(arraybuffer0);
246        var object16 = new Object(uint8array0);
247        var object17 = new Object(dataview0);
248        var object18 = new Object(boolean10);
249        var object19 = new Object(function0);
250
251        var regExp1 = /^a/g;
252        var regExp2 = new RegExp('^ab+c', 'g');
253        var regExp3 = /123$/;
254        var regExp4 = /\d/i;
255        var regExp5 = new RegExp('^[a-zA-Z]/w{5,17}$', 'iu');
256        var regExp6 = /[A-Z]/m;
257        var regExp7 = new RegExp('(/d{3}-|/d{4}-)?(/d{8}|/d{7})?', 'mg');
258        var regExp8 = /[a-z]/y;
259        var regExp9 = /\s/u;
260        var regExp10 = /a+/s;
261        var regExp11 = new RegExp('(d+-)?(d{4}-?d{7}|d{3}-?d{8}|^d{7,8})(-d+)?', 's');
262        var regExp12 = /a?/gy;
263        var regExp13 = new RegExp('/^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/');
264        var regExp14 = /a*/igmy;
265        var regExp15 = new RegExp('^[/w-]+(/.[/w-]+)*@[/w-]+(/.[/w-]+)+$', 'ig');
266        var regExp16 = /a|b/iymsg;
267        var regExp17 = new RegExp('^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$');
268        var regExp18 = /\/<(.*)>.*<\/\/\/1>|<(.*) \/\/>/i;
269        var regExp19 = new RegExp('^[1-9]*[1-9][0-9]*$', 'm');
270        var regExp20 = /^[a-zA-Z]\/w{5,17}$/;
271        var regExp21 = new RegExp('^[0-9a-zA-Z_]{1,}$', 'u');
272
273        var target = {
274            name: "openharmony",
275            age: 3
276        };
277        var handler = {
278            get(target, key) {
279                let result = target[key];
280                if (key === "age") result += "岁";
281                return result;
282            },
283            set(target, key, value) {
284                if (key === "age" && typeof value !== "number") {
285                    throw Error("age字段必须为Number类型");
286                }
287                return Reflect.set(target, key, value);
288            }
289        };
290        var { proxy, revoke } = Proxy.revocable(target, handler);
291        var proxy1 = new Proxy(target, handler);
292        var proxy2 = Proxy.revocable(target, handler);
293
294        revoke();
295        proxy2.revoke();
296
297        var promiseFulfilled = new Promise((resolve, reject) => {
298            let result = {
299                flag: true
300            }
301            if (result.flag == true) {
302                resolve(result);
303            } else {
304                reject(new Error("The promise is rejected"));
305            }
306        });
307        var string22 = "\uD83D";
308        var string23 = string22 + "\uDE42";
309        var string24 = "\u{1F468}";
310        var string25 = string24 + "\u200D\u{1F468}\u200D\u{1F467}\u200D\u{1F466}\u200D";
311        print(string22);
312        print(string23);
313        print(string24);
314        print(string25);
315
316        function resolveHandler(result) {
317            let a = promiseFulfilled;
318            print("promise is fulfilled with result.flag " + result.flag);
319        }
320
321        function rejectHandler(error) {
322            print(error.message);
323        }
324
325        promiseFulfilled.then(result => resolveHandler(result)).catch(error => rejectHandler(error));
326
327        var nop = undefined;
328    }
329}
330
331o.foo();