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(arg:any):void;
164514f5e3Sopenharmony_cilet F : number[] = [0, 1, 2]
174514f5e3Sopenharmony_cilet G : number[] = [0, 1, 2]
184514f5e3Sopenharmony_ci
194514f5e3Sopenharmony_cifunction tryLoopOpt(f: number[], v : number): void {
204514f5e3Sopenharmony_ci    let idx = 1 - 1;
214514f5e3Sopenharmony_ci    let ret = f[idx];
224514f5e3Sopenharmony_ci    for (let i = 0; i < f.length; ++i) {
234514f5e3Sopenharmony_ci        f[i] += 1;
244514f5e3Sopenharmony_ci        f[i] += v;
254514f5e3Sopenharmony_ci    }
264514f5e3Sopenharmony_ci    print(ret);
274514f5e3Sopenharmony_ci    print(f[idx]);
284514f5e3Sopenharmony_ci    print(f[idx + 1]);
294514f5e3Sopenharmony_ci}
304514f5e3Sopenharmony_ci
314514f5e3Sopenharmony_citryLoopOpt(F, <number><Object>'a');
324514f5e3Sopenharmony_ci
334514f5e3Sopenharmony_cifunction tryMergeOpt(g: number[], v: number): void {
344514f5e3Sopenharmony_ci    let idx = 1 - 1;
354514f5e3Sopenharmony_ci    let ret = g[idx];
364514f5e3Sopenharmony_ci    if (g[idx] < 10) {
374514f5e3Sopenharmony_ci        g[idx] -= 10;
384514f5e3Sopenharmony_ci    } else {
394514f5e3Sopenharmony_ci        v++;
404514f5e3Sopenharmony_ci    }
414514f5e3Sopenharmony_ci    print(ret + v);
424514f5e3Sopenharmony_ci    print(g[idx]);
434514f5e3Sopenharmony_ci}
444514f5e3Sopenharmony_ci
454514f5e3Sopenharmony_citryMergeOpt(G, <number><Object>'b');
464514f5e3Sopenharmony_ci
474514f5e3Sopenharmony_cifunction binarySearch(array: number[], target: number): number {
484514f5e3Sopenharmony_ci    let low : number = 0;
494514f5e3Sopenharmony_ci    let high : number = array.length - 1;
504514f5e3Sopenharmony_ci
514514f5e3Sopenharmony_ci    while (low <= high) {
524514f5e3Sopenharmony_ci        let mid: number = (low + high) >>> 1;
534514f5e3Sopenharmony_ci        if (array[mid] == target) {
544514f5e3Sopenharmony_ci            return mid;
554514f5e3Sopenharmony_ci        } else if (array[mid] < target) {
564514f5e3Sopenharmony_ci            low = mid + 1;
574514f5e3Sopenharmony_ci        } else if (array[mid] > target) {
584514f5e3Sopenharmony_ci            high = mid - 1;
594514f5e3Sopenharmony_ci        }
604514f5e3Sopenharmony_ci    }
614514f5e3Sopenharmony_ci    return -1;
624514f5e3Sopenharmony_ci}
634514f5e3Sopenharmony_ci
644514f5e3Sopenharmony_cilet array: number[] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
654514f5e3Sopenharmony_cilet ret = binarySearch(array, 3);
664514f5e3Sopenharmony_ciprint(ret);
674514f5e3Sopenharmony_ci
684514f5e3Sopenharmony_cifunction foo(arr : number[]) {
694514f5e3Sopenharmony_ci    let t = 0 + 0;
704514f5e3Sopenharmony_ci    let sum = arr[t];
714514f5e3Sopenharmony_ci    for (let i = 0; i < 2; ++i) {
724514f5e3Sopenharmony_ci        sum += arr[t];
734514f5e3Sopenharmony_ci        arr[t] = 999;
744514f5e3Sopenharmony_ci    }
754514f5e3Sopenharmony_ci    return sum;
764514f5e3Sopenharmony_ci}
774514f5e3Sopenharmony_ciprint(foo(array));
784514f5e3Sopenharmony_ci
794514f5e3Sopenharmony_ciclass Obj {
804514f5e3Sopenharmony_ci    a:number;
814514f5e3Sopenharmony_ci    b:number;
824514f5e3Sopenharmony_ci    constructor() {
834514f5e3Sopenharmony_ci        this.a = 1;
844514f5e3Sopenharmony_ci        this.b = 4;
854514f5e3Sopenharmony_ci    }
864514f5e3Sopenharmony_ci}
874514f5e3Sopenharmony_cifunction LoadPropertyOpt(obj : Obj) : number {
884514f5e3Sopenharmony_ci    let x1 = obj.a;  // 1
894514f5e3Sopenharmony_ci    let y1 = obj.b;  // 4
904514f5e3Sopenharmony_ci    obj.a = 16;
914514f5e3Sopenharmony_ci    let x2 = obj.a;
924514f5e3Sopenharmony_ci    let y2 = obj.b;
934514f5e3Sopenharmony_ci    return x1 + y1 + x2 + y2;
944514f5e3Sopenharmony_ci}
954514f5e3Sopenharmony_cilet obj : Obj = new Obj();
964514f5e3Sopenharmony_ciprint(LoadPropertyOpt(obj));
974514f5e3Sopenharmony_ci
984514f5e3Sopenharmony_cilet x = 1;
994514f5e3Sopenharmony_ciconst size = (x === undefined) ? 1 : 2;
1004514f5e3Sopenharmony_ciconst cleanupFunc = (x === undefined) ? 1 : 2;
1014514f5e3Sopenharmony_ciprint(size);
1024514f5e3Sopenharmony_ciprint(cleanupFunc);
1034514f5e3Sopenharmony_ci
1044514f5e3Sopenharmony_cifunction foo1() : void {
1054514f5e3Sopenharmony_ci    print(0);
1064514f5e3Sopenharmony_ci}
1074514f5e3Sopenharmony_cifunction foo2(i : number) : void {
1084514f5e3Sopenharmony_ci    let a = {x: null, y:233, z:466};
1094514f5e3Sopenharmony_ci    let b = {y: 5};
1104514f5e3Sopenharmony_ci    a.x = b;
1114514f5e3Sopenharmony_ci    if (i > 10) {
1124514f5e3Sopenharmony_ci        a.x.y = i;
1134514f5e3Sopenharmony_ci    }
1144514f5e3Sopenharmony_ci    foo1()
1154514f5e3Sopenharmony_ci    return a.x.y;
1164514f5e3Sopenharmony_ci}
1174514f5e3Sopenharmony_cifunction foo3(i : number) : void {
1184514f5e3Sopenharmony_ci    let a = {x: null, y:233, z:466};
1194514f5e3Sopenharmony_ci    let b = {y: 5};
1204514f5e3Sopenharmony_ci    a.x = b;
1214514f5e3Sopenharmony_ci    if (i > 10) {
1224514f5e3Sopenharmony_ci        a.x.y = i;
1234514f5e3Sopenharmony_ci    }
1244514f5e3Sopenharmony_ci    foo1()
1254514f5e3Sopenharmony_ci    return a.x;
1264514f5e3Sopenharmony_ci}
1274514f5e3Sopenharmony_ciprint(foo2(1))
1284514f5e3Sopenharmony_ciprint(foo2(5))
1294514f5e3Sopenharmony_ciprint(foo2(10))
1304514f5e3Sopenharmony_ciprint(foo2(100))
1314514f5e3Sopenharmony_ciprint(foo2(11))
1324514f5e3Sopenharmony_ciprint(foo3(1))
1334514f5e3Sopenharmony_ciprint(foo3(11))
134