1/* 2 * Copyright (c) 2023-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 16class C { 17 v: int = 0; 18 constructor (v: int) { 19 this.v = v; 20 } 21} 22 23function part0() { 24 let b = false 25 let lam: () => void = () => { 26 assert b == true 27 b = false 28 } 29 b = true 30 lam() 31 assert b == false 32} 33 34function part1() { 35 let b: byte = 0; 36 let s: short = 0; 37 let i: int = 0; 38 let c: char = 0; 39 let lam: () => void = () => { 40 assert b == 1; 41 assert s == 2; 42 assert i == 3; 43 assert c == 4; 44 b = 5; 45 s = 6; 46 i = 7; 47 c = 8; 48 }; 49 b = 1; 50 s = 2; 51 i = 3; 52 c = 4; 53 lam(); 54 assert b == 5; 55 assert s == 6; 56 assert i == 7; 57 assert c == 8; 58} 59 60function part2() { 61 let l: long = 0; 62 let f: float = 0.0; 63 let d: double = 0.0; 64 let o = new C(0); 65 let lam: () => void = () => { 66 assert l == 9; 67 assert f == 10.0; 68 assert d == 11.0; 69 assert o.v == 12; 70 l = 13; 71 f = 14.0; 72 d = 15.0; 73 o = new C(16); 74 } 75 l = 9; 76 f = 10.0; 77 d = 11.0; 78 o = new C(12); 79 lam(); 80 assert l == 13; 81 assert f == 14.0; 82 assert d == 15.0; 83 assert o.v == 16; 84} 85 86function main(): void { 87 part0(); 88 part1(); 89 part2(); 90 return; 91} 92