13af6ab5fSopenharmony_ci/*
23af6ab5fSopenharmony_ci * Copyright (c) 2023-2024 Huawei Device Co., Ltd.
33af6ab5fSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
43af6ab5fSopenharmony_ci * you may not use this file except in compliance with the License.
53af6ab5fSopenharmony_ci * You may obtain a copy of the License at
63af6ab5fSopenharmony_ci *
73af6ab5fSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0
83af6ab5fSopenharmony_ci *
93af6ab5fSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
103af6ab5fSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
113af6ab5fSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
123af6ab5fSopenharmony_ci * See the License for the specific language governing permissions and
133af6ab5fSopenharmony_ci * limitations under the License.
143af6ab5fSopenharmony_ci */
153af6ab5fSopenharmony_ci
163af6ab5fSopenharmony_ciclass C {
173af6ab5fSopenharmony_ci    v: int = 0;
183af6ab5fSopenharmony_ci    constructor (v: int) {
193af6ab5fSopenharmony_ci        this.v = v;
203af6ab5fSopenharmony_ci    }
213af6ab5fSopenharmony_ci}
223af6ab5fSopenharmony_ci
233af6ab5fSopenharmony_cifunction part0() {
243af6ab5fSopenharmony_ci    let b = false
253af6ab5fSopenharmony_ci    let lam: () => void = () => {
263af6ab5fSopenharmony_ci        assert b == true
273af6ab5fSopenharmony_ci        b = false
283af6ab5fSopenharmony_ci    }
293af6ab5fSopenharmony_ci    b = true
303af6ab5fSopenharmony_ci    lam()
313af6ab5fSopenharmony_ci    assert b == false
323af6ab5fSopenharmony_ci}
333af6ab5fSopenharmony_ci
343af6ab5fSopenharmony_cifunction part1() {
353af6ab5fSopenharmony_ci    let b: byte = 0;
363af6ab5fSopenharmony_ci    let s: short = 0;
373af6ab5fSopenharmony_ci    let i: int = 0;
383af6ab5fSopenharmony_ci    let c: char = 0;
393af6ab5fSopenharmony_ci    let lam: () => void = () => {
403af6ab5fSopenharmony_ci        assert b == 1;
413af6ab5fSopenharmony_ci        assert s == 2;
423af6ab5fSopenharmony_ci        assert i == 3;
433af6ab5fSopenharmony_ci        assert c == 4;
443af6ab5fSopenharmony_ci        b = 5;
453af6ab5fSopenharmony_ci        s = 6;
463af6ab5fSopenharmony_ci        i = 7;
473af6ab5fSopenharmony_ci        c = 8;
483af6ab5fSopenharmony_ci    };
493af6ab5fSopenharmony_ci    b = 1;
503af6ab5fSopenharmony_ci    s = 2;
513af6ab5fSopenharmony_ci    i = 3;
523af6ab5fSopenharmony_ci    c = 4;
533af6ab5fSopenharmony_ci    lam();
543af6ab5fSopenharmony_ci    assert b == 5;
553af6ab5fSopenharmony_ci    assert s == 6;
563af6ab5fSopenharmony_ci    assert i == 7;
573af6ab5fSopenharmony_ci    assert c == 8;
583af6ab5fSopenharmony_ci}
593af6ab5fSopenharmony_ci
603af6ab5fSopenharmony_cifunction part2() {
613af6ab5fSopenharmony_ci    let l: long = 0;
623af6ab5fSopenharmony_ci    let f: float = 0.0;
633af6ab5fSopenharmony_ci    let d: double = 0.0;
643af6ab5fSopenharmony_ci    let o = new C(0);
653af6ab5fSopenharmony_ci    let lam: () => void = () => {
663af6ab5fSopenharmony_ci        assert l == 9;
673af6ab5fSopenharmony_ci        assert f == 10.0;
683af6ab5fSopenharmony_ci        assert d == 11.0;
693af6ab5fSopenharmony_ci        assert o.v == 12;
703af6ab5fSopenharmony_ci        l = 13;
713af6ab5fSopenharmony_ci        f = 14.0;
723af6ab5fSopenharmony_ci        d = 15.0;
733af6ab5fSopenharmony_ci        o = new C(16);
743af6ab5fSopenharmony_ci    }
753af6ab5fSopenharmony_ci    l = 9;
763af6ab5fSopenharmony_ci    f = 10.0;
773af6ab5fSopenharmony_ci    d = 11.0;
783af6ab5fSopenharmony_ci    o = new C(12);
793af6ab5fSopenharmony_ci    lam();
803af6ab5fSopenharmony_ci    assert l == 13;
813af6ab5fSopenharmony_ci    assert f == 14.0;
823af6ab5fSopenharmony_ci    assert d == 15.0;
833af6ab5fSopenharmony_ci    assert o.v == 16;
843af6ab5fSopenharmony_ci}
853af6ab5fSopenharmony_ci
863af6ab5fSopenharmony_cifunction main(): void {
873af6ab5fSopenharmony_ci    part0();
883af6ab5fSopenharmony_ci    part1();
893af6ab5fSopenharmony_ci    part2();
903af6ab5fSopenharmony_ci    return;
913af6ab5fSopenharmony_ci}
92