Skip to content

Commit 7c9115b

Browse files
committed
same goes for !==
1 parent da9c32c commit 7c9115b

File tree

3 files changed

+65
-41
lines changed

3 files changed

+65
-41
lines changed

src/compiler.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4033,7 +4033,7 @@ export class Compiler extends DiagnosticEmitter {
40334033
leftType = this.currentType;
40344034

40354035
// check operator overload
4036-
if (operator == Token.EXCLAMATION_EQUALS && this.currentType.is(TypeFlags.REFERENCE)) {
4036+
if (this.currentType.is(TypeFlags.REFERENCE)) {
40374037
let classReference = leftType.classReference;
40384038
if (classReference) {
40394039
let overload = classReference.lookupOverload(OperatorKind.NE);

tests/compiler/resolve-binary.optimized.wat

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1579,7 +1579,10 @@
15791579
call $~lib/builtins/abort
15801580
unreachable
15811581
end
1582-
i32.const 0
1582+
i32.const 160
1583+
i32.const 160
1584+
call $~lib/string/String.__eq
1585+
i32.eqz
15831586
call $~lib/number/Bool#toString
15841587
i32.const 64
15851588
call $~lib/string/String.__eq

tests/compiler/resolve-binary.untouched.wat

Lines changed: 60 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,26 @@
295295
call $~lib/rt/stub/__release
296296
local.get $2
297297
)
298-
(func $~lib/util/number/decimalCount32 (; 7 ;) (param $0 i32) (result i32)
298+
(func $~lib/string/String.__ne (; 7 ;) (param $0 i32) (param $1 i32) (result i32)
299+
(local $2 i32)
300+
local.get $0
301+
call $~lib/rt/stub/__retain
302+
local.set $0
303+
local.get $1
304+
call $~lib/rt/stub/__retain
305+
local.set $1
306+
local.get $0
307+
local.get $1
308+
call $~lib/string/String.__eq
309+
i32.eqz
310+
local.set $2
311+
local.get $0
312+
call $~lib/rt/stub/__release
313+
local.get $1
314+
call $~lib/rt/stub/__release
315+
local.get $2
316+
)
317+
(func $~lib/util/number/decimalCount32 (; 8 ;) (param $0 i32) (result i32)
299318
(local $1 i32)
300319
local.get $0
301320
i32.const 100000
@@ -361,7 +380,7 @@
361380
end
362381
unreachable
363382
)
364-
(func $~lib/rt/stub/maybeGrowMemory (; 8 ;) (param $0 i32)
383+
(func $~lib/rt/stub/maybeGrowMemory (; 9 ;) (param $0 i32)
365384
(local $1 i32)
366385
(local $2 i32)
367386
(local $3 i32)
@@ -415,7 +434,7 @@
415434
local.get $0
416435
global.set $~lib/rt/stub/offset
417436
)
418-
(func $~lib/rt/stub/__alloc (; 9 ;) (param $0 i32) (param $1 i32) (result i32)
437+
(func $~lib/rt/stub/__alloc (; 10 ;) (param $0 i32) (param $1 i32) (result i32)
419438
(local $2 i32)
420439
(local $3 i32)
421440
(local $4 i32)
@@ -468,7 +487,7 @@
468487
i32.store offset=12
469488
local.get $2
470489
)
471-
(func $~lib/util/number/utoa32_lut (; 10 ;) (param $0 i32) (param $1 i32) (param $2 i32)
490+
(func $~lib/util/number/utoa32_lut (; 11 ;) (param $0 i32) (param $1 i32) (param $2 i32)
472491
(local $3 i32)
473492
(local $4 i32)
474493
(local $5 i32)
@@ -612,7 +631,7 @@
612631
i32.store16
613632
end
614633
)
615-
(func $~lib/util/number/itoa32 (; 11 ;) (param $0 i32) (result i32)
634+
(func $~lib/util/number/itoa32 (; 12 ;) (param $0 i32) (result i32)
616635
(local $1 i32)
617636
(local $2 i32)
618637
(local $3 i32)
@@ -666,16 +685,16 @@
666685
local.get $3
667686
call $~lib/rt/stub/__retain
668687
)
669-
(func $~lib/util/number/itoa<i32> (; 12 ;) (param $0 i32) (result i32)
688+
(func $~lib/util/number/itoa<i32> (; 13 ;) (param $0 i32) (result i32)
670689
local.get $0
671690
call $~lib/util/number/itoa32
672691
return
673692
)
674-
(func $~lib/number/I32#toString (; 13 ;) (param $0 i32) (result i32)
693+
(func $~lib/number/I32#toString (; 14 ;) (param $0 i32) (result i32)
675694
local.get $0
676695
call $~lib/util/number/itoa<i32>
677696
)
678-
(func $~lib/math/NativeMath.pow (; 14 ;) (param $0 f64) (param $1 f64) (result f64)
697+
(func $~lib/math/NativeMath.pow (; 15 ;) (param $0 f64) (param $1 f64) (result f64)
679698
(local $2 f64)
680699
(local $3 f64)
681700
(local $4 i32)
@@ -1643,7 +1662,7 @@
16431662
end
16441663
return
16451664
)
1646-
(func $~lib/array/Array<u64>#__unchecked_get (; 15 ;) (param $0 i32) (param $1 i32) (result i64)
1665+
(func $~lib/array/Array<u64>#__unchecked_get (; 16 ;) (param $0 i32) (param $1 i32) (result i64)
16471666
local.get $0
16481667
i32.load offset=4
16491668
local.get $1
@@ -1652,7 +1671,7 @@
16521671
i32.add
16531672
i64.load
16541673
)
1655-
(func $~lib/array/Array<i16>#__unchecked_get (; 16 ;) (param $0 i32) (param $1 i32) (result i32)
1674+
(func $~lib/array/Array<i16>#__unchecked_get (; 17 ;) (param $0 i32) (param $1 i32) (result i32)
16561675
local.get $0
16571676
i32.load offset=4
16581677
local.get $1
@@ -1661,7 +1680,7 @@
16611680
i32.add
16621681
i32.load16_s
16631682
)
1664-
(func $~lib/util/number/genDigits (; 17 ;) (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32)
1683+
(func $~lib/util/number/genDigits (; 18 ;) (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32)
16651684
(local $7 i32)
16661685
(local $8 i64)
16671686
(local $9 i64)
@@ -2168,7 +2187,7 @@
21682187
end
21692188
local.get $15
21702189
)
2171-
(func $~lib/util/memory/memcpy (; 18 ;) (param $0 i32) (param $1 i32) (param $2 i32)
2190+
(func $~lib/util/memory/memcpy (; 19 ;) (param $0 i32) (param $1 i32) (param $2 i32)
21722191
(local $3 i32)
21732192
(local $4 i32)
21742193
(local $5 i32)
@@ -3192,7 +3211,7 @@
31923211
i32.store8
31933212
end
31943213
)
3195-
(func $~lib/memory/memory.copy (; 19 ;) (param $0 i32) (param $1 i32) (param $2 i32)
3214+
(func $~lib/memory/memory.copy (; 20 ;) (param $0 i32) (param $1 i32) (param $2 i32)
31963215
(local $3 i32)
31973216
(local $4 i32)
31983217
(local $5 i32)
@@ -3412,7 +3431,7 @@
34123431
end
34133432
end
34143433
)
3415-
(func $~lib/util/number/prettify (; 20 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
3434+
(func $~lib/util/number/prettify (; 21 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
34163435
(local $3 i32)
34173436
(local $4 i32)
34183437
(local $5 i32)
@@ -3729,7 +3748,7 @@
37293748
end
37303749
unreachable
37313750
)
3732-
(func $~lib/util/number/dtoa_core (; 21 ;) (param $0 i32) (param $1 f64) (result i32)
3751+
(func $~lib/util/number/dtoa_core (; 22 ;) (param $0 i32) (param $1 f64) (result i32)
37333752
(local $2 i32)
37343753
(local $3 i32)
37353754
(local $4 i32)
@@ -4151,7 +4170,7 @@
41514170
local.get $2
41524171
i32.add
41534172
)
4154-
(func $~lib/string/String#substring (; 22 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
4173+
(func $~lib/string/String#substring (; 23 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
41554174
(local $3 i32)
41564175
(local $4 i32)
41574176
(local $5 i32)
@@ -4258,7 +4277,7 @@
42584277
local.get $11
42594278
call $~lib/rt/stub/__retain
42604279
)
4261-
(func $~lib/rt/stub/__free (; 23 ;) (param $0 i32)
4280+
(func $~lib/rt/stub/__free (; 24 ;) (param $0 i32)
42624281
(local $1 i32)
42634282
local.get $0
42644283
i32.const 0
@@ -4308,7 +4327,7 @@
43084327
global.set $~lib/rt/stub/offset
43094328
end
43104329
)
4311-
(func $~lib/util/number/dtoa (; 24 ;) (param $0 f64) (result i32)
4330+
(func $~lib/util/number/dtoa (; 25 ;) (param $0 f64) (result i32)
43124331
(local $1 i32)
43134332
(local $2 i32)
43144333
(local $3 i32)
@@ -4369,11 +4388,11 @@
43694388
call $~lib/rt/stub/__free
43704389
local.get $3
43714390
)
4372-
(func $~lib/number/F64#toString (; 25 ;) (param $0 f64) (param $1 i32) (result i32)
4391+
(func $~lib/number/F64#toString (; 26 ;) (param $0 f64) (param $1 i32) (result i32)
43734392
local.get $0
43744393
call $~lib/util/number/dtoa
43754394
)
4376-
(func $resolve-binary/Foo#constructor (; 26 ;) (param $0 i32) (result i32)
4395+
(func $resolve-binary/Foo#constructor (; 27 ;) (param $0 i32) (result i32)
43774396
local.get $0
43784397
i32.eqz
43794398
if
@@ -4385,7 +4404,7 @@
43854404
end
43864405
local.get $0
43874406
)
4388-
(func $resolve-binary/Foo#lt (; 27 ;) (param $0 i32) (param $1 i32) (result i32)
4407+
(func $resolve-binary/Foo#lt (; 28 ;) (param $0 i32) (param $1 i32) (result i32)
43894408
(local $2 i32)
43904409
local.get $1
43914410
call $~lib/rt/stub/__retain
@@ -4396,11 +4415,11 @@
43964415
call $~lib/rt/stub/__release
43974416
local.get $2
43984417
)
4399-
(func $~lib/string/String#toString (; 28 ;) (param $0 i32) (result i32)
4418+
(func $~lib/string/String#toString (; 29 ;) (param $0 i32) (result i32)
44004419
local.get $0
44014420
call $~lib/rt/stub/__retain
44024421
)
4403-
(func $resolve-binary/Foo#gt (; 29 ;) (param $0 i32) (param $1 i32) (result i32)
4422+
(func $resolve-binary/Foo#gt (; 30 ;) (param $0 i32) (param $1 i32) (result i32)
44044423
(local $2 i32)
44054424
local.get $1
44064425
call $~lib/rt/stub/__retain
@@ -4411,7 +4430,7 @@
44114430
call $~lib/rt/stub/__release
44124431
local.get $2
44134432
)
4414-
(func $resolve-binary/Foo#le (; 30 ;) (param $0 i32) (param $1 i32) (result i32)
4433+
(func $resolve-binary/Foo#le (; 31 ;) (param $0 i32) (param $1 i32) (result i32)
44154434
(local $2 i32)
44164435
local.get $1
44174436
call $~lib/rt/stub/__retain
@@ -4422,7 +4441,7 @@
44224441
call $~lib/rt/stub/__release
44234442
local.get $2
44244443
)
4425-
(func $resolve-binary/Foo#ge (; 31 ;) (param $0 i32) (param $1 i32) (result i32)
4444+
(func $resolve-binary/Foo#ge (; 32 ;) (param $0 i32) (param $1 i32) (result i32)
44264445
(local $2 i32)
44274446
local.get $1
44284447
call $~lib/rt/stub/__retain
@@ -4433,7 +4452,7 @@
44334452
call $~lib/rt/stub/__release
44344453
local.get $2
44354454
)
4436-
(func $resolve-binary/Foo#eq (; 32 ;) (param $0 i32) (param $1 i32) (result i32)
4455+
(func $resolve-binary/Foo#eq (; 33 ;) (param $0 i32) (param $1 i32) (result i32)
44374456
(local $2 i32)
44384457
local.get $1
44394458
call $~lib/rt/stub/__retain
@@ -4444,7 +4463,7 @@
44444463
call $~lib/rt/stub/__release
44454464
local.get $2
44464465
)
4447-
(func $resolve-binary/Foo#ne (; 33 ;) (param $0 i32) (param $1 i32) (result i32)
4466+
(func $resolve-binary/Foo#ne (; 34 ;) (param $0 i32) (param $1 i32) (result i32)
44484467
(local $2 i32)
44494468
local.get $1
44504469
call $~lib/rt/stub/__retain
@@ -4455,7 +4474,7 @@
44554474
call $~lib/rt/stub/__release
44564475
local.get $2
44574476
)
4458-
(func $resolve-binary/Foo#add (; 34 ;) (param $0 i32) (param $1 i32) (result i32)
4477+
(func $resolve-binary/Foo#add (; 35 ;) (param $0 i32) (param $1 i32) (result i32)
44594478
(local $2 i32)
44604479
local.get $1
44614480
call $~lib/rt/stub/__retain
@@ -4466,7 +4485,7 @@
44664485
call $~lib/rt/stub/__release
44674486
local.get $2
44684487
)
4469-
(func $resolve-binary/Foo.sub (; 35 ;) (param $0 i32) (param $1 i32) (result i32)
4488+
(func $resolve-binary/Foo.sub (; 36 ;) (param $0 i32) (param $1 i32) (result i32)
44704489
(local $2 i32)
44714490
local.get $0
44724491
call $~lib/rt/stub/__retain
@@ -4482,7 +4501,7 @@
44824501
call $~lib/rt/stub/__release
44834502
local.get $2
44844503
)
4485-
(func $resolve-binary/Foo#mul (; 36 ;) (param $0 i32) (param $1 i32) (result i32)
4504+
(func $resolve-binary/Foo#mul (; 37 ;) (param $0 i32) (param $1 i32) (result i32)
44864505
(local $2 i32)
44874506
local.get $1
44884507
call $~lib/rt/stub/__retain
@@ -4493,7 +4512,7 @@
44934512
call $~lib/rt/stub/__release
44944513
local.get $2
44954514
)
4496-
(func $resolve-binary/Foo#div (; 37 ;) (param $0 i32) (param $1 i32) (result i32)
4515+
(func $resolve-binary/Foo#div (; 38 ;) (param $0 i32) (param $1 i32) (result i32)
44974516
(local $2 i32)
44984517
local.get $1
44994518
call $~lib/rt/stub/__retain
@@ -4504,7 +4523,7 @@
45044523
call $~lib/rt/stub/__release
45054524
local.get $2
45064525
)
4507-
(func $resolve-binary/Foo#rem (; 38 ;) (param $0 i32) (param $1 i32) (result i32)
4526+
(func $resolve-binary/Foo#rem (; 39 ;) (param $0 i32) (param $1 i32) (result i32)
45084527
(local $2 i32)
45094528
local.get $1
45104529
call $~lib/rt/stub/__retain
@@ -4515,7 +4534,7 @@
45154534
call $~lib/rt/stub/__release
45164535
local.get $2
45174536
)
4518-
(func $resolve-binary/Foo#pow (; 39 ;) (param $0 i32) (param $1 i32) (result i32)
4537+
(func $resolve-binary/Foo#pow (; 40 ;) (param $0 i32) (param $1 i32) (result i32)
45194538
(local $2 i32)
45204539
local.get $1
45214540
call $~lib/rt/stub/__retain
@@ -4526,7 +4545,7 @@
45264545
call $~lib/rt/stub/__release
45274546
local.get $2
45284547
)
4529-
(func $resolve-binary/Bar#constructor (; 40 ;) (param $0 i32) (result i32)
4548+
(func $resolve-binary/Bar#constructor (; 41 ;) (param $0 i32) (result i32)
45304549
local.get $0
45314550
i32.eqz
45324551
if
@@ -4538,17 +4557,17 @@
45384557
end
45394558
local.get $0
45404559
)
4541-
(func $resolve-binary/Bar#add (; 41 ;) (param $0 i32) (param $1 i32) (result i32)
4560+
(func $resolve-binary/Bar#add (; 42 ;) (param $0 i32) (param $1 i32) (result i32)
45424561
local.get $1
45434562
call $~lib/rt/stub/__retain
45444563
local.set $1
45454564
local.get $1
45464565
)
4547-
(func $resolve-binary/Bar#self (; 42 ;) (param $0 i32) (result i32)
4566+
(func $resolve-binary/Bar#self (; 43 ;) (param $0 i32) (result i32)
45484567
local.get $0
45494568
call $~lib/rt/stub/__retain
45504569
)
4551-
(func $start:resolve-binary (; 43 ;)
4570+
(func $start:resolve-binary (; 44 ;)
45524571
(local $0 i32)
45534572
(local $1 i32)
45544573
(local $2 i32)
@@ -4713,7 +4732,9 @@
47134732
call $~lib/builtins/abort
47144733
unreachable
47154734
end
4716-
i32.const 0
4735+
i32.const 160
4736+
i32.const 160
4737+
call $~lib/string/String.__ne
47174738
call $~lib/number/Bool#toString
47184739
local.tee $7
47194740
i32.const 64
@@ -5584,7 +5605,7 @@
55845605
local.get $62
55855606
call $~lib/rt/stub/__release
55865607
)
5587-
(func $~start (; 44 ;)
5608+
(func $~start (; 45 ;)
55885609
call $start:resolve-binary
55895610
)
55905611
)

0 commit comments

Comments
 (0)