14514f5e3Sopenharmony_ci/*
24514f5e3Sopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd.
34514f5e3Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
44514f5e3Sopenharmony_ci * you may not use this file except in compliance with the License.
54514f5e3Sopenharmony_ci * You may obtain a copy of the License at
64514f5e3Sopenharmony_ci *
74514f5e3Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
84514f5e3Sopenharmony_ci *
94514f5e3Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
104514f5e3Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
114514f5e3Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
124514f5e3Sopenharmony_ci * See the License for the specific language governing permissions and
134514f5e3Sopenharmony_ci * limitations under the License.
144514f5e3Sopenharmony_ci */
154514f5e3Sopenharmony_cideclare function print(str:any):string;
164514f5e3Sopenharmony_ci
174514f5e3Sopenharmony_ci// case1: CREATEOBJECTWITHEXCLUDEDKEYS
184514f5e3Sopenharmony_ciconst o4 : {} = {
194514f5e3Sopenharmony_ci    get c() : {}{
204514f5e3Sopenharmony_ci        let {...v3} = t12()
214514f5e3Sopenharmony_ci    },
224514f5e3Sopenharmony_ci}
234514f5e3Sopenharmony_ci
244514f5e3Sopenharmony_ci// case2: ProcessSnapshotConstantPool
254514f5e3Sopenharmony_civar m = {
264514f5e3Sopenharmony_ci    get a() {
274514f5e3Sopenharmony_ci        function f() {
284514f5e3Sopenharmony_ci            return 1
294514f5e3Sopenharmony_ci        }
304514f5e3Sopenharmony_ci    },
314514f5e3Sopenharmony_ci    "a": "hello"
324514f5e3Sopenharmony_ci}
334514f5e3Sopenharmony_ci
344514f5e3Sopenharmony_ci// case3: last label equal bcLast
354514f5e3Sopenharmony_cifunction f() {}
364514f5e3Sopenharmony_cifunction f1() {
374514f5e3Sopenharmony_ci    return
384514f5e3Sopenharmony_ci    try {
394514f5e3Sopenharmony_ci      f()
404514f5e3Sopenharmony_ci    } catch(e) {
414514f5e3Sopenharmony_ci    }
424514f5e3Sopenharmony_ci}
434514f5e3Sopenharmony_ci
444514f5e3Sopenharmony_ci// case4: GetDeps
454514f5e3Sopenharmony_cifunction f2() {
464514f5e3Sopenharmony_ci    try {
474514f5e3Sopenharmony_ci        return
484514f5e3Sopenharmony_ci    } catch(e15) {
494514f5e3Sopenharmony_ci    }
504514f5e3Sopenharmony_ci    while(1) {}
514514f5e3Sopenharmony_ci}
524514f5e3Sopenharmony_ci
534514f5e3Sopenharmony_ci// case5: asan check
544514f5e3Sopenharmony_cifunction f59() : number[] {}
554514f5e3Sopenharmony_ciclass C60 extends f59 {}
564514f5e3Sopenharmony_ciconst v75 : number = new C60()
574514f5e3Sopenharmony_ci
584514f5e3Sopenharmony_ci// case6: NewJSError Stack Overflow
594514f5e3Sopenharmony_cifunction f230():string {
604514f5e3Sopenharmony_ci    const v292:number = -2;
614514f5e3Sopenharmony_ci    const v303:number[] = [1000,-1970969808,536870887,257,17933,11,1024];
624514f5e3Sopenharmony_ci    try { new v292(64, ...v303, ...v303, ...v303, ...v303); } catch (e) {}
634514f5e3Sopenharmony_ci    return "bigint";
644514f5e3Sopenharmony_ci}
654514f5e3Sopenharmony_cifor (let v316:number = 0; v316 < 5; v316++) {
664514f5e3Sopenharmony_ci    f230();
674514f5e3Sopenharmony_ci}
684514f5e3Sopenharmony_ci
694514f5e3Sopenharmony_ci// case7: extendClassType check
704514f5e3Sopenharmony_ciconst v1455:{} = ("boolean")[Symbol.iterator];
714514f5e3Sopenharmony_citry {
724514f5e3Sopenharmony_ci    class C1723 extends v1455 {
734514f5e3Sopenharmony_ci        [a1718];
744514f5e3Sopenharmony_ci        static [v1705] = a1719;
754514f5e3Sopenharmony_ci    }
764514f5e3Sopenharmony_ci} catch (e) {}
774514f5e3Sopenharmony_ci
784514f5e3Sopenharmony_ci// case8: stackmapNum % 2
794514f5e3Sopenharmony_cilet v39:any = 129 || C3;
804514f5e3Sopenharmony_ciMath.sign("12");
814514f5e3Sopenharmony_civ39++;
824514f5e3Sopenharmony_ci
834514f5e3Sopenharmony_ci// case9: this branch is unreachable
844514f5e3Sopenharmony_cilet v:number = [];
854514f5e3Sopenharmony_ciprint(Math.abs(--v));
864514f5e3Sopenharmony_ciprint(v);
874514f5e3Sopenharmony_cilet u:number[] = [];
884514f5e3Sopenharmony_ciprint(--u);
894514f5e3Sopenharmony_ci
904514f5e3Sopenharmony_ci// case10: value input does not match (expected I64 actual I32)
914514f5e3Sopenharmony_cifor (let v0 = 0; v0 < 5; v0++) {
924514f5e3Sopenharmony_ci    try {BigInt.asIntN(v0, v0); } catch (e) {}
934514f5e3Sopenharmony_ci}
944514f5e3Sopenharmony_ci
954514f5e3Sopenharmony_ciclass C1 {
964514f5e3Sopenharmony_ci    constructor(a3, a4) {
974514f5e3Sopenharmony_ci        ("split")[3][0];
984514f5e3Sopenharmony_ci    }
994514f5e3Sopenharmony_ci}
1004514f5e3Sopenharmony_cinew C1("split", C1);
1014514f5e3Sopenharmony_cinew C1();
1024514f5e3Sopenharmony_ci
1034514f5e3Sopenharmony_ciprint("compiler success");