• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (c) 2023-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
16function main(): void {
17  {
18    let a: byte = 10;
19    let b = ++a;
20    assertEQ(a, 11)
21    assertEQ(b, 11)
22
23    assertEQ(++a, 12)
24    assertEQ(a, 12)
25    assertEQ(b, 11)
26  }
27
28  {
29    let a: int = 20;
30    let b = a++;
31    assertEQ(a, 21)
32    assertEQ(b, 20)
33
34    assertEQ(a++, 21)
35    assertEQ(a, 22)
36    assertEQ(b, 20)
37  }
38
39  {
40    let a: Double = new Double(30.0);
41    let b = ++a;
42    assertEQ(a, 31.0)
43    assertEQ(a.toDouble(), 31.0)
44    assertEQ(b, 31.0)
45    assertEQ(b.toDouble(), 31.0)
46
47    assertEQ((++a).toDouble(), 32.0)
48    assertEQ(a, 32.0)
49    assertEQ(a.toDouble(), 32.0)
50    assertEQ(b, 31.0)
51    assertEQ(b.toDouble(), 31.0)
52  }
53
54  {
55    let a: Int = new Int(40);
56    let b = a++;
57    assertEQ(a, 41)
58    assertEQ(a.toInt(), 41)
59    assertEQ(b, 40)
60    assertEQ(b.toInt(), 40)
61
62    assertEQ((a++).toInt(), 41)
63    assertEQ(a, 42)
64    assertEQ(a.toInt(), 42)
65    assertEQ(b, 40)
66    assertEQ(b.toInt(), 40)
67  }
68
69  {
70    let fn: (x: Int) => Int = (x: Int): Int => { return x; };
71    let a: Int = new Int(50);
72    let b = fn(a++);
73    assertEQ(a, 51)
74    assertEQ(a.toInt(), 51)
75    assertEQ(b, 50)
76    assertEQ(b.toInt(), 50)
77
78    assertEQ(fn(++a), 52)
79    assertEQ(a, 52)
80  }
81
82  {
83    let b: byte = 127;
84    assertEQ(++b as int, -128)
85    assertEQ(--b as int, 127)
86
87    let c: char = 65535;
88    assertEQ(++c as int, 0)
89    assertEQ(--c as int, 65535)
90
91    let s: short = 32767;
92    assertEQ(++s as int, -32768)
93    assertEQ(--s as int, 32767)
94  }
95
96  {
97    let b: Int[] = [1, 2]
98    assertEQ(++b[1], 3)
99    assertEQ(--b[1], 2)
100  }
101}
102