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