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 16function main(): int 17{ 18 let a_int : int = 10; 19 let a_long : long = 1234; 20 21 a_int += a_long; 22 assert a_int == 1244; 23 24 a_int = 10 as int; 25 a_long = 1234 as long; 26 a_int -= a_long; 27 assert a_int == -1224; 28 29 a_int = 10 as int; 30 a_long = 1234 as long; 31 a_int *= a_long; 32 assert a_int == 12340; 33 34 a_int = 2000 as int; 35 a_long = 1234 as long; 36 a_int /= a_long; 37 assert a_int == 1; 38 39 a_int = 2000 as int; 40 a_long = 1234 as long; 41 a_int %= a_long; 42 assert a_int == 766; 43 44 a_int = 2 as int; 45 a_long = 1 as long; 46 a_int ^= a_long; 47 assert a_int == 3; 48 49 a_int = 2 as int; 50 a_long = 1 as long; 51 a_int |= a_long; 52 assert a_int == 3; 53 54 a_int = 2 as int; 55 a_long = 1 as long; 56 a_int &= a_long; 57 assert a_int == 0; 58 59 a_int = 512 as int; 60 a_long = 1 as long; 61 a_int <<= a_long; 62 assert a_int == 1024; 63 64 a_int = 512 as int; 65 a_long = 1 as long; 66 a_int >>= a_long; 67 assert a_int == 256; 68 69 a_int = 512 as int; 70 a_long = 1 as long; 71 a_int >>>= a_long; 72 assert a_int == 256; 73 74 //---------------------- 75 76 a_int = 10 as int; 77 a_long = 20000000000 as long; 78 a_int += a_long; 79 assert a_int == -1474836470; 80 81 a_int = 10 as int; 82 a_long = 20000000000 as long; 83 a_int -= a_long; 84 assert a_int == 1474836490; 85 86 a_int = 10 as int; 87 a_long = 20000000000 as long; 88 a_int *= a_long; 89 assert a_int == -1863462912; 90 91 a_int = 2000 as int; 92 a_long = 20000000000 as long; 93 a_int /= a_long; 94 assert a_int == 0; 95 96 a_int = 2000 as int; 97 a_long = 20000000000 as long; 98 a_int %= a_long; 99 assert a_int == 2000; 100 101 a_int = 2 as int; 102 a_long = 20000000000 as long; 103 a_int ^= a_long; 104 assert a_int == -1474836478; 105 106 a_int = 2 as int; 107 a_long = 20000000000 as long; 108 a_int |= a_long; 109 assert a_int == -1474836478; 110 111 a_int = 2 as int; 112 a_long = 20000000000 as long; 113 a_int &= a_long; 114 assert a_int == 0; 115 116 a_int = 512 as int; 117 a_long = 20000000000 as long; 118 a_int <<= a_long; 119 assert a_int == 512; 120 121 a_int = 512 as int; 122 a_long = 20000000000 as long; 123 a_int >>= a_long; 124 assert a_int == 512; 125 126 a_int = 512 as int; 127 a_long = 20000000000 as long; 128 a_int >>>= a_long; 129 assert a_int == 512; 130 131 //---------------------- 132 133 let a_Int = 10 as Int; 134 let a_Long = 20000000000 as Long; 135 a_Long += a_Int; 136 assert a_Long == 20000000010; 137 138 a_Int = 10 as Int; 139 a_Long = 20000000000 as Long; 140 a_Long -= a_Int; 141 assert a_Long == 19999999990; 142 143 a_Int = 10 as Int; 144 a_Long = 20000000000 as Long; 145 a_Long *= a_Int; 146 assert a_Long == 200000000000; 147 148 a_Int = 2000 as Int; 149 a_Long = 20000000000 as Long; 150 a_Long /= a_Int; 151 assert a_Long == 10000000; 152 153 a_Int = 2000 as Int; 154 a_Long = 20000000000 as Long; 155 a_Long %= a_Int; 156 assert a_Long == 0; 157 158 a_Int = 2 as Int; 159 a_Long = 20000000000 as Long; 160 a_Long ^= a_Int; 161 assert a_Long == 20000000002; 162 163 a_Int = 2 as Int; 164 a_Long = 20000000000 as Long; 165 a_Long |= a_Int; 166 assert a_Long == 20000000002; 167 168 a_Int = 2 as Int; 169 a_Long = 20000000000 as Long; 170 a_Long &= a_Int; 171 assert a_Long == 0; 172 173 a_Int = 512 as Int; 174 a_Long = 20000000000 as Long; 175 a_Long <<= a_Int; 176 assert a_Long == 20000000000; 177 178 a_Int = 512 as Int; 179 a_Long = 20000000000 as Long; 180 a_Long >>= a_Int; 181 assert a_Long == 20000000000; 182 183 a_Int = 512 as Int; 184 a_Long = 20000000000 as Long; 185 a_Long >>>= a_Int; 186 assert a_Long == 20000000000; 187 188 return 0; 189} 190