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