diff --git a/src/compiler.ts b/src/compiler.ts index 7e94bfb33b..d4569bcda3 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -7140,8 +7140,11 @@ export class Compiler extends DiagnosticEmitter { switch (expression.kind) { case NodeKind.NULL: { let options = this.options; - if (!contextualType.classReference) { + let classReference = contextualType.classReference; + if (!classReference) { this.currentType = options.usizeType; + } else { + this.currentType = classReference.type.asNullable(); } return options.isWasm64 ? module.i64(0) diff --git a/tests/compiler/nullable.json b/tests/compiler/nullable.json new file mode 100644 index 0000000000..7454efd143 --- /dev/null +++ b/tests/compiler/nullable.json @@ -0,0 +1,9 @@ +{ + "asc_flags": [ + "--runtime none" + ], + "stderr": [ + "TS2531: Object is possibly 'null'.", + "EOF" + ] +} \ No newline at end of file diff --git a/tests/compiler/nullable.ts b/tests/compiler/nullable.ts new file mode 100644 index 0000000000..c7b260c7a7 --- /dev/null +++ b/tests/compiler/nullable.ts @@ -0,0 +1,7 @@ +class Example {} + +function notNullable(a: Example): void {} + +notNullable(null); + +ERROR("EOF") diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index e24fe0d3b3..6881bb0567 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -3638,7 +3638,7 @@ if i32.const 0 i32.const 376 - i32.const 568 + i32.const 569 i32.const 6 call $~lib/builtins/abort unreachable @@ -5841,7 +5841,7 @@ if i32.const 0 i32.const 376 - i32.const 830 + i32.const 831 i32.const 2 call $~lib/builtins/abort unreachable @@ -6273,7 +6273,7 @@ if i32.const 0 i32.const 376 - i32.const 830 + i32.const 831 i32.const 2 call $~lib/builtins/abort unreachable @@ -6450,7 +6450,7 @@ if i32.const 0 i32.const 376 - i32.const 830 + i32.const 831 i32.const 2 call $~lib/builtins/abort unreachable @@ -8860,7 +8860,7 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $~lib/array/Array<~lib/string/String>#join_str (; 172 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String | null>#join_str (; 172 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9063,13 +9063,13 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/array/Array<~lib/string/String>#join (; 173 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String | null>#join (; 173 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 call $~lib/rt/pure/__retain drop local.get $0 local.get $1 - call $~lib/array/Array<~lib/string/String>#join_str + call $~lib/array/Array<~lib/string/String | null>#join_str local.get $1 call $~lib/rt/pure/__release ) @@ -10127,7 +10127,7 @@ (func $~lib/array/Array<~lib/string/String | null>#toString (; 189 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 4464 - call $~lib/array/Array<~lib/string/String>#join + call $~lib/array/Array<~lib/string/String | null>#join ) (func $~lib/array/Array<~lib/array/Array>#join_arr (; 190 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) @@ -11719,9 +11719,9 @@ unreachable end call $~lib/array/Array#constructor - local.set $4 + local.set $5 global.get $std/array/arr - local.get $4 + local.get $5 call $~lib/array/Array#concat local.set $1 global.get $std/array/arr @@ -11821,16 +11821,16 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 46 call $~lib/array/Array#push - local.get $4 + local.get $5 i32.const 47 call $~lib/array/Array#push global.get $std/array/arr - local.get $4 + local.get $5 call $~lib/array/Array#concat - local.set $2 + local.set $4 local.get $1 call $~lib/rt/pure/__release global.get $std/array/arr @@ -11845,7 +11845,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.load offset=12 i32.const 2 i32.ne @@ -11857,7 +11857,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 i32.load offset=12 i32.const 5 i32.ne @@ -11869,7 +11869,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 i32.const 0 call $~lib/array/Array#__get i32.const 43 @@ -11882,7 +11882,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 i32.const 1 call $~lib/array/Array#__get i32.const 44 @@ -11895,7 +11895,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 i32.const 2 call $~lib/array/Array#__get i32.const 45 @@ -11908,7 +11908,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 i32.const 3 call $~lib/array/Array#__get i32.const 46 @@ -11921,7 +11921,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 i32.const 4 call $~lib/array/Array#__get i32.const 47 @@ -11934,10 +11934,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 call $~lib/array/Array#pop drop - local.get $2 + local.get $4 i32.load offset=12 i32.const 4 i32.ne @@ -11949,37 +11949,6 @@ call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#concat - local.set $5 - local.get $2 - call $~lib/rt/pure/__release - local.get $5 - i32.load offset=12 - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 376 - i32.const 157 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 2 - call $~lib/array/Array#__get - i32.const 45 - i32.ne - if - i32.const 0 - i32.const 376 - i32.const 158 - i32.const 2 - call $~lib/builtins/abort - unreachable - end i32.const 0 i32.const 2 i32.const 3 @@ -11993,7 +11962,7 @@ if i32.const 0 i32.const 376 - i32.const 161 + i32.const 162 i32.const 2 call $~lib/builtins/abort unreachable @@ -12002,7 +11971,7 @@ global.get $std/array/arr call $~lib/array/Array#concat local.set $2 - local.get $5 + local.get $4 call $~lib/rt/pure/__release local.get $2 i32.load offset=12 @@ -12011,7 +11980,7 @@ if i32.const 0 i32.const 376 - i32.const 163 + i32.const 164 i32.const 2 call $~lib/builtins/abort unreachable @@ -12021,12 +11990,12 @@ if i32.const 0 i32.const 376 - i32.const 164 + i32.const 165 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release @@ -12070,7 +12039,7 @@ if i32.const 0 i32.const 376 - i32.const 172 + i32.const 173 i32.const 2 call $~lib/builtins/abort unreachable @@ -12111,7 +12080,7 @@ if i32.const 0 i32.const 376 - i32.const 174 + i32.const 175 i32.const 2 call $~lib/builtins/abort unreachable @@ -12152,7 +12121,7 @@ if i32.const 0 i32.const 376 - i32.const 176 + i32.const 177 i32.const 2 call $~lib/builtins/abort unreachable @@ -12194,7 +12163,7 @@ if i32.const 0 i32.const 376 - i32.const 178 + i32.const 179 i32.const 2 call $~lib/builtins/abort unreachable @@ -12236,7 +12205,7 @@ if i32.const 0 i32.const 376 - i32.const 180 + i32.const 181 i32.const 2 call $~lib/builtins/abort unreachable @@ -12278,7 +12247,7 @@ if i32.const 0 i32.const 376 - i32.const 182 + i32.const 183 i32.const 2 call $~lib/builtins/abort unreachable @@ -12320,7 +12289,7 @@ if i32.const 0 i32.const 376 - i32.const 184 + i32.const 185 i32.const 2 call $~lib/builtins/abort unreachable @@ -12362,7 +12331,7 @@ if i32.const 0 i32.const 376 - i32.const 186 + i32.const 187 i32.const 2 call $~lib/builtins/abort unreachable @@ -12404,7 +12373,7 @@ if i32.const 0 i32.const 376 - i32.const 188 + i32.const 189 i32.const 2 call $~lib/builtins/abort unreachable @@ -12446,7 +12415,7 @@ if i32.const 0 i32.const 376 - i32.const 190 + i32.const 191 i32.const 2 call $~lib/builtins/abort unreachable @@ -12488,7 +12457,7 @@ if i32.const 0 i32.const 376 - i32.const 192 + i32.const 193 i32.const 2 call $~lib/builtins/abort unreachable @@ -12530,7 +12499,7 @@ if i32.const 0 i32.const 376 - i32.const 194 + i32.const 195 i32.const 2 call $~lib/builtins/abort unreachable @@ -12619,7 +12588,7 @@ if i32.const 0 i32.const 376 - i32.const 202 + i32.const 203 i32.const 2 call $~lib/builtins/abort unreachable @@ -12631,7 +12600,7 @@ if i32.const 0 i32.const 376 - i32.const 203 + i32.const 204 i32.const 2 call $~lib/builtins/abort unreachable @@ -12644,7 +12613,7 @@ if i32.const 0 i32.const 376 - i32.const 204 + i32.const 205 i32.const 2 call $~lib/builtins/abort unreachable @@ -12657,7 +12626,7 @@ if i32.const 0 i32.const 376 - i32.const 205 + i32.const 206 i32.const 2 call $~lib/builtins/abort unreachable @@ -12670,7 +12639,7 @@ if i32.const 0 i32.const 376 - i32.const 206 + i32.const 207 i32.const 2 call $~lib/builtins/abort unreachable @@ -12683,7 +12652,7 @@ if i32.const 0 i32.const 376 - i32.const 207 + i32.const 208 i32.const 2 call $~lib/builtins/abort unreachable @@ -12698,7 +12667,7 @@ if i32.const 0 i32.const 376 - i32.const 211 + i32.const 212 i32.const 2 call $~lib/builtins/abort unreachable @@ -12710,7 +12679,7 @@ if i32.const 0 i32.const 376 - i32.const 212 + i32.const 213 i32.const 2 call $~lib/builtins/abort unreachable @@ -12723,7 +12692,7 @@ if i32.const 0 i32.const 376 - i32.const 213 + i32.const 214 i32.const 2 call $~lib/builtins/abort unreachable @@ -12736,7 +12705,7 @@ if i32.const 0 i32.const 376 - i32.const 214 + i32.const 215 i32.const 2 call $~lib/builtins/abort unreachable @@ -12749,7 +12718,7 @@ if i32.const 0 i32.const 376 - i32.const 215 + i32.const 216 i32.const 2 call $~lib/builtins/abort unreachable @@ -12762,7 +12731,7 @@ if i32.const 0 i32.const 376 - i32.const 216 + i32.const 217 i32.const 2 call $~lib/builtins/abort unreachable @@ -12775,7 +12744,7 @@ if i32.const 0 i32.const 376 - i32.const 217 + i32.const 218 i32.const 2 call $~lib/builtins/abort unreachable @@ -12789,7 +12758,7 @@ if i32.const 0 i32.const 376 - i32.const 226 + i32.const 227 i32.const 2 call $~lib/builtins/abort unreachable @@ -12801,7 +12770,7 @@ if i32.const 0 i32.const 376 - i32.const 227 + i32.const 228 i32.const 2 call $~lib/builtins/abort unreachable @@ -12813,7 +12782,7 @@ if i32.const 0 i32.const 376 - i32.const 228 + i32.const 229 i32.const 2 call $~lib/builtins/abort unreachable @@ -12826,7 +12795,7 @@ if i32.const 0 i32.const 376 - i32.const 229 + i32.const 230 i32.const 2 call $~lib/builtins/abort unreachable @@ -12839,7 +12808,7 @@ if i32.const 0 i32.const 376 - i32.const 230 + i32.const 231 i32.const 2 call $~lib/builtins/abort unreachable @@ -12852,7 +12821,7 @@ if i32.const 0 i32.const 376 - i32.const 231 + i32.const 232 i32.const 2 call $~lib/builtins/abort unreachable @@ -12865,7 +12834,7 @@ if i32.const 0 i32.const 376 - i32.const 232 + i32.const 233 i32.const 2 call $~lib/builtins/abort unreachable @@ -12879,7 +12848,7 @@ if i32.const 0 i32.const 376 - i32.const 236 + i32.const 237 i32.const 2 call $~lib/builtins/abort unreachable @@ -12891,7 +12860,7 @@ if i32.const 0 i32.const 376 - i32.const 237 + i32.const 238 i32.const 2 call $~lib/builtins/abort unreachable @@ -12903,7 +12872,7 @@ if i32.const 0 i32.const 376 - i32.const 238 + i32.const 239 i32.const 2 call $~lib/builtins/abort unreachable @@ -12916,7 +12885,7 @@ if i32.const 0 i32.const 376 - i32.const 239 + i32.const 240 i32.const 2 call $~lib/builtins/abort unreachable @@ -12929,7 +12898,7 @@ if i32.const 0 i32.const 376 - i32.const 240 + i32.const 241 i32.const 2 call $~lib/builtins/abort unreachable @@ -12942,7 +12911,7 @@ if i32.const 0 i32.const 376 - i32.const 241 + i32.const 242 i32.const 2 call $~lib/builtins/abort unreachable @@ -12957,7 +12926,7 @@ if i32.const 0 i32.const 376 - i32.const 249 + i32.const 250 i32.const 2 call $~lib/builtins/abort unreachable @@ -12969,7 +12938,7 @@ if i32.const 0 i32.const 376 - i32.const 250 + i32.const 251 i32.const 2 call $~lib/builtins/abort unreachable @@ -12982,7 +12951,7 @@ if i32.const 0 i32.const 376 - i32.const 251 + i32.const 252 i32.const 2 call $~lib/builtins/abort unreachable @@ -12995,7 +12964,7 @@ if i32.const 0 i32.const 376 - i32.const 252 + i32.const 253 i32.const 2 call $~lib/builtins/abort unreachable @@ -13008,7 +12977,7 @@ if i32.const 0 i32.const 376 - i32.const 253 + i32.const 254 i32.const 2 call $~lib/builtins/abort unreachable @@ -13028,7 +12997,7 @@ if i32.const 0 i32.const 376 - i32.const 263 + i32.const 264 i32.const 2 call $~lib/builtins/abort unreachable @@ -13044,7 +13013,7 @@ if i32.const 0 i32.const 376 - i32.const 266 + i32.const 267 i32.const 2 call $~lib/builtins/abort unreachable @@ -13060,7 +13029,7 @@ if i32.const 0 i32.const 376 - i32.const 269 + i32.const 270 i32.const 2 call $~lib/builtins/abort unreachable @@ -13076,7 +13045,7 @@ if i32.const 0 i32.const 376 - i32.const 272 + i32.const 273 i32.const 2 call $~lib/builtins/abort unreachable @@ -13092,7 +13061,7 @@ if i32.const 0 i32.const 376 - i32.const 275 + i32.const 276 i32.const 2 call $~lib/builtins/abort unreachable @@ -13108,7 +13077,7 @@ if i32.const 0 i32.const 376 - i32.const 278 + i32.const 279 i32.const 2 call $~lib/builtins/abort unreachable @@ -13124,7 +13093,7 @@ if i32.const 0 i32.const 376 - i32.const 281 + i32.const 282 i32.const 2 call $~lib/builtins/abort unreachable @@ -13140,7 +13109,7 @@ if i32.const 0 i32.const 376 - i32.const 284 + i32.const 285 i32.const 2 call $~lib/builtins/abort unreachable @@ -13156,7 +13125,7 @@ if i32.const 0 i32.const 376 - i32.const 287 + i32.const 288 i32.const 2 call $~lib/builtins/abort unreachable @@ -13172,7 +13141,7 @@ if i32.const 0 i32.const 376 - i32.const 290 + i32.const 291 i32.const 2 call $~lib/builtins/abort unreachable @@ -13186,7 +13155,7 @@ if i32.const 0 i32.const 376 - i32.const 297 + i32.const 298 i32.const 2 call $~lib/builtins/abort unreachable @@ -13200,7 +13169,7 @@ if i32.const 0 i32.const 376 - i32.const 300 + i32.const 301 i32.const 2 call $~lib/builtins/abort unreachable @@ -13212,7 +13181,7 @@ if i32.const 0 i32.const 376 - i32.const 303 + i32.const 304 i32.const 2 call $~lib/builtins/abort unreachable @@ -13224,7 +13193,7 @@ if i32.const 0 i32.const 376 - i32.const 306 + i32.const 307 i32.const 2 call $~lib/builtins/abort unreachable @@ -13238,7 +13207,7 @@ if i32.const 0 i32.const 376 - i32.const 309 + i32.const 310 i32.const 2 call $~lib/builtins/abort unreachable @@ -13252,7 +13221,7 @@ if i32.const 0 i32.const 376 - i32.const 312 + i32.const 313 i32.const 2 call $~lib/builtins/abort unreachable @@ -13266,7 +13235,7 @@ if i32.const 0 i32.const 376 - i32.const 315 + i32.const 316 i32.const 2 call $~lib/builtins/abort unreachable @@ -13280,7 +13249,7 @@ if i32.const 0 i32.const 376 - i32.const 318 + i32.const 319 i32.const 2 call $~lib/builtins/abort unreachable @@ -13294,7 +13263,7 @@ if i32.const 0 i32.const 376 - i32.const 321 + i32.const 322 i32.const 2 call $~lib/builtins/abort unreachable @@ -13308,7 +13277,7 @@ if i32.const 0 i32.const 376 - i32.const 324 + i32.const 325 i32.const 2 call $~lib/builtins/abort unreachable @@ -13325,7 +13294,7 @@ if i32.const 0 i32.const 376 - i32.const 328 + i32.const 329 i32.const 2 call $~lib/builtins/abort unreachable @@ -13337,7 +13306,7 @@ if i32.const 0 i32.const 376 - i32.const 329 + i32.const 330 i32.const 2 call $~lib/builtins/abort unreachable @@ -13350,7 +13319,7 @@ if i32.const 0 i32.const 376 - i32.const 330 + i32.const 331 i32.const 2 call $~lib/builtins/abort unreachable @@ -13363,7 +13332,7 @@ if i32.const 0 i32.const 376 - i32.const 331 + i32.const 332 i32.const 2 call $~lib/builtins/abort unreachable @@ -13394,7 +13363,7 @@ if i32.const 0 i32.const 376 - i32.const 338 + i32.const 339 i32.const 2 call $~lib/builtins/abort unreachable @@ -13413,7 +13382,7 @@ if i32.const 0 i32.const 376 - i32.const 339 + i32.const 340 i32.const 2 call $~lib/builtins/abort unreachable @@ -13453,7 +13422,7 @@ if i32.const 0 i32.const 376 - i32.const 342 + i32.const 343 i32.const 2 call $~lib/builtins/abort unreachable @@ -13472,7 +13441,7 @@ if i32.const 0 i32.const 376 - i32.const 343 + i32.const 344 i32.const 2 call $~lib/builtins/abort unreachable @@ -13512,7 +13481,7 @@ if i32.const 0 i32.const 376 - i32.const 346 + i32.const 347 i32.const 2 call $~lib/builtins/abort unreachable @@ -13531,7 +13500,7 @@ if i32.const 0 i32.const 376 - i32.const 347 + i32.const 348 i32.const 2 call $~lib/builtins/abort unreachable @@ -13573,7 +13542,7 @@ if i32.const 0 i32.const 376 - i32.const 350 + i32.const 351 i32.const 2 call $~lib/builtins/abort unreachable @@ -13592,7 +13561,7 @@ if i32.const 0 i32.const 376 - i32.const 351 + i32.const 352 i32.const 2 call $~lib/builtins/abort unreachable @@ -13633,7 +13602,7 @@ if i32.const 0 i32.const 376 - i32.const 354 + i32.const 355 i32.const 2 call $~lib/builtins/abort unreachable @@ -13652,7 +13621,7 @@ if i32.const 0 i32.const 376 - i32.const 355 + i32.const 356 i32.const 2 call $~lib/builtins/abort unreachable @@ -13693,7 +13662,7 @@ if i32.const 0 i32.const 376 - i32.const 358 + i32.const 359 i32.const 2 call $~lib/builtins/abort unreachable @@ -13712,7 +13681,7 @@ if i32.const 0 i32.const 376 - i32.const 359 + i32.const 360 i32.const 2 call $~lib/builtins/abort unreachable @@ -13753,7 +13722,7 @@ if i32.const 0 i32.const 376 - i32.const 362 + i32.const 363 i32.const 2 call $~lib/builtins/abort unreachable @@ -13772,7 +13741,7 @@ if i32.const 0 i32.const 376 - i32.const 363 + i32.const 364 i32.const 2 call $~lib/builtins/abort unreachable @@ -13813,7 +13782,7 @@ if i32.const 0 i32.const 376 - i32.const 366 + i32.const 367 i32.const 2 call $~lib/builtins/abort unreachable @@ -13832,7 +13801,7 @@ if i32.const 0 i32.const 376 - i32.const 367 + i32.const 368 i32.const 2 call $~lib/builtins/abort unreachable @@ -13873,7 +13842,7 @@ if i32.const 0 i32.const 376 - i32.const 370 + i32.const 371 i32.const 2 call $~lib/builtins/abort unreachable @@ -13892,7 +13861,7 @@ if i32.const 0 i32.const 376 - i32.const 371 + i32.const 372 i32.const 2 call $~lib/builtins/abort unreachable @@ -13933,7 +13902,7 @@ if i32.const 0 i32.const 376 - i32.const 374 + i32.const 375 i32.const 2 call $~lib/builtins/abort unreachable @@ -13952,7 +13921,7 @@ if i32.const 0 i32.const 376 - i32.const 375 + i32.const 376 i32.const 2 call $~lib/builtins/abort unreachable @@ -13993,7 +13962,7 @@ if i32.const 0 i32.const 376 - i32.const 378 + i32.const 379 i32.const 2 call $~lib/builtins/abort unreachable @@ -14012,7 +13981,7 @@ if i32.const 0 i32.const 376 - i32.const 379 + i32.const 380 i32.const 2 call $~lib/builtins/abort unreachable @@ -14053,7 +14022,7 @@ if i32.const 0 i32.const 376 - i32.const 382 + i32.const 383 i32.const 2 call $~lib/builtins/abort unreachable @@ -14072,7 +14041,7 @@ if i32.const 0 i32.const 376 - i32.const 383 + i32.const 384 i32.const 2 call $~lib/builtins/abort unreachable @@ -14113,7 +14082,7 @@ if i32.const 0 i32.const 376 - i32.const 386 + i32.const 387 i32.const 2 call $~lib/builtins/abort unreachable @@ -14132,7 +14101,7 @@ if i32.const 0 i32.const 376 - i32.const 387 + i32.const 388 i32.const 2 call $~lib/builtins/abort unreachable @@ -14267,7 +14236,7 @@ if i32.const 0 i32.const 376 - i32.const 400 + i32.const 401 i32.const 2 call $~lib/builtins/abort unreachable @@ -14282,7 +14251,7 @@ if i32.const 0 i32.const 376 - i32.const 403 + i32.const 404 i32.const 2 call $~lib/builtins/abort unreachable @@ -14297,7 +14266,7 @@ if i32.const 0 i32.const 376 - i32.const 406 + i32.const 407 i32.const 2 call $~lib/builtins/abort unreachable @@ -14312,7 +14281,7 @@ if i32.const 0 i32.const 376 - i32.const 414 + i32.const 415 i32.const 2 call $~lib/builtins/abort unreachable @@ -14324,7 +14293,7 @@ if i32.const 0 i32.const 376 - i32.const 415 + i32.const 416 i32.const 2 call $~lib/builtins/abort unreachable @@ -14339,7 +14308,7 @@ if i32.const 0 i32.const 376 - i32.const 417 + i32.const 418 i32.const 2 call $~lib/builtins/abort unreachable @@ -14366,7 +14335,7 @@ if i32.const 0 i32.const 376 - i32.const 430 + i32.const 431 i32.const 2 call $~lib/builtins/abort unreachable @@ -14378,7 +14347,7 @@ if i32.const 0 i32.const 376 - i32.const 431 + i32.const 432 i32.const 2 call $~lib/builtins/abort unreachable @@ -14397,7 +14366,7 @@ if i32.const 0 i32.const 376 - i32.const 441 + i32.const 442 i32.const 2 call $~lib/builtins/abort unreachable @@ -14408,7 +14377,7 @@ if i32.const 0 i32.const 376 - i32.const 444 + i32.const 445 i32.const 2 call $~lib/builtins/abort unreachable @@ -14421,7 +14390,7 @@ if i32.const 0 i32.const 376 - i32.const 452 + i32.const 453 i32.const 2 call $~lib/builtins/abort unreachable @@ -14433,7 +14402,7 @@ if i32.const 0 i32.const 376 - i32.const 453 + i32.const 454 i32.const 2 call $~lib/builtins/abort unreachable @@ -14444,7 +14413,7 @@ if i32.const 0 i32.const 376 - i32.const 455 + i32.const 456 i32.const 2 call $~lib/builtins/abort unreachable @@ -14469,7 +14438,7 @@ if i32.const 0 i32.const 376 - i32.const 468 + i32.const 469 i32.const 2 call $~lib/builtins/abort unreachable @@ -14481,7 +14450,7 @@ if i32.const 0 i32.const 376 - i32.const 469 + i32.const 470 i32.const 2 call $~lib/builtins/abort unreachable @@ -14500,7 +14469,7 @@ if i32.const 0 i32.const 376 - i32.const 479 + i32.const 480 i32.const 2 call $~lib/builtins/abort unreachable @@ -14511,7 +14480,7 @@ if i32.const 0 i32.const 376 - i32.const 482 + i32.const 483 i32.const 2 call $~lib/builtins/abort unreachable @@ -14522,7 +14491,7 @@ if i32.const 0 i32.const 376 - i32.const 490 + i32.const 491 i32.const 2 call $~lib/builtins/abort unreachable @@ -14534,7 +14503,7 @@ if i32.const 0 i32.const 376 - i32.const 491 + i32.const 492 i32.const 2 call $~lib/builtins/abort unreachable @@ -14547,7 +14516,7 @@ if i32.const 0 i32.const 376 - i32.const 493 + i32.const 494 i32.const 2 call $~lib/builtins/abort unreachable @@ -14570,7 +14539,7 @@ if i32.const 0 i32.const 376 - i32.const 506 + i32.const 507 i32.const 2 call $~lib/builtins/abort unreachable @@ -14582,7 +14551,7 @@ if i32.const 0 i32.const 376 - i32.const 507 + i32.const 508 i32.const 2 call $~lib/builtins/abort unreachable @@ -14604,7 +14573,7 @@ if i32.const 0 i32.const 376 - i32.const 518 + i32.const 519 i32.const 2 call $~lib/builtins/abort unreachable @@ -14620,7 +14589,7 @@ if i32.const 0 i32.const 376 - i32.const 527 + i32.const 528 i32.const 2 call $~lib/builtins/abort unreachable @@ -14632,7 +14601,7 @@ if i32.const 0 i32.const 376 - i32.const 528 + i32.const 529 i32.const 2 call $~lib/builtins/abort unreachable @@ -14648,7 +14617,7 @@ if i32.const 0 i32.const 376 - i32.const 531 + i32.const 532 i32.const 2 call $~lib/builtins/abort unreachable @@ -14676,7 +14645,7 @@ if i32.const 0 i32.const 376 - i32.const 545 + i32.const 546 i32.const 2 call $~lib/builtins/abort unreachable @@ -14688,7 +14657,7 @@ if i32.const 0 i32.const 376 - i32.const 546 + i32.const 547 i32.const 2 call $~lib/builtins/abort unreachable @@ -14709,7 +14678,7 @@ if i32.const 0 i32.const 376 - i32.const 571 + i32.const 572 i32.const 2 call $~lib/builtins/abort unreachable @@ -14752,7 +14721,7 @@ if i32.const 0 i32.const 376 - i32.const 585 + i32.const 586 i32.const 2 call $~lib/builtins/abort unreachable @@ -14768,7 +14737,7 @@ if i32.const 0 i32.const 376 - i32.const 586 + i32.const 587 i32.const 2 call $~lib/builtins/abort unreachable @@ -14785,7 +14754,7 @@ if i32.const 0 i32.const 376 - i32.const 595 + i32.const 596 i32.const 2 call $~lib/builtins/abort unreachable @@ -14797,7 +14766,7 @@ if i32.const 0 i32.const 376 - i32.const 596 + i32.const 597 i32.const 2 call $~lib/builtins/abort unreachable @@ -14814,7 +14783,7 @@ if i32.const 0 i32.const 376 - i32.const 603 + i32.const 604 i32.const 2 call $~lib/builtins/abort unreachable @@ -14843,7 +14812,7 @@ if i32.const 0 i32.const 376 - i32.const 618 + i32.const 619 i32.const 2 call $~lib/builtins/abort unreachable @@ -14855,7 +14824,7 @@ if i32.const 0 i32.const 376 - i32.const 619 + i32.const 620 i32.const 2 call $~lib/builtins/abort unreachable @@ -14878,7 +14847,7 @@ if i32.const 0 i32.const 376 - i32.const 629 + i32.const 630 i32.const 2 call $~lib/builtins/abort unreachable @@ -14895,7 +14864,7 @@ if i32.const 0 i32.const 376 - i32.const 638 + i32.const 639 i32.const 2 call $~lib/builtins/abort unreachable @@ -14907,7 +14876,7 @@ if i32.const 0 i32.const 376 - i32.const 639 + i32.const 640 i32.const 2 call $~lib/builtins/abort unreachable @@ -14924,7 +14893,7 @@ if i32.const 0 i32.const 376 - i32.const 646 + i32.const 647 i32.const 2 call $~lib/builtins/abort unreachable @@ -14953,7 +14922,7 @@ if i32.const 0 i32.const 376 - i32.const 661 + i32.const 662 i32.const 2 call $~lib/builtins/abort unreachable @@ -14965,7 +14934,7 @@ if i32.const 0 i32.const 376 - i32.const 662 + i32.const 663 i32.const 2 call $~lib/builtins/abort unreachable @@ -14989,7 +14958,7 @@ if i32.const 0 i32.const 376 - i32.const 672 + i32.const 673 i32.const 2 call $~lib/builtins/abort unreachable @@ -15005,7 +14974,7 @@ if i32.const 0 i32.const 376 - i32.const 676 + i32.const 677 i32.const 2 call $~lib/builtins/abort unreachable @@ -15021,7 +14990,7 @@ if i32.const 0 i32.const 376 - i32.const 679 + i32.const 680 i32.const 2 call $~lib/builtins/abort unreachable @@ -15033,7 +15002,7 @@ if i32.const 0 i32.const 376 - i32.const 682 + i32.const 683 i32.const 2 call $~lib/builtins/abort unreachable @@ -15049,7 +15018,7 @@ if i32.const 0 i32.const 376 - i32.const 690 + i32.const 691 i32.const 2 call $~lib/builtins/abort unreachable @@ -15061,7 +15030,7 @@ if i32.const 0 i32.const 376 - i32.const 691 + i32.const 692 i32.const 2 call $~lib/builtins/abort unreachable @@ -15077,7 +15046,7 @@ if i32.const 0 i32.const 376 - i32.const 693 + i32.const 694 i32.const 2 call $~lib/builtins/abort unreachable @@ -15105,7 +15074,7 @@ if i32.const 0 i32.const 376 - i32.const 706 + i32.const 707 i32.const 2 call $~lib/builtins/abort unreachable @@ -15117,7 +15086,7 @@ if i32.const 0 i32.const 376 - i32.const 707 + i32.const 708 i32.const 2 call $~lib/builtins/abort unreachable @@ -15139,7 +15108,7 @@ if i32.const 0 i32.const 376 - i32.const 717 + i32.const 718 i32.const 2 call $~lib/builtins/abort unreachable @@ -15155,7 +15124,7 @@ if i32.const 0 i32.const 376 - i32.const 721 + i32.const 722 i32.const 2 call $~lib/builtins/abort unreachable @@ -15171,7 +15140,7 @@ if i32.const 0 i32.const 376 - i32.const 724 + i32.const 725 i32.const 2 call $~lib/builtins/abort unreachable @@ -15183,7 +15152,7 @@ if i32.const 0 i32.const 376 - i32.const 727 + i32.const 728 i32.const 2 call $~lib/builtins/abort unreachable @@ -15199,7 +15168,7 @@ if i32.const 0 i32.const 376 - i32.const 735 + i32.const 736 i32.const 2 call $~lib/builtins/abort unreachable @@ -15211,7 +15180,7 @@ if i32.const 0 i32.const 376 - i32.const 736 + i32.const 737 i32.const 2 call $~lib/builtins/abort unreachable @@ -15227,7 +15196,7 @@ if i32.const 0 i32.const 376 - i32.const 738 + i32.const 739 i32.const 2 call $~lib/builtins/abort unreachable @@ -15255,7 +15224,7 @@ if i32.const 0 i32.const 376 - i32.const 751 + i32.const 752 i32.const 2 call $~lib/builtins/abort unreachable @@ -15265,7 +15234,7 @@ if i32.const 0 i32.const 376 - i32.const 752 + i32.const 753 i32.const 2 call $~lib/builtins/abort unreachable @@ -15326,7 +15295,7 @@ if i32.const 0 i32.const 376 - i32.const 841 + i32.const 842 i32.const 2 call $~lib/builtins/abort unreachable @@ -15344,11 +15313,11 @@ global.set $~lib/argc i32.const 0 local.set $2 - block $1of139 - block $0of140 - block $outOfRange41 + block $1of138 + block $0of139 + block $outOfRange40 global.get $~lib/argc - br_table $0of140 $1of139 $outOfRange41 + br_table $0of139 $1of138 $outOfRange40 end unreachable end @@ -15372,7 +15341,7 @@ if i32.const 0 i32.const 376 - i32.const 845 + i32.const 846 i32.const 2 call $~lib/builtins/abort unreachable @@ -15390,11 +15359,11 @@ global.set $~lib/argc i32.const 0 local.set $2 - block $1of142 - block $0of143 - block $outOfRange44 + block $1of141 + block $0of142 + block $outOfRange43 global.get $~lib/argc - br_table $0of143 $1of142 $outOfRange44 + br_table $0of142 $1of141 $outOfRange43 end unreachable end @@ -15419,7 +15388,7 @@ if i32.const 0 i32.const 376 - i32.const 849 + i32.const 850 i32.const 2 call $~lib/builtins/abort unreachable @@ -15437,11 +15406,11 @@ global.set $~lib/argc i32.const 0 local.set $4 - block $1of145 - block $0of146 - block $outOfRange47 + block $1of144 + block $0of145 + block $outOfRange46 global.get $~lib/argc - br_table $0of146 $1of145 $outOfRange47 + br_table $0of145 $1of144 $outOfRange46 end unreachable end @@ -15466,7 +15435,7 @@ if i32.const 0 i32.const 376 - i32.const 853 + i32.const 854 i32.const 2 call $~lib/builtins/abort unreachable @@ -15549,7 +15518,7 @@ if i32.const 0 i32.const 376 - i32.const 873 + i32.const 874 i32.const 2 call $~lib/builtins/abort unreachable @@ -15570,7 +15539,7 @@ if i32.const 0 i32.const 376 - i32.const 876 + i32.const 877 i32.const 2 call $~lib/builtins/abort unreachable @@ -15585,7 +15554,7 @@ if i32.const 0 i32.const 376 - i32.const 879 + i32.const 880 i32.const 2 call $~lib/builtins/abort unreachable @@ -15600,7 +15569,7 @@ if i32.const 0 i32.const 376 - i32.const 882 + i32.const 883 i32.const 2 call $~lib/builtins/abort unreachable @@ -15615,7 +15584,7 @@ if i32.const 0 i32.const 376 - i32.const 885 + i32.const 886 i32.const 2 call $~lib/builtins/abort unreachable @@ -15630,7 +15599,7 @@ if i32.const 0 i32.const 376 - i32.const 888 + i32.const 889 i32.const 2 call $~lib/builtins/abort unreachable @@ -15645,7 +15614,7 @@ if i32.const 0 i32.const 376 - i32.const 891 + i32.const 892 i32.const 2 call $~lib/builtins/abort unreachable @@ -15766,13 +15735,13 @@ global.set $~lib/argc i32.const 0 local.set $2 - block $1of148 - block $0of149 - block $outOfRange50 + block $1of147 + block $0of148 + block $outOfRange49 global.get $~lib/argc i32.const 1 i32.sub - br_table $0of149 $1of148 $outOfRange50 + br_table $0of148 $1of147 $outOfRange49 end unreachable end @@ -15789,7 +15758,7 @@ if i32.const 0 i32.const 376 - i32.const 928 + i32.const 929 i32.const 2 call $~lib/builtins/abort unreachable @@ -15800,13 +15769,13 @@ global.set $~lib/argc i32.const 0 local.set $4 - block $1of151 - block $0of152 - block $outOfRange53 + block $1of150 + block $0of151 + block $outOfRange52 global.get $~lib/argc i32.const 1 i32.sub - br_table $0of152 $1of151 $outOfRange53 + br_table $0of151 $1of150 $outOfRange52 end unreachable end @@ -15848,7 +15817,7 @@ if i32.const 0 i32.const 376 - i32.const 939 + i32.const 940 i32.const 2 call $~lib/builtins/abort unreachable @@ -15869,7 +15838,7 @@ if i32.const 0 i32.const 376 - i32.const 940 + i32.const 941 i32.const 2 call $~lib/builtins/abort unreachable @@ -15890,7 +15859,7 @@ if i32.const 0 i32.const 376 - i32.const 941 + i32.const 942 i32.const 2 call $~lib/builtins/abort unreachable @@ -15911,7 +15880,7 @@ if i32.const 0 i32.const 376 - i32.const 942 + i32.const 943 i32.const 2 call $~lib/builtins/abort unreachable @@ -15938,20 +15907,20 @@ if i32.const 0 i32.const 376 - i32.const 943 + i32.const 944 i32.const 2 call $~lib/builtins/abort unreachable end i32.const 3 i32.const 2 - i32.const 14 + i32.const 13 i32.const 6168 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $5 i32.const 4248 - call $~lib/array/Array<~lib/string/String>#join + call $~lib/array/Array<~lib/string/String | null>#join local.tee $6 i32.const 6144 call $~lib/string/String.__eq @@ -15959,7 +15928,7 @@ if i32.const 0 i32.const 376 - i32.const 944 + i32.const 945 i32.const 2 call $~lib/builtins/abort unreachable @@ -16003,7 +15972,7 @@ if i32.const 0 i32.const 376 - i32.const 946 + i32.const 947 i32.const 2 call $~lib/builtins/abort unreachable @@ -16085,7 +16054,7 @@ if i32.const 0 i32.const 376 - i32.const 956 + i32.const 957 i32.const 2 call $~lib/builtins/abort unreachable @@ -16099,7 +16068,7 @@ if i32.const 0 i32.const 376 - i32.const 957 + i32.const 958 i32.const 2 call $~lib/builtins/abort unreachable @@ -16113,7 +16082,7 @@ if i32.const 0 i32.const 376 - i32.const 958 + i32.const 959 i32.const 2 call $~lib/builtins/abort unreachable @@ -16127,7 +16096,7 @@ if i32.const 0 i32.const 376 - i32.const 959 + i32.const 960 i32.const 2 call $~lib/builtins/abort unreachable @@ -16154,7 +16123,7 @@ if i32.const 0 i32.const 376 - i32.const 961 + i32.const 962 i32.const 2 call $~lib/builtins/abort unreachable @@ -16181,7 +16150,7 @@ if i32.const 0 i32.const 376 - i32.const 962 + i32.const 963 i32.const 2 call $~lib/builtins/abort unreachable @@ -16208,7 +16177,7 @@ if i32.const 0 i32.const 376 - i32.const 963 + i32.const 964 i32.const 2 call $~lib/builtins/abort unreachable @@ -16235,7 +16204,7 @@ if i32.const 0 i32.const 376 - i32.const 964 + i32.const 965 i32.const 2 call $~lib/builtins/abort unreachable @@ -16257,14 +16226,14 @@ if i32.const 0 i32.const 376 - i32.const 968 + i32.const 969 i32.const 2 call $~lib/builtins/abort unreachable end i32.const 4 i32.const 2 - i32.const 14 + i32.const 13 i32.const 7000 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -16277,7 +16246,7 @@ if i32.const 0 i32.const 376 - i32.const 969 + i32.const 970 i32.const 2 call $~lib/builtins/abort unreachable @@ -16327,7 +16296,7 @@ if i32.const 0 i32.const 376 - i32.const 972 + i32.const 973 i32.const 2 call $~lib/builtins/abort unreachable @@ -16377,7 +16346,7 @@ if i32.const 0 i32.const 376 - i32.const 975 + i32.const 976 i32.const 2 call $~lib/builtins/abort unreachable @@ -16426,7 +16395,7 @@ if i32.const 0 i32.const 376 - i32.const 978 + i32.const 979 i32.const 2 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/array.ts b/tests/compiler/std/array.ts index e92b4b2e00..48a7a51fe9 100644 --- a/tests/compiler/std/array.ts +++ b/tests/compiler/std/array.ts @@ -153,9 +153,10 @@ class P {} out.pop(); assert(out.length == 4); - out = arr.concat(null); - assert(out.length == 3); - assert(out[2] == 45); + // TODO: wait for variable function parameters + // out = arr.concat(null); + // assert(out.length == 3); + // assert(out[2] == 45); let source: i32[] = []; assert(source.length == 0); @@ -941,7 +942,7 @@ class Ref { constructor() {} } assert(([1, 2, 3]).join("-") == "1-2-3"); assert(([i32.MIN_VALUE, i32.MIN_VALUE]).join("__") == "-2147483648__-2147483648"); assert(([0.0, 1.0, -2.0, NaN, -Infinity, Infinity]).join(", ") == "0.0, 1.0, -2.0, NaN, -Infinity, Infinity"); - assert((["", "1", null]).join("") == "1"); + assert((>["", "1", null]).join("") == "1"); let refArr: (Ref | null)[] = [new Ref(), null, new Ref()]; assert(refArr.join() == "[object Object],,[object Object]"); } @@ -966,7 +967,7 @@ class Ref { constructor() {} } let arrStr: (string | null)[] = ["", "a", "a", "ab", "b", "ba", null] assert(arrStr.toString() == ",a,a,ab,b,ba,"); - assert((["1", "2", null, "4"]).toString() == "1,2,,4"); + assert((>["1", "2", null, "4"]).toString() == "1,2,,4"); var subarr32: i32[][] = [[1,2], [3,4]]; assert(subarr32.toString() == "1,2,3,4"); diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index f3b402972c..c99857cfe3 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -5681,7 +5681,7 @@ if i32.const 0 i32.const 376 - i32.const 568 + i32.const 569 i32.const 6 call $~lib/builtins/abort unreachable @@ -8998,7 +8998,7 @@ if i32.const 0 i32.const 376 - i32.const 830 + i32.const 831 i32.const 2 call $~lib/builtins/abort unreachable @@ -9505,7 +9505,7 @@ if i32.const 0 i32.const 376 - i32.const 830 + i32.const 831 i32.const 2 call $~lib/builtins/abort unreachable @@ -9988,7 +9988,7 @@ if i32.const 0 i32.const 376 - i32.const 830 + i32.const 831 i32.const 2 call $~lib/builtins/abort unreachable @@ -10280,7 +10280,7 @@ if i32.const 0 i32.const 376 - i32.const 830 + i32.const 831 i32.const 2 call $~lib/builtins/abort unreachable @@ -11302,7 +11302,7 @@ if i32.const 0 i32.const 376 - i32.const 830 + i32.const 831 i32.const 2 call $~lib/builtins/abort unreachable @@ -14044,7 +14044,7 @@ local.get $2 return ) - (func $~lib/array/Array<~lib/string/String>#join_str (; 250 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String | null>#join_str (; 250 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14279,14 +14279,14 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $~lib/array/Array<~lib/string/String>#join (; 251 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String | null>#join (; 251 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/pure/__retain drop local.get $0 local.get $1 - call $~lib/array/Array<~lib/string/String>#join_str + call $~lib/array/Array<~lib/string/String | null>#join_str local.set $2 local.get $1 call $~lib/rt/pure/__release @@ -15828,266 +15828,12 @@ i32.const 4464 call $~lib/array/Array#join ) - (func $~lib/array/Array<~lib/string/String | null>#join_str (; 280 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - local.get $1 - call $~lib/rt/pure/__retain - drop - local.get $0 - i32.load offset=12 - i32.const 1 - i32.sub - local.set $2 - local.get $2 - i32.const 0 - i32.lt_s - if - i32.const 4248 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return - end - local.get $0 - i32.load offset=4 - local.set $4 - local.get $2 - i32.eqz - if - local.get $4 - i32.load - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return - end - local.get $1 - call $~lib/string/String#get:length - local.set $5 - i32.const 0 - local.set $6 - i32.const 0 - local.set $7 - block $break|0 - i32.const 0 - local.set $3 - local.get $2 - i32.const 1 - i32.add - local.set $8 - loop $loop|0 - local.get $3 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $4 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $9 - local.get $7 - local.tee $10 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - drop - local.get $10 - call $~lib/rt/pure/__release - end - local.get $9 - local.set $7 - local.get $7 - i32.const 0 - i32.ne - if - local.get $6 - local.get $7 - call $~lib/string/String#get:length - i32.add - local.set $6 - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $loop|0 - end - unreachable - end - i32.const 0 - local.set $11 - local.get $6 - local.get $5 - local.get $2 - i32.mul - i32.add - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $12 - block $break|1 - i32.const 0 - local.set $8 - loop $loop|1 - local.get $8 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|1 - local.get $4 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $10 - local.get $7 - local.tee $3 - i32.ne - if - local.get $10 - call $~lib/rt/pure/__retain - drop - local.get $3 - call $~lib/rt/pure/__release - end - local.get $10 - local.set $7 - local.get $7 - i32.const 0 - i32.ne - if - local.get $7 - call $~lib/string/String#get:length - local.set $10 - local.get $12 - local.get $11 - i32.const 1 - i32.shl - i32.add - local.get $7 - local.get $10 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $11 - local.get $10 - i32.add - local.set $11 - end - local.get $5 - if - local.get $12 - local.get $11 - i32.const 1 - i32.shl - i32.add - local.get $1 - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $11 - local.get $5 - i32.add - local.set $11 - end - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $loop|1 - end - unreachable - end - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $9 - local.get $7 - local.tee $8 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - drop - local.get $8 - call $~lib/rt/pure/__release - end - local.get $9 - local.set $7 - local.get $7 - i32.const 0 - i32.ne - if - local.get $12 - local.get $11 - i32.const 1 - i32.shl - i32.add - local.get $7 - local.get $7 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - end - local.get $12 - local.set $9 - local.get $1 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $9 - ) - (func $~lib/array/Array<~lib/string/String | null>#join (; 281 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/pure/__retain - drop - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String | null>#join_str - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - ) - (func $~lib/array/Array<~lib/string/String | null>#toString (; 282 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/string/String | null>#toString (; 280 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 4464 call $~lib/array/Array<~lib/string/String | null>#join ) - (func $~lib/array/Array<~lib/string/String>#toString (; 283 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 4464 - call $~lib/array/Array<~lib/string/String>#join - ) - (func $~lib/array/Array<~lib/array/Array>#join_arr (; 284 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#join_arr (; 281 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -16305,7 +16051,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/array/Array<~lib/array/Array>#join (; 285 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#join (; 282 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/pure/__retain @@ -16319,19 +16065,19 @@ local.get $2 return ) - (func $~lib/array/Array<~lib/array/Array>#toString (; 286 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#toString (; 283 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 4464 call $~lib/array/Array<~lib/array/Array>#join ) - (func $~lib/util/number/itoa (; 287 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa (; 284 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 255 i32.and call $~lib/util/number/utoa32 return ) - (func $~lib/util/number/itoa_stream (; 288 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 285 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -16374,7 +16120,7 @@ call $~lib/util/number/utoa32_lut local.get $3 ) - (func $~lib/array/Array#join_int (; 289 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_int (; 286 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -16527,7 +16273,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/array/Array#join (; 290 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 287 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/pure/__retain @@ -16541,7 +16287,7 @@ local.get $2 return ) - (func $~lib/array/Array<~lib/array/Array>#join_arr (; 291 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#join_arr (; 288 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -16759,7 +16505,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/array/Array<~lib/array/Array>#join (; 292 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#join (; 289 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/pure/__retain @@ -16773,12 +16519,12 @@ local.get $2 return ) - (func $~lib/array/Array<~lib/array/Array>#toString (; 293 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#toString (; 290 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 4464 call $~lib/array/Array<~lib/array/Array>#join ) - (func $~lib/array/Array<~lib/array/Array>#join_arr (; 294 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#join_arr (; 291 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -16996,7 +16742,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/array/Array<~lib/array/Array>#join (; 295 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#join (; 292 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/pure/__retain @@ -17010,7 +16756,7 @@ local.get $2 return ) - (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join_arr (; 296 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join_arr (; 293 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -17228,7 +16974,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join (; 297 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join (; 294 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/pure/__retain @@ -17242,12 +16988,12 @@ local.get $2 return ) - (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#toString (; 298 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#toString (; 295 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 4464 call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join ) - (func $start:std/array (; 299 ;) (type $FUNCSIG$v) + (func $start:std/array (; 296 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -18230,51 +17976,16 @@ call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#concat - local.set $6 - local.get $0 - call $~lib/rt/pure/__release - local.get $6 - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 157 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/array/Array#__get - i32.const 45 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 158 - i32.const 2 - call $~lib/builtins/abort - unreachable - end i32.const 0 i32.const 2 i32.const 3 i32.const 936 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $5 + local.tee $1 call $~lib/rt/pure/__retain - local.set $6 - local.get $6 + local.set $5 + local.get $5 call $~lib/array/Array#get:length i32.const 0 i32.eq @@ -18282,18 +17993,18 @@ if i32.const 0 i32.const 376 - i32.const 161 + i32.const 162 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 global.get $std/array/arr call $~lib/array/Array#concat - local.set $7 + local.set $6 local.get $0 call $~lib/rt/pure/__release - local.get $7 + local.get $6 local.set $0 local.get $0 call $~lib/array/Array#get:length @@ -18303,12 +18014,12 @@ if i32.const 0 i32.const 376 - i32.const 163 + i32.const 164 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 call $~lib/array/Array#get:length i32.const 0 i32.eq @@ -18316,7 +18027,7 @@ if i32.const 0 i32.const 376 - i32.const 164 + i32.const 165 i32.const 2 call $~lib/builtins/abort unreachable @@ -18327,12 +18038,12 @@ call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - local.get $5 + local.get $1 call $~lib/rt/pure/__release - local.get $6 + local.get $5 call $~lib/rt/pure/__release i32.const 0 - local.set $6 + local.set $5 i32.const 5 i32.const 2 i32.const 3 @@ -18340,25 +18051,25 @@ call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $3 - local.tee $4 - local.get $6 - local.tee $5 + local.tee $7 + local.get $5 + local.tee $1 i32.ne if - local.get $4 + local.get $7 call $~lib/rt/pure/__retain drop - local.get $5 + local.get $1 call $~lib/rt/pure/__release end - local.get $4 - local.set $6 - local.get $6 + local.get $7 + local.set $5 + local.get $5 i32.const 0 i32.const 3 i32.const 2147483647 call $~lib/array/Array#copyWithin - local.tee $4 + local.tee $7 i32.const 5 i32.const 2 i32.const 3 @@ -18372,7 +18083,7 @@ if i32.const 0 i32.const 376 - i32.const 172 + i32.const 173 i32.const 2 call $~lib/builtins/abort unreachable @@ -18384,39 +18095,39 @@ call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $2 + local.tee $4 + local.get $5 local.tee $1 - local.get $6 - local.tee $5 i32.ne if - local.get $1 + local.get $4 call $~lib/rt/pure/__retain drop - local.get $5 + local.get $1 call $~lib/rt/pure/__release end - local.get $1 - local.set $6 - local.get $6 + local.get $4 + local.set $5 + local.get $5 i32.const 1 i32.const 3 i32.const 2147483647 call $~lib/array/Array#copyWithin - local.tee $1 + local.tee $4 i32.const 5 i32.const 2 i32.const 3 i32.const 1072 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $7 + local.tee $6 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 376 - i32.const 174 + i32.const 175 i32.const 2 call $~lib/builtins/abort unreachable @@ -18428,25 +18139,25 @@ call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $8 - local.tee $5 - local.get $6 + local.tee $1 + local.get $5 local.tee $9 i32.ne if - local.get $5 + local.get $1 call $~lib/rt/pure/__retain drop local.get $9 call $~lib/rt/pure/__release end + local.get $1 + local.set $5 local.get $5 - local.set $6 - local.get $6 i32.const 1 i32.const 2 i32.const 2147483647 call $~lib/array/Array#copyWithin - local.tee $5 + local.tee $1 i32.const 5 i32.const 2 i32.const 3 @@ -18460,7 +18171,7 @@ if i32.const 0 i32.const 376 - i32.const 176 + i32.const 177 i32.const 2 call $~lib/builtins/abort unreachable @@ -18473,7 +18184,7 @@ call $~lib/rt/pure/__retain local.tee $11 local.tee $9 - local.get $6 + local.get $5 local.tee $12 i32.ne if @@ -18484,8 +18195,8 @@ call $~lib/rt/pure/__release end local.get $9 - local.set $6 - local.get $6 + local.set $5 + local.get $5 i32.const 2 i32.const 2 i32.const 2147483647 @@ -18504,7 +18215,7 @@ if i32.const 0 i32.const 376 - i32.const 178 + i32.const 179 i32.const 2 call $~lib/builtins/abort unreachable @@ -18517,7 +18228,7 @@ call $~lib/rt/pure/__retain local.tee $14 local.tee $12 - local.get $6 + local.get $5 local.tee $15 i32.ne if @@ -18528,8 +18239,8 @@ call $~lib/rt/pure/__release end local.get $12 - local.set $6 - local.get $6 + local.set $5 + local.get $5 i32.const 0 i32.const 3 i32.const 4 @@ -18548,7 +18259,7 @@ if i32.const 0 i32.const 376 - i32.const 180 + i32.const 181 i32.const 2 call $~lib/builtins/abort unreachable @@ -18561,7 +18272,7 @@ call $~lib/rt/pure/__retain local.tee $17 local.tee $15 - local.get $6 + local.get $5 local.tee $18 i32.ne if @@ -18572,8 +18283,8 @@ call $~lib/rt/pure/__release end local.get $15 - local.set $6 - local.get $6 + local.set $5 + local.get $5 i32.const 1 i32.const 3 i32.const 4 @@ -18592,7 +18303,7 @@ if i32.const 0 i32.const 376 - i32.const 182 + i32.const 183 i32.const 2 call $~lib/builtins/abort unreachable @@ -18605,7 +18316,7 @@ call $~lib/rt/pure/__retain local.tee $20 local.tee $18 - local.get $6 + local.get $5 local.tee $21 i32.ne if @@ -18616,8 +18327,8 @@ call $~lib/rt/pure/__release end local.get $18 - local.set $6 - local.get $6 + local.set $5 + local.get $5 i32.const 1 i32.const 2 i32.const 4 @@ -18636,7 +18347,7 @@ if i32.const 0 i32.const 376 - i32.const 184 + i32.const 185 i32.const 2 call $~lib/builtins/abort unreachable @@ -18649,7 +18360,7 @@ call $~lib/rt/pure/__retain local.tee $23 local.tee $21 - local.get $6 + local.get $5 local.tee $24 i32.ne if @@ -18660,8 +18371,8 @@ call $~lib/rt/pure/__release end local.get $21 - local.set $6 - local.get $6 + local.set $5 + local.get $5 i32.const 0 i32.const -2 i32.const 2147483647 @@ -18680,7 +18391,7 @@ if i32.const 0 i32.const 376 - i32.const 186 + i32.const 187 i32.const 2 call $~lib/builtins/abort unreachable @@ -18693,7 +18404,7 @@ call $~lib/rt/pure/__retain local.tee $26 local.tee $24 - local.get $6 + local.get $5 local.tee $27 i32.ne if @@ -18704,8 +18415,8 @@ call $~lib/rt/pure/__release end local.get $24 - local.set $6 - local.get $6 + local.set $5 + local.get $5 i32.const 0 i32.const -2 i32.const -1 @@ -18724,7 +18435,7 @@ if i32.const 0 i32.const 376 - i32.const 188 + i32.const 189 i32.const 2 call $~lib/builtins/abort unreachable @@ -18737,7 +18448,7 @@ call $~lib/rt/pure/__retain local.tee $29 local.tee $27 - local.get $6 + local.get $5 local.tee $30 i32.ne if @@ -18748,8 +18459,8 @@ call $~lib/rt/pure/__release end local.get $27 - local.set $6 - local.get $6 + local.set $5 + local.get $5 i32.const -4 i32.const -3 i32.const -2 @@ -18768,7 +18479,7 @@ if i32.const 0 i32.const 376 - i32.const 190 + i32.const 191 i32.const 2 call $~lib/builtins/abort unreachable @@ -18781,7 +18492,7 @@ call $~lib/rt/pure/__retain local.tee $32 local.tee $30 - local.get $6 + local.get $5 local.tee $33 i32.ne if @@ -18792,8 +18503,8 @@ call $~lib/rt/pure/__release end local.get $30 - local.set $6 - local.get $6 + local.set $5 + local.get $5 i32.const -4 i32.const -3 i32.const -1 @@ -18812,7 +18523,7 @@ if i32.const 0 i32.const 376 - i32.const 192 + i32.const 193 i32.const 2 call $~lib/builtins/abort unreachable @@ -18825,7 +18536,7 @@ call $~lib/rt/pure/__retain local.tee $35 local.tee $33 - local.get $6 + local.get $5 local.tee $36 i32.ne if @@ -18836,8 +18547,8 @@ call $~lib/rt/pure/__release end local.get $33 - local.set $6 - local.get $6 + local.set $5 + local.get $5 i32.const -4 i32.const -3 i32.const 2147483647 @@ -18856,28 +18567,28 @@ if i32.const 0 i32.const 376 - i32.const 194 + i32.const 195 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - local.get $4 + local.get $7 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - local.get $1 + local.get $4 call $~lib/rt/pure/__release - local.get $7 + local.get $6 call $~lib/rt/pure/__release local.get $8 call $~lib/rt/pure/__release - local.get $5 + local.get $1 call $~lib/rt/pure/__release local.get $10 call $~lib/rt/pure/__release @@ -18947,7 +18658,7 @@ if i32.const 0 i32.const 376 - i32.const 202 + i32.const 203 i32.const 2 call $~lib/builtins/abort unreachable @@ -18960,7 +18671,7 @@ if i32.const 0 i32.const 376 - i32.const 203 + i32.const 204 i32.const 2 call $~lib/builtins/abort unreachable @@ -18974,7 +18685,7 @@ if i32.const 0 i32.const 376 - i32.const 204 + i32.const 205 i32.const 2 call $~lib/builtins/abort unreachable @@ -18988,7 +18699,7 @@ if i32.const 0 i32.const 376 - i32.const 205 + i32.const 206 i32.const 2 call $~lib/builtins/abort unreachable @@ -19002,7 +18713,7 @@ if i32.const 0 i32.const 376 - i32.const 206 + i32.const 207 i32.const 2 call $~lib/builtins/abort unreachable @@ -19016,7 +18727,7 @@ if i32.const 0 i32.const 376 - i32.const 207 + i32.const 208 i32.const 2 call $~lib/builtins/abort unreachable @@ -19033,7 +18744,7 @@ if i32.const 0 i32.const 376 - i32.const 211 + i32.const 212 i32.const 2 call $~lib/builtins/abort unreachable @@ -19046,7 +18757,7 @@ if i32.const 0 i32.const 376 - i32.const 212 + i32.const 213 i32.const 2 call $~lib/builtins/abort unreachable @@ -19060,7 +18771,7 @@ if i32.const 0 i32.const 376 - i32.const 213 + i32.const 214 i32.const 2 call $~lib/builtins/abort unreachable @@ -19074,7 +18785,7 @@ if i32.const 0 i32.const 376 - i32.const 214 + i32.const 215 i32.const 2 call $~lib/builtins/abort unreachable @@ -19088,7 +18799,7 @@ if i32.const 0 i32.const 376 - i32.const 215 + i32.const 216 i32.const 2 call $~lib/builtins/abort unreachable @@ -19102,7 +18813,7 @@ if i32.const 0 i32.const 376 - i32.const 216 + i32.const 217 i32.const 2 call $~lib/builtins/abort unreachable @@ -19116,7 +18827,7 @@ if i32.const 0 i32.const 376 - i32.const 217 + i32.const 218 i32.const 2 call $~lib/builtins/abort unreachable @@ -19131,7 +18842,7 @@ if i32.const 0 i32.const 376 - i32.const 226 + i32.const 227 i32.const 2 call $~lib/builtins/abort unreachable @@ -19144,7 +18855,7 @@ if i32.const 0 i32.const 376 - i32.const 227 + i32.const 228 i32.const 2 call $~lib/builtins/abort unreachable @@ -19157,7 +18868,7 @@ if i32.const 0 i32.const 376 - i32.const 228 + i32.const 229 i32.const 2 call $~lib/builtins/abort unreachable @@ -19171,7 +18882,7 @@ if i32.const 0 i32.const 376 - i32.const 229 + i32.const 230 i32.const 2 call $~lib/builtins/abort unreachable @@ -19185,7 +18896,7 @@ if i32.const 0 i32.const 376 - i32.const 230 + i32.const 231 i32.const 2 call $~lib/builtins/abort unreachable @@ -19199,7 +18910,7 @@ if i32.const 0 i32.const 376 - i32.const 231 + i32.const 232 i32.const 2 call $~lib/builtins/abort unreachable @@ -19213,7 +18924,7 @@ if i32.const 0 i32.const 376 - i32.const 232 + i32.const 233 i32.const 2 call $~lib/builtins/abort unreachable @@ -19228,7 +18939,7 @@ if i32.const 0 i32.const 376 - i32.const 236 + i32.const 237 i32.const 2 call $~lib/builtins/abort unreachable @@ -19241,7 +18952,7 @@ if i32.const 0 i32.const 376 - i32.const 237 + i32.const 238 i32.const 2 call $~lib/builtins/abort unreachable @@ -19254,7 +18965,7 @@ if i32.const 0 i32.const 376 - i32.const 238 + i32.const 239 i32.const 2 call $~lib/builtins/abort unreachable @@ -19268,7 +18979,7 @@ if i32.const 0 i32.const 376 - i32.const 239 + i32.const 240 i32.const 2 call $~lib/builtins/abort unreachable @@ -19282,7 +18993,7 @@ if i32.const 0 i32.const 376 - i32.const 240 + i32.const 241 i32.const 2 call $~lib/builtins/abort unreachable @@ -19296,7 +19007,7 @@ if i32.const 0 i32.const 376 - i32.const 241 + i32.const 242 i32.const 2 call $~lib/builtins/abort unreachable @@ -19312,7 +19023,7 @@ if i32.const 0 i32.const 376 - i32.const 249 + i32.const 250 i32.const 2 call $~lib/builtins/abort unreachable @@ -19325,7 +19036,7 @@ if i32.const 0 i32.const 376 - i32.const 250 + i32.const 251 i32.const 2 call $~lib/builtins/abort unreachable @@ -19339,7 +19050,7 @@ if i32.const 0 i32.const 376 - i32.const 251 + i32.const 252 i32.const 2 call $~lib/builtins/abort unreachable @@ -19353,7 +19064,7 @@ if i32.const 0 i32.const 376 - i32.const 252 + i32.const 253 i32.const 2 call $~lib/builtins/abort unreachable @@ -19367,7 +19078,7 @@ if i32.const 0 i32.const 376 - i32.const 253 + i32.const 254 i32.const 2 call $~lib/builtins/abort unreachable @@ -19392,7 +19103,7 @@ if i32.const 0 i32.const 376 - i32.const 263 + i32.const 264 i32.const 2 call $~lib/builtins/abort unreachable @@ -19409,7 +19120,7 @@ if i32.const 0 i32.const 376 - i32.const 266 + i32.const 267 i32.const 2 call $~lib/builtins/abort unreachable @@ -19426,7 +19137,7 @@ if i32.const 0 i32.const 376 - i32.const 269 + i32.const 270 i32.const 2 call $~lib/builtins/abort unreachable @@ -19443,7 +19154,7 @@ if i32.const 0 i32.const 376 - i32.const 272 + i32.const 273 i32.const 2 call $~lib/builtins/abort unreachable @@ -19460,7 +19171,7 @@ if i32.const 0 i32.const 376 - i32.const 275 + i32.const 276 i32.const 2 call $~lib/builtins/abort unreachable @@ -19477,7 +19188,7 @@ if i32.const 0 i32.const 376 - i32.const 278 + i32.const 279 i32.const 2 call $~lib/builtins/abort unreachable @@ -19494,7 +19205,7 @@ if i32.const 0 i32.const 376 - i32.const 281 + i32.const 282 i32.const 2 call $~lib/builtins/abort unreachable @@ -19511,7 +19222,7 @@ if i32.const 0 i32.const 376 - i32.const 284 + i32.const 285 i32.const 2 call $~lib/builtins/abort unreachable @@ -19528,7 +19239,7 @@ if i32.const 0 i32.const 376 - i32.const 287 + i32.const 288 i32.const 2 call $~lib/builtins/abort unreachable @@ -19545,7 +19256,7 @@ if i32.const 0 i32.const 376 - i32.const 290 + i32.const 291 i32.const 2 call $~lib/builtins/abort unreachable @@ -19562,7 +19273,7 @@ if i32.const 0 i32.const 376 - i32.const 297 + i32.const 298 i32.const 2 call $~lib/builtins/abort unreachable @@ -19579,7 +19290,7 @@ if i32.const 0 i32.const 376 - i32.const 300 + i32.const 301 i32.const 2 call $~lib/builtins/abort unreachable @@ -19596,7 +19307,7 @@ if i32.const 0 i32.const 376 - i32.const 303 + i32.const 304 i32.const 2 call $~lib/builtins/abort unreachable @@ -19613,7 +19324,7 @@ if i32.const 0 i32.const 376 - i32.const 306 + i32.const 307 i32.const 2 call $~lib/builtins/abort unreachable @@ -19630,7 +19341,7 @@ if i32.const 0 i32.const 376 - i32.const 309 + i32.const 310 i32.const 2 call $~lib/builtins/abort unreachable @@ -19647,7 +19358,7 @@ if i32.const 0 i32.const 376 - i32.const 312 + i32.const 313 i32.const 2 call $~lib/builtins/abort unreachable @@ -19664,7 +19375,7 @@ if i32.const 0 i32.const 376 - i32.const 315 + i32.const 316 i32.const 2 call $~lib/builtins/abort unreachable @@ -19681,7 +19392,7 @@ if i32.const 0 i32.const 376 - i32.const 318 + i32.const 319 i32.const 2 call $~lib/builtins/abort unreachable @@ -19698,7 +19409,7 @@ if i32.const 0 i32.const 376 - i32.const 321 + i32.const 322 i32.const 2 call $~lib/builtins/abort unreachable @@ -19715,7 +19426,7 @@ if i32.const 0 i32.const 376 - i32.const 324 + i32.const 325 i32.const 2 call $~lib/builtins/abort unreachable @@ -19733,7 +19444,7 @@ if i32.const 0 i32.const 376 - i32.const 328 + i32.const 329 i32.const 2 call $~lib/builtins/abort unreachable @@ -19746,7 +19457,7 @@ if i32.const 0 i32.const 376 - i32.const 329 + i32.const 330 i32.const 2 call $~lib/builtins/abort unreachable @@ -19760,7 +19471,7 @@ if i32.const 0 i32.const 376 - i32.const 330 + i32.const 331 i32.const 2 call $~lib/builtins/abort unreachable @@ -19774,7 +19485,7 @@ if i32.const 0 i32.const 376 - i32.const 331 + i32.const 332 i32.const 2 call $~lib/builtins/abort unreachable @@ -19806,7 +19517,7 @@ if i32.const 0 i32.const 376 - i32.const 338 + i32.const 339 i32.const 2 call $~lib/builtins/abort unreachable @@ -19825,7 +19536,7 @@ if i32.const 0 i32.const 376 - i32.const 339 + i32.const 340 i32.const 2 call $~lib/builtins/abort unreachable @@ -19868,7 +19579,7 @@ if i32.const 0 i32.const 376 - i32.const 342 + i32.const 343 i32.const 2 call $~lib/builtins/abort unreachable @@ -19887,7 +19598,7 @@ if i32.const 0 i32.const 376 - i32.const 343 + i32.const 344 i32.const 2 call $~lib/builtins/abort unreachable @@ -19899,24 +19610,24 @@ call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $28 - local.tee $6 + local.tee $5 local.get $37 local.tee $34 i32.ne if - local.get $6 + local.get $5 call $~lib/rt/pure/__retain drop local.get $34 call $~lib/rt/pure/__release end - local.get $6 + local.get $5 local.set $37 local.get $37 i32.const 2 i32.const 2 call $~lib/array/Array#splice - local.tee $6 + local.tee $5 i32.const 2 i32.const 2 i32.const 3 @@ -19930,7 +19641,7 @@ if i32.const 0 i32.const 376 - i32.const 346 + i32.const 347 i32.const 2 call $~lib/builtins/abort unreachable @@ -19949,7 +19660,7 @@ if i32.const 0 i32.const 376 - i32.const 347 + i32.const 348 i32.const 2 call $~lib/builtins/abort unreachable @@ -19992,7 +19703,7 @@ if i32.const 0 i32.const 376 - i32.const 350 + i32.const 351 i32.const 2 call $~lib/builtins/abort unreachable @@ -20011,7 +19722,7 @@ if i32.const 0 i32.const 376 - i32.const 351 + i32.const 352 i32.const 2 call $~lib/builtins/abort unreachable @@ -20023,24 +19734,24 @@ call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $22 - local.tee $4 + local.tee $7 local.get $37 local.tee $34 i32.ne if - local.get $4 + local.get $7 call $~lib/rt/pure/__retain drop local.get $34 call $~lib/rt/pure/__release end - local.get $4 + local.get $7 local.set $37 local.get $37 i32.const -1 i32.const 2147483647 call $~lib/array/Array#splice - local.tee $4 + local.tee $7 i32.const 1 i32.const 2 i32.const 3 @@ -20054,7 +19765,7 @@ if i32.const 0 i32.const 376 - i32.const 354 + i32.const 355 i32.const 2 call $~lib/builtins/abort unreachable @@ -20073,7 +19784,7 @@ if i32.const 0 i32.const 376 - i32.const 355 + i32.const 356 i32.const 2 call $~lib/builtins/abort unreachable @@ -20116,7 +19827,7 @@ if i32.const 0 i32.const 376 - i32.const 358 + i32.const 359 i32.const 2 call $~lib/builtins/abort unreachable @@ -20135,7 +19846,7 @@ if i32.const 0 i32.const 376 - i32.const 359 + i32.const 360 i32.const 2 call $~lib/builtins/abort unreachable @@ -20178,7 +19889,7 @@ if i32.const 0 i32.const 376 - i32.const 362 + i32.const 363 i32.const 2 call $~lib/builtins/abort unreachable @@ -20197,7 +19908,7 @@ if i32.const 0 i32.const 376 - i32.const 363 + i32.const 364 i32.const 2 call $~lib/builtins/abort unreachable @@ -20209,24 +19920,24 @@ call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $13 - local.tee $1 + local.tee $4 local.get $37 local.tee $34 i32.ne if - local.get $1 + local.get $4 call $~lib/rt/pure/__retain drop local.get $34 call $~lib/rt/pure/__release end - local.get $1 + local.get $4 local.set $37 local.get $37 i32.const -7 i32.const 1 call $~lib/array/Array#splice - local.tee $1 + local.tee $4 i32.const 1 i32.const 2 i32.const 3 @@ -20240,7 +19951,7 @@ if i32.const 0 i32.const 376 - i32.const 366 + i32.const 367 i32.const 2 call $~lib/builtins/abort unreachable @@ -20259,7 +19970,7 @@ if i32.const 0 i32.const 376 - i32.const 367 + i32.const 368 i32.const 2 call $~lib/builtins/abort unreachable @@ -20271,38 +19982,38 @@ call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $10 - local.tee $7 + local.tee $6 local.get $37 local.tee $34 i32.ne if - local.get $7 + local.get $6 call $~lib/rt/pure/__retain drop local.get $34 call $~lib/rt/pure/__release end - local.get $7 + local.get $6 local.set $37 local.get $37 i32.const -2 i32.const -1 call $~lib/array/Array#splice - local.tee $7 + local.tee $6 i32.const 0 i32.const 2 i32.const 3 i32.const 2720 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $5 + local.tee $1 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 376 - i32.const 370 + i32.const 371 i32.const 2 call $~lib/builtins/abort unreachable @@ -20321,7 +20032,7 @@ if i32.const 0 i32.const 376 - i32.const 371 + i32.const 372 i32.const 2 call $~lib/builtins/abort unreachable @@ -20364,7 +20075,7 @@ if i32.const 0 i32.const 376 - i32.const 374 + i32.const 375 i32.const 2 call $~lib/builtins/abort unreachable @@ -20383,7 +20094,7 @@ if i32.const 0 i32.const 376 - i32.const 375 + i32.const 376 i32.const 2 call $~lib/builtins/abort unreachable @@ -20426,7 +20137,7 @@ if i32.const 0 i32.const 376 - i32.const 378 + i32.const 379 i32.const 2 call $~lib/builtins/abort unreachable @@ -20445,7 +20156,7 @@ if i32.const 0 i32.const 376 - i32.const 379 + i32.const 380 i32.const 2 call $~lib/builtins/abort unreachable @@ -20488,7 +20199,7 @@ if i32.const 0 i32.const 376 - i32.const 382 + i32.const 383 i32.const 2 call $~lib/builtins/abort unreachable @@ -20507,7 +20218,7 @@ if i32.const 0 i32.const 376 - i32.const 383 + i32.const 384 i32.const 2 call $~lib/builtins/abort unreachable @@ -20550,7 +20261,7 @@ if i32.const 0 i32.const 376 - i32.const 386 + i32.const 387 i32.const 2 call $~lib/builtins/abort unreachable @@ -20569,7 +20280,7 @@ if i32.const 0 i32.const 376 - i32.const 387 + i32.const 388 i32.const 2 call $~lib/builtins/abort unreachable @@ -20594,7 +20305,7 @@ call $~lib/rt/pure/__release local.get $28 call $~lib/rt/pure/__release - local.get $6 + local.get $5 call $~lib/rt/pure/__release local.get $24 call $~lib/rt/pure/__release @@ -20610,7 +20321,7 @@ call $~lib/rt/pure/__release local.get $22 call $~lib/rt/pure/__release - local.get $4 + local.get $7 call $~lib/rt/pure/__release local.get $18 call $~lib/rt/pure/__release @@ -20634,7 +20345,7 @@ call $~lib/rt/pure/__release local.get $13 call $~lib/rt/pure/__release - local.get $1 + local.get $4 call $~lib/rt/pure/__release local.get $9 call $~lib/rt/pure/__release @@ -20642,9 +20353,9 @@ call $~lib/rt/pure/__release local.get $10 call $~lib/rt/pure/__release - local.get $7 + local.get $6 call $~lib/rt/pure/__release - local.get $5 + local.get $1 call $~lib/rt/pure/__release local.get $8 call $~lib/rt/pure/__release @@ -20707,7 +20418,7 @@ if i32.const 0 i32.const 376 - i32.const 400 + i32.const 401 i32.const 2 call $~lib/builtins/abort unreachable @@ -20723,7 +20434,7 @@ if i32.const 0 i32.const 376 - i32.const 403 + i32.const 404 i32.const 2 call $~lib/builtins/abort unreachable @@ -20739,7 +20450,7 @@ if i32.const 0 i32.const 376 - i32.const 406 + i32.const 407 i32.const 2 call $~lib/builtins/abort unreachable @@ -20755,7 +20466,7 @@ if i32.const 0 i32.const 376 - i32.const 414 + i32.const 415 i32.const 2 call $~lib/builtins/abort unreachable @@ -20768,7 +20479,7 @@ if i32.const 0 i32.const 376 - i32.const 415 + i32.const 416 i32.const 2 call $~lib/builtins/abort unreachable @@ -20784,7 +20495,7 @@ if i32.const 0 i32.const 376 - i32.const 417 + i32.const 418 i32.const 2 call $~lib/builtins/abort unreachable @@ -20812,7 +20523,7 @@ if i32.const 0 i32.const 376 - i32.const 430 + i32.const 431 i32.const 2 call $~lib/builtins/abort unreachable @@ -20825,7 +20536,7 @@ if i32.const 0 i32.const 376 - i32.const 431 + i32.const 432 i32.const 2 call $~lib/builtins/abort unreachable @@ -20849,7 +20560,7 @@ if i32.const 0 i32.const 376 - i32.const 441 + i32.const 442 i32.const 2 call $~lib/builtins/abort unreachable @@ -20865,7 +20576,7 @@ if i32.const 0 i32.const 376 - i32.const 444 + i32.const 445 i32.const 2 call $~lib/builtins/abort unreachable @@ -20881,7 +20592,7 @@ if i32.const 0 i32.const 376 - i32.const 452 + i32.const 453 i32.const 2 call $~lib/builtins/abort unreachable @@ -20894,7 +20605,7 @@ if i32.const 0 i32.const 376 - i32.const 453 + i32.const 454 i32.const 2 call $~lib/builtins/abort unreachable @@ -20910,7 +20621,7 @@ if i32.const 0 i32.const 376 - i32.const 455 + i32.const 456 i32.const 2 call $~lib/builtins/abort unreachable @@ -20938,7 +20649,7 @@ if i32.const 0 i32.const 376 - i32.const 468 + i32.const 469 i32.const 2 call $~lib/builtins/abort unreachable @@ -20951,7 +20662,7 @@ if i32.const 0 i32.const 376 - i32.const 469 + i32.const 470 i32.const 2 call $~lib/builtins/abort unreachable @@ -20975,7 +20686,7 @@ if i32.const 0 i32.const 376 - i32.const 479 + i32.const 480 i32.const 2 call $~lib/builtins/abort unreachable @@ -20991,7 +20702,7 @@ if i32.const 0 i32.const 376 - i32.const 482 + i32.const 483 i32.const 2 call $~lib/builtins/abort unreachable @@ -21007,7 +20718,7 @@ if i32.const 0 i32.const 376 - i32.const 490 + i32.const 491 i32.const 2 call $~lib/builtins/abort unreachable @@ -21020,7 +20731,7 @@ if i32.const 0 i32.const 376 - i32.const 491 + i32.const 492 i32.const 2 call $~lib/builtins/abort unreachable @@ -21036,7 +20747,7 @@ if i32.const 0 i32.const 376 - i32.const 493 + i32.const 494 i32.const 2 call $~lib/builtins/abort unreachable @@ -21064,7 +20775,7 @@ if i32.const 0 i32.const 376 - i32.const 506 + i32.const 507 i32.const 2 call $~lib/builtins/abort unreachable @@ -21077,7 +20788,7 @@ if i32.const 0 i32.const 376 - i32.const 507 + i32.const 508 i32.const 2 call $~lib/builtins/abort unreachable @@ -21102,7 +20813,7 @@ if i32.const 0 i32.const 376 - i32.const 518 + i32.const 519 i32.const 2 call $~lib/builtins/abort unreachable @@ -21119,7 +20830,7 @@ if i32.const 0 i32.const 376 - i32.const 527 + i32.const 528 i32.const 2 call $~lib/builtins/abort unreachable @@ -21132,7 +20843,7 @@ if i32.const 0 i32.const 376 - i32.const 528 + i32.const 529 i32.const 2 call $~lib/builtins/abort unreachable @@ -21149,7 +20860,7 @@ if i32.const 0 i32.const 376 - i32.const 531 + i32.const 532 i32.const 2 call $~lib/builtins/abort unreachable @@ -21178,7 +20889,7 @@ if i32.const 0 i32.const 376 - i32.const 545 + i32.const 546 i32.const 2 call $~lib/builtins/abort unreachable @@ -21191,7 +20902,7 @@ if i32.const 0 i32.const 376 - i32.const 546 + i32.const 547 i32.const 2 call $~lib/builtins/abort unreachable @@ -21215,7 +20926,7 @@ if i32.const 0 i32.const 376 - i32.const 571 + i32.const 572 i32.const 2 call $~lib/builtins/abort unreachable @@ -21268,7 +20979,7 @@ if i32.const 0 i32.const 376 - i32.const 585 + i32.const 586 i32.const 2 call $~lib/builtins/abort unreachable @@ -21285,7 +20996,7 @@ if i32.const 0 i32.const 376 - i32.const 586 + i32.const 587 i32.const 2 call $~lib/builtins/abort unreachable @@ -21303,7 +21014,7 @@ if i32.const 0 i32.const 376 - i32.const 595 + i32.const 596 i32.const 2 call $~lib/builtins/abort unreachable @@ -21316,7 +21027,7 @@ if i32.const 0 i32.const 376 - i32.const 596 + i32.const 597 i32.const 2 call $~lib/builtins/abort unreachable @@ -21334,7 +21045,7 @@ if i32.const 0 i32.const 376 - i32.const 603 + i32.const 604 i32.const 2 call $~lib/builtins/abort unreachable @@ -21364,7 +21075,7 @@ if i32.const 0 i32.const 376 - i32.const 618 + i32.const 619 i32.const 2 call $~lib/builtins/abort unreachable @@ -21377,7 +21088,7 @@ if i32.const 0 i32.const 376 - i32.const 619 + i32.const 620 i32.const 2 call $~lib/builtins/abort unreachable @@ -21404,7 +21115,7 @@ if i32.const 0 i32.const 376 - i32.const 629 + i32.const 630 i32.const 2 call $~lib/builtins/abort unreachable @@ -21422,7 +21133,7 @@ if i32.const 0 i32.const 376 - i32.const 638 + i32.const 639 i32.const 2 call $~lib/builtins/abort unreachable @@ -21435,7 +21146,7 @@ if i32.const 0 i32.const 376 - i32.const 639 + i32.const 640 i32.const 2 call $~lib/builtins/abort unreachable @@ -21453,7 +21164,7 @@ if i32.const 0 i32.const 376 - i32.const 646 + i32.const 647 i32.const 2 call $~lib/builtins/abort unreachable @@ -21483,7 +21194,7 @@ if i32.const 0 i32.const 376 - i32.const 661 + i32.const 662 i32.const 2 call $~lib/builtins/abort unreachable @@ -21496,7 +21207,7 @@ if i32.const 0 i32.const 376 - i32.const 662 + i32.const 663 i32.const 2 call $~lib/builtins/abort unreachable @@ -21523,7 +21234,7 @@ if i32.const 0 i32.const 376 - i32.const 672 + i32.const 673 i32.const 2 call $~lib/builtins/abort unreachable @@ -21540,7 +21251,7 @@ if i32.const 0 i32.const 376 - i32.const 676 + i32.const 677 i32.const 2 call $~lib/builtins/abort unreachable @@ -21559,7 +21270,7 @@ if i32.const 0 i32.const 376 - i32.const 679 + i32.const 680 i32.const 2 call $~lib/builtins/abort unreachable @@ -21578,7 +21289,7 @@ if i32.const 0 i32.const 376 - i32.const 682 + i32.const 683 i32.const 2 call $~lib/builtins/abort unreachable @@ -21595,7 +21306,7 @@ if i32.const 0 i32.const 376 - i32.const 690 + i32.const 691 i32.const 2 call $~lib/builtins/abort unreachable @@ -21608,7 +21319,7 @@ if i32.const 0 i32.const 376 - i32.const 691 + i32.const 692 i32.const 2 call $~lib/builtins/abort unreachable @@ -21625,7 +21336,7 @@ if i32.const 0 i32.const 376 - i32.const 693 + i32.const 694 i32.const 2 call $~lib/builtins/abort unreachable @@ -21654,7 +21365,7 @@ if i32.const 0 i32.const 376 - i32.const 706 + i32.const 707 i32.const 2 call $~lib/builtins/abort unreachable @@ -21667,7 +21378,7 @@ if i32.const 0 i32.const 376 - i32.const 707 + i32.const 708 i32.const 2 call $~lib/builtins/abort unreachable @@ -21692,7 +21403,7 @@ if i32.const 0 i32.const 376 - i32.const 717 + i32.const 718 i32.const 2 call $~lib/builtins/abort unreachable @@ -21709,7 +21420,7 @@ if i32.const 0 i32.const 376 - i32.const 721 + i32.const 722 i32.const 2 call $~lib/builtins/abort unreachable @@ -21728,7 +21439,7 @@ if i32.const 0 i32.const 376 - i32.const 724 + i32.const 725 i32.const 2 call $~lib/builtins/abort unreachable @@ -21747,7 +21458,7 @@ if i32.const 0 i32.const 376 - i32.const 727 + i32.const 728 i32.const 2 call $~lib/builtins/abort unreachable @@ -21764,7 +21475,7 @@ if i32.const 0 i32.const 376 - i32.const 735 + i32.const 736 i32.const 2 call $~lib/builtins/abort unreachable @@ -21777,7 +21488,7 @@ if i32.const 0 i32.const 376 - i32.const 736 + i32.const 737 i32.const 2 call $~lib/builtins/abort unreachable @@ -21794,7 +21505,7 @@ if i32.const 0 i32.const 376 - i32.const 738 + i32.const 739 i32.const 2 call $~lib/builtins/abort unreachable @@ -21823,7 +21534,7 @@ if i32.const 0 i32.const 376 - i32.const 751 + i32.const 752 i32.const 2 call $~lib/builtins/abort unreachable @@ -21836,7 +21547,7 @@ if i32.const 0 i32.const 376 - i32.const 752 + i32.const 753 i32.const 2 call $~lib/builtins/abort unreachable @@ -21889,7 +21600,7 @@ if i32.const 0 i32.const 376 - i32.const 841 + i32.const 842 i32.const 2 call $~lib/builtins/abort unreachable @@ -21923,7 +21634,7 @@ if i32.const 0 i32.const 376 - i32.const 845 + i32.const 846 i32.const 2 call $~lib/builtins/abort unreachable @@ -21957,7 +21668,7 @@ if i32.const 0 i32.const 376 - i32.const 849 + i32.const 850 i32.const 2 call $~lib/builtins/abort unreachable @@ -21991,7 +21702,7 @@ if i32.const 0 i32.const 376 - i32.const 853 + i32.const 854 i32.const 2 call $~lib/builtins/abort unreachable @@ -22020,7 +21731,7 @@ i32.const 3848 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $5 + local.tee $1 call $~lib/rt/pure/__retain local.set $8 i32.const 4 @@ -22031,7 +21742,7 @@ call $~lib/rt/pure/__retain local.tee $10 call $~lib/rt/pure/__retain - local.set $7 + local.set $6 i32.const 4 i32.const 2 i32.const 3 @@ -22043,7 +21754,7 @@ local.set $11 i32.const 64 call $std/array/createReverseOrderedArray - local.set $1 + local.set $4 i32.const 128 call $std/array/createReverseOrderedArray local.set $13 @@ -22074,7 +21785,7 @@ if i32.const 0 i32.const 376 - i32.const 873 + i32.const 874 i32.const 2 call $~lib/builtins/abort unreachable @@ -22095,14 +21806,14 @@ if i32.const 0 i32.const 376 - i32.const 876 + i32.const 877 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $7 + local.get $6 call $std/array/assertSortedDefault - local.get $7 + local.get $6 local.get $11 i32.const 0 call $std/array/isArraysEqual @@ -22110,14 +21821,14 @@ if i32.const 0 i32.const 376 - i32.const 879 + i32.const 880 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $4 call $std/array/assertSortedDefault - local.get $1 + local.get $4 local.get $11 i32.const 4 call $std/array/isArraysEqual @@ -22125,7 +21836,7 @@ if i32.const 0 i32.const 376 - i32.const 882 + i32.const 883 i32.const 2 call $~lib/builtins/abort unreachable @@ -22140,7 +21851,7 @@ if i32.const 0 i32.const 376 - i32.const 885 + i32.const 886 i32.const 2 call $~lib/builtins/abort unreachable @@ -22155,7 +21866,7 @@ if i32.const 0 i32.const 376 - i32.const 888 + i32.const 889 i32.const 2 call $~lib/builtins/abort unreachable @@ -22170,7 +21881,7 @@ if i32.const 0 i32.const 376 - i32.const 891 + i32.const 892 i32.const 2 call $~lib/builtins/abort unreachable @@ -22209,19 +21920,19 @@ call $~lib/rt/pure/__release local.get $34 call $~lib/rt/pure/__release - local.get $5 + local.get $1 call $~lib/rt/pure/__release local.get $8 call $~lib/rt/pure/__release local.get $10 call $~lib/rt/pure/__release - local.get $7 + local.get $6 call $~lib/rt/pure/__release local.get $9 call $~lib/rt/pure/__release local.get $11 call $~lib/rt/pure/__release - local.get $1 + local.get $4 call $~lib/rt/pure/__release local.get $13 call $~lib/rt/pure/__release @@ -22304,7 +22015,7 @@ if i32.const 0 i32.const 376 - i32.const 928 + i32.const 929 i32.const 2 call $~lib/builtins/abort unreachable @@ -22343,7 +22054,7 @@ if i32.const 0 i32.const 376 - i32.const 939 + i32.const 940 i32.const 2 call $~lib/builtins/abort unreachable @@ -22364,7 +22075,7 @@ if i32.const 0 i32.const 376 - i32.const 940 + i32.const 941 i32.const 2 call $~lib/builtins/abort unreachable @@ -22385,7 +22096,7 @@ if i32.const 0 i32.const 376 - i32.const 941 + i32.const 942 i32.const 2 call $~lib/builtins/abort unreachable @@ -22399,14 +22110,14 @@ local.tee $11 i32.const 5144 call $~lib/array/Array#join - local.tee $1 + local.tee $4 i32.const 5168 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 376 - i32.const 942 + i32.const 943 i32.const 2 call $~lib/builtins/abort unreachable @@ -22417,7 +22128,7 @@ i32.const 5232 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $7 + local.tee $6 i32.const 5296 call $~lib/array/Array#join local.tee $9 @@ -22427,20 +22138,20 @@ if i32.const 0 i32.const 376 - i32.const 943 + i32.const 944 i32.const 2 call $~lib/builtins/abort unreachable end i32.const 3 i32.const 2 - i32.const 14 + i32.const 13 i32.const 6616 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $8 i32.const 4248 - call $~lib/array/Array<~lib/string/String>#join + call $~lib/array/Array<~lib/string/String | null>#join local.tee $10 i32.const 6592 call $~lib/string/String.__eq @@ -22448,7 +22159,7 @@ if i32.const 0 i32.const 376 - i32.const 944 + i32.const 945 i32.const 2 call $~lib/builtins/abort unreachable @@ -22458,8 +22169,8 @@ i32.const 19 i32.const 0 call $~lib/rt/__allocArray - local.set $5 - local.get $5 + local.set $1 + local.get $1 i32.load offset=4 local.set $34 local.get $34 @@ -22478,20 +22189,20 @@ local.tee $42 call $~lib/rt/pure/__retain i32.store offset=8 - local.get $5 + local.get $1 call $~lib/rt/pure/__retain local.set $34 local.get $34 i32.const 4464 call $~lib/array/Array#join - local.tee $5 + local.tee $1 i32.const 6696 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 376 - i32.const 946 + i32.const 947 i32.const 2 call $~lib/builtins/abort unreachable @@ -22510,9 +22221,9 @@ call $~lib/rt/pure/__release local.get $11 call $~lib/rt/pure/__release - local.get $1 + local.get $4 call $~lib/rt/pure/__release - local.get $7 + local.get $6 call $~lib/rt/pure/__release local.get $9 call $~lib/rt/pure/__release @@ -22526,7 +22237,7 @@ call $~lib/rt/pure/__release local.get $34 call $~lib/rt/pure/__release - local.get $5 + local.get $1 call $~lib/rt/pure/__release i32.const 0 i32.const 2 @@ -22536,7 +22247,7 @@ call $~lib/rt/pure/__retain local.tee $34 call $~lib/rt/pure/__retain - local.set $5 + local.set $1 i32.const 1 i32.const 2 i32.const 3 @@ -22561,19 +22272,19 @@ i32.const 6840 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $7 + local.tee $6 call $~lib/rt/pure/__retain local.set $9 - local.get $5 + local.get $1 call $~lib/array/Array#toString - local.tee $1 + local.tee $4 i32.const 4248 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 376 - i32.const 956 + i32.const 957 i32.const 2 call $~lib/builtins/abort unreachable @@ -22587,7 +22298,7 @@ if i32.const 0 i32.const 376 - i32.const 957 + i32.const 958 i32.const 2 call $~lib/builtins/abort unreachable @@ -22601,7 +22312,7 @@ if i32.const 0 i32.const 376 - i32.const 958 + i32.const 959 i32.const 2 call $~lib/builtins/abort unreachable @@ -22615,7 +22326,7 @@ if i32.const 0 i32.const 376 - i32.const 959 + i32.const 960 i32.const 2 call $~lib/builtins/abort unreachable @@ -22635,7 +22346,7 @@ if i32.const 0 i32.const 376 - i32.const 961 + i32.const 962 i32.const 2 call $~lib/builtins/abort unreachable @@ -22655,7 +22366,7 @@ if i32.const 0 i32.const 376 - i32.const 962 + i32.const 963 i32.const 2 call $~lib/builtins/abort unreachable @@ -22675,7 +22386,7 @@ if i32.const 0 i32.const 376 - i32.const 963 + i32.const 964 i32.const 2 call $~lib/builtins/abort unreachable @@ -22695,7 +22406,7 @@ if i32.const 0 i32.const 376 - i32.const 964 + i32.const 965 i32.const 2 call $~lib/builtins/abort unreachable @@ -22718,19 +22429,19 @@ if i32.const 0 i32.const 376 - i32.const 968 + i32.const 969 i32.const 2 call $~lib/builtins/abort unreachable end i32.const 4 i32.const 2 - i32.const 14 + i32.const 13 i32.const 7448 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $47 - call $~lib/array/Array<~lib/string/String>#toString + call $~lib/array/Array<~lib/string/String | null>#toString local.tee $43 i32.const 7480 call $~lib/string/String.__eq @@ -22738,7 +22449,7 @@ if i32.const 0 i32.const 376 - i32.const 969 + i32.const 970 i32.const 2 call $~lib/builtins/abort unreachable @@ -22784,7 +22495,7 @@ if i32.const 0 i32.const 376 - i32.const 972 + i32.const 973 i32.const 2 call $~lib/builtins/abort unreachable @@ -22830,7 +22541,7 @@ if i32.const 0 i32.const 376 - i32.const 975 + i32.const 976 i32.const 2 call $~lib/builtins/abort unreachable @@ -22853,8 +22564,8 @@ local.set $18 local.get $18 i32.load offset=4 - local.set $4 - local.get $4 + local.set $7 + local.get $7 i32.const 1 i32.const 2 i32.const 7 @@ -22879,14 +22590,14 @@ if i32.const 0 i32.const 376 - i32.const 978 + i32.const 979 i32.const 2 call $~lib/builtins/abort unreachable end local.get $34 call $~lib/rt/pure/__release - local.get $5 + local.get $1 call $~lib/rt/pure/__release local.get $38 call $~lib/rt/pure/__release @@ -22896,11 +22607,11 @@ call $~lib/rt/pure/__release local.get $10 call $~lib/rt/pure/__release - local.get $7 + local.get $6 call $~lib/rt/pure/__release local.get $9 call $~lib/rt/pure/__release - local.get $1 + local.get $4 call $~lib/rt/pure/__release local.get $11 call $~lib/rt/pure/__release @@ -22959,7 +22670,7 @@ local.get $56 call $~lib/rt/pure/__release ) - (func $start (; 300 ;) (type $FUNCSIG$v) + (func $start (; 297 ;) (type $FUNCSIG$v) global.get $~lib/started if return @@ -22969,22 +22680,22 @@ end call $start:std/array ) - (func $~lib/array/Array#__visit_impl (; 301 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 298 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) nop ) - (func $~lib/array/Array#__visit_impl (; 302 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 299 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) nop ) - (func $~lib/array/Array#__visit_impl (; 303 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 300 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) nop ) - (func $~lib/array/Array#__visit_impl (; 304 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 301 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) nop ) - (func $~lib/array/Array#__visit_impl (; 305 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 302 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) nop ) - (func $~lib/rt/pure/markGray (; 306 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/markGray (; 303 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -23011,7 +22722,7 @@ call $~lib/rt/__visit_members end ) - (func $~lib/rt/pure/scanBlack (; 307 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scanBlack (; 304 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 local.get $0 i32.load offset=4 @@ -23028,7 +22739,7 @@ i32.const 4 call $~lib/rt/__visit_members ) - (func $~lib/rt/pure/scan (; 308 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scan (; 305 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -23065,7 +22776,7 @@ end end ) - (func $~lib/rt/pure/collectWhite (; 309 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/collectWhite (; 306 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -23103,7 +22814,7 @@ call $~lib/rt/tlsf/freeBlock end ) - (func $~lib/rt/pure/__visit (; 310 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/__visit (; 307 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $0 @@ -23233,7 +22944,7 @@ end end ) - (func $~lib/array/Array<~lib/array/Array>#__visit_impl (; 311 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array<~lib/array/Array>#__visit_impl (; 308 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -23272,7 +22983,7 @@ unreachable end ) - (func $~lib/array/Array>#__visit_impl (; 312 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array>#__visit_impl (; 309 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -23311,7 +23022,7 @@ unreachable end ) - (func $~lib/array/Array<~lib/string/String | null>#__visit_impl (; 313 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array<~lib/string/String | null>#__visit_impl (; 310 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -23350,7 +23061,7 @@ unreachable end ) - (func $~lib/array/Array<~lib/string/String>#__visit_impl (; 314 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array<~lib/string/String>#__visit_impl (; 311 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -23389,16 +23100,16 @@ unreachable end ) - (func $~lib/array/Array#__visit_impl (; 315 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 312 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) nop ) - (func $~lib/array/Array#__visit_impl (; 316 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 313 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) nop ) - (func $~lib/array/Array#__visit_impl (; 317 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 314 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) nop ) - (func $~lib/array/Array#__visit_impl (; 318 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 315 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -23437,16 +23148,16 @@ unreachable end ) - (func $~lib/array/Array#__visit_impl (; 319 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 316 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) nop ) - (func $~lib/array/Array#__visit_impl (; 320 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 317 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) nop ) - (func $~lib/array/Array#__visit_impl (; 321 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 318 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) nop ) - (func $~lib/array/Array<~lib/array/Array>#__visit_impl (; 322 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array<~lib/array/Array>#__visit_impl (; 319 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -23485,7 +23196,7 @@ unreachable end ) - (func $~lib/array/Array<~lib/array/Array>#__visit_impl (; 323 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array<~lib/array/Array>#__visit_impl (; 320 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -23524,7 +23235,7 @@ unreachable end ) - (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#__visit_impl (; 324 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#__visit_impl (; 321 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -23563,7 +23274,7 @@ unreachable end ) - (func $~lib/rt/__visit_members (; 325 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/__visit_members (; 322 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) block $block$4$break block $switch$1$default @@ -23705,6 +23416,6 @@ end return ) - (func $null (; 326 ;) (type $FUNCSIG$v) + (func $null (; 323 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/hash.ts b/tests/compiler/std/hash.ts index d700db6de8..b46889ba88 100644 --- a/tests/compiler/std/hash.ts +++ b/tests/compiler/std/hash.ts @@ -4,7 +4,7 @@ function check(hash: u32): bool { return true; } -check(HASH(null)); +check(HASH(null)); check(HASH("")); check(HASH("a")); check(HASH("ab")); diff --git a/tests/compiler/std/hash.untouched.wat b/tests/compiler/std/hash.untouched.wat index 5a0d62c972..97b5312580 100644 --- a/tests/compiler/std/hash.untouched.wat +++ b/tests/compiler/std/hash.untouched.wat @@ -215,7 +215,7 @@ (local $1 i32) (local $2 f32) (local $3 f64) - block $~lib/util/hash/HASH<~lib/string/String>|inlined.0 (result i32) + block $~lib/util/hash/HASH<~lib/string/String | null>|inlined.0 (result i32) i32.const 0 call $~lib/rt/stub/__retain local.set $0 @@ -225,11 +225,11 @@ local.get $0 call $~lib/rt/stub/__release local.get $1 - br $~lib/util/hash/HASH<~lib/string/String>|inlined.0 + br $~lib/util/hash/HASH<~lib/string/String | null>|inlined.0 end call $std/hash/check drop - block $~lib/util/hash/HASH<~lib/string/String>|inlined.1 (result i32) + block $~lib/util/hash/HASH<~lib/string/String>|inlined.0 (result i32) i32.const 24 call $~lib/rt/stub/__retain local.set $1 @@ -239,11 +239,11 @@ local.get $1 call $~lib/rt/stub/__release local.get $0 - br $~lib/util/hash/HASH<~lib/string/String>|inlined.1 + br $~lib/util/hash/HASH<~lib/string/String>|inlined.0 end call $std/hash/check drop - block $~lib/util/hash/HASH<~lib/string/String>|inlined.2 (result i32) + block $~lib/util/hash/HASH<~lib/string/String>|inlined.1 (result i32) i32.const 40 call $~lib/rt/stub/__retain local.set $0 @@ -253,11 +253,11 @@ local.get $0 call $~lib/rt/stub/__release local.get $1 - br $~lib/util/hash/HASH<~lib/string/String>|inlined.2 + br $~lib/util/hash/HASH<~lib/string/String>|inlined.1 end call $std/hash/check drop - block $~lib/util/hash/HASH<~lib/string/String>|inlined.3 (result i32) + block $~lib/util/hash/HASH<~lib/string/String>|inlined.2 (result i32) i32.const 64 call $~lib/rt/stub/__retain local.set $1 @@ -267,11 +267,11 @@ local.get $1 call $~lib/rt/stub/__release local.get $0 - br $~lib/util/hash/HASH<~lib/string/String>|inlined.3 + br $~lib/util/hash/HASH<~lib/string/String>|inlined.2 end call $std/hash/check drop - block $~lib/util/hash/HASH<~lib/string/String>|inlined.4 (result i32) + block $~lib/util/hash/HASH<~lib/string/String>|inlined.3 (result i32) i32.const 88 call $~lib/rt/stub/__retain local.set $0 @@ -281,7 +281,7 @@ local.get $0 call $~lib/rt/stub/__release local.get $1 - br $~lib/util/hash/HASH<~lib/string/String>|inlined.4 + br $~lib/util/hash/HASH<~lib/string/String>|inlined.3 end call $std/hash/check drop