1/* 2 * Copyright (c) 2025 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 A { 17 _field: Int = 30; 18 _bfield: boolean = true; 19} 20 21get field(this: A): Int { 22 return this._field; 23} 24 25set field(this: A, a: int) { 26 this._field = a; 27} 28 29get bfield(this: A): boolean { 30 return this._bfield; 31} 32 33set bfield(this: A, b: boolean) { 34 this._bfield = b; 35} 36 37function main(): void { 38 let obj: A = new A(); 39 assertEQ(obj.field, 30) 40 obj.field = 29; 41 assertEQ(obj.field, 29) 42 obj.field = 15 + 15; 43 44 let z = obj.field + obj.field; 45 assertEQ(z, 60) 46 z = obj.field + obj.field + obj.field; 47 assertEQ(z, 90) 48 let u = obj.field + 10; 49 assertEQ(u, 40) 50 let i = 10 + obj.field; 51 assertEQ(i, 40) 52 u = 10 + obj.field + obj.field + 10; 53 obj.field = 10 + obj.field + obj.field + 10; 54 assertEQ(u, 80) 55 assertEQ(obj.field, 80) 56 57 obj.field = 10; 58 let k = obj.field; 59 assertEQ(k, 10) 60 61 obj.field = obj.field; 62 k = obj.field; 63 assertEQ(k, 10) 64 65 obj.field = obj.field + obj.field; 66 k = obj.field; 67 assertEQ(obj.field, 20) 68 69 obj.field = obj.field + 10; 70 k = obj.field; 71 assertEQ(k, 30) 72 73 obj.field = 10 + obj.field; 74 k = obj.field; 75 assertEQ(k, 40) 76 77 obj.field = 10 * obj.field; 78 k = obj.field; 79 assertEQ(k, 400) 80 81 obj.field = obj.field / 2; 82 k = obj.field; 83 assertEQ(k, 200) 84 85 obj.field = 1; 86 obj.field = obj.field & 0; 87 k = obj.field; 88 assertEQ(k, 0) 89 90 obj.bfield = true; 91 obj.bfield = obj.bfield & false; 92 let boolk = obj.bfield; 93 assertEQ(boolk, false) 94 95 obj.bfield = true; 96 obj.bfield = obj.bfield | false; 97 boolk = obj.bfield; 98 assertEQ(boolk, true) 99 100 obj.bfield = true; 101 obj.bfield = obj.bfield | obj.bfield; 102 boolk = obj.bfield; 103 assertEQ(boolk, true) 104} 105