• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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