Skip to content

Commit ffbcbb2

Browse files
authored
fix: Fix resolve typeof type (#2342)
1 parent 17e4647 commit ffbcbb2

File tree

4 files changed

+142
-64
lines changed

4 files changed

+142
-64
lines changed

Diff for: src/resolver.ts

+3
Original file line numberDiff line numberDiff line change
@@ -1778,6 +1778,9 @@ export class Resolver extends DiagnosticEmitter {
17781778
}
17791779
return null;
17801780
}
1781+
case Token.TYPEOF: {
1782+
return this.program.stringInstance.type;
1783+
}
17811784
default: assert(false);
17821785
}
17831786
return null;

Diff for: tests/compiler/resolve-unary.debug.wat

+67-22
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,10 @@
3232
(global $resolve-unary/b (mut i32) (i32.const 1))
3333
(global $resolve-unary/foo (mut i32) (i32.const 0))
3434
(global $resolve-unary/bar (mut i32) (i32.const 0))
35-
(global $~lib/rt/__rtti_base i32 (i32.const 2704))
36-
(global $~lib/memory/__data_end i32 (i32.const 2748))
37-
(global $~lib/memory/__stack_pointer (mut i32) (i32.const 19132))
38-
(global $~lib/memory/__heap_base i32 (i32.const 19132))
35+
(global $~lib/rt/__rtti_base i32 (i32.const 2816))
36+
(global $~lib/memory/__data_end i32 (i32.const 2868))
37+
(global $~lib/memory/__stack_pointer (mut i32) (i32.const 19252))
38+
(global $~lib/memory/__heap_base i32 (i32.const 19252))
3939
(memory $0 1)
4040
(data (i32.const 12) "|\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00")
4141
(data (i32.const 140) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00")
@@ -66,9 +66,12 @@
6666
(data (i32.const 2604) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00-\00-\00i\00\00\00\00\00\00\00")
6767
(data (i32.const 2636) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00i\00+\00+\00\00\00\00\00\00\00")
6868
(data (i32.const 2668) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00i\00-\00-\00\00\00\00\00\00\00")
69-
(data (i32.const 2704) "\05\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00")
70-
(table $0 1 1 funcref)
71-
(elem $0 (i32.const 1))
69+
(data (i32.const 2700) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00n\00u\00m\00b\00e\00r\00")
70+
(data (i32.const 2732) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00")
71+
(data (i32.const 2764) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00\00\00\00\00\00\00\00\00\00\00\00\00")
72+
(data (i32.const 2816) "\06\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00")
73+
(table $0 2 2 funcref)
74+
(elem $0 (i32.const 1) $start:resolve-unary~anonymous|0)
7275
(export "memory" (memory $0))
7376
(start $~start)
7477
(func $~lib/util/number/decimalCount32 (param $0 i32) (result i32)
@@ -2765,6 +2768,12 @@
27652768
(func $resolve-unary/Bar.postfix_dec (param $0 i32) (result i32)
27662769
i32.const 2688
27672770
)
2771+
(func $start:resolve-unary~anonymous|0
2772+
nop
2773+
)
2774+
(func $resolve-unary/generic<~lib/string/String> (param $0 i32)
2775+
nop
2776+
)
27682777
(func $~lib/rt/__visit_globals (param $0 i32)
27692778
(local $1 i32)
27702779
global.get $resolve-unary/foo
@@ -2805,30 +2814,47 @@
28052814
call $~lib/rt/itcms/__visit
28062815
end
28072816
)
2817+
(func $~lib/function/Function<%28%29=>void>#__visit (param $0 i32) (param $1 i32)
2818+
local.get $0
2819+
i32.load offset=4
2820+
local.get $1
2821+
call $~lib/rt/itcms/__visit
2822+
)
2823+
(func $~lib/function/Function<%28%29=>void>~visit (param $0 i32) (param $1 i32)
2824+
local.get $0
2825+
local.get $1
2826+
call $~lib/function/Function<%28%29=>void>#__visit
2827+
)
28082828
(func $~lib/rt/__visit_members (param $0 i32) (param $1 i32)
28092829
block $invalid
2810-
block $resolve-unary/Bar
2811-
block $resolve-unary/Foo
2812-
block $~lib/arraybuffer/ArrayBufferView
2813-
block $~lib/string/String
2814-
block $~lib/arraybuffer/ArrayBuffer
2815-
local.get $0
2816-
i32.const 8
2817-
i32.sub
2818-
i32.load
2819-
br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $resolve-unary/Foo $resolve-unary/Bar $invalid
2830+
block $~lib/function/Function<%28%29=>void>
2831+
block $resolve-unary/Bar
2832+
block $resolve-unary/Foo
2833+
block $~lib/arraybuffer/ArrayBufferView
2834+
block $~lib/string/String
2835+
block $~lib/arraybuffer/ArrayBuffer
2836+
local.get $0
2837+
i32.const 8
2838+
i32.sub
2839+
i32.load
2840+
br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $resolve-unary/Foo $resolve-unary/Bar $~lib/function/Function<%28%29=>void> $invalid
2841+
end
2842+
return
28202843
end
28212844
return
28222845
end
2846+
local.get $0
2847+
local.get $1
2848+
call $~lib/arraybuffer/ArrayBufferView~visit
28232849
return
28242850
end
2825-
local.get $0
2826-
local.get $1
2827-
call $~lib/arraybuffer/ArrayBufferView~visit
28282851
return
28292852
end
28302853
return
28312854
end
2855+
local.get $0
2856+
local.get $1
2857+
call $~lib/function/Function<%28%29=>void>~visit
28322858
return
28332859
end
28342860
unreachable
@@ -2841,8 +2867,8 @@
28412867
global.get $~lib/memory/__data_end
28422868
i32.lt_s
28432869
if
2844-
i32.const 19152
2845-
i32.const 19200
2870+
i32.const 19280
2871+
i32.const 19328
28462872
i32.const 1
28472873
i32.const 1
28482874
call $~lib/builtins/abort
@@ -3501,6 +3527,25 @@
35013527
call $~lib/builtins/abort
35023528
unreachable
35033529
end
3530+
i32.const 1
3531+
drop
3532+
i32.const 2720
3533+
local.set $1
3534+
global.get $~lib/memory/__stack_pointer
3535+
local.get $1
3536+
i32.store
3537+
local.get $1
3538+
call $~lib/string/String#get:length
3539+
drop
3540+
i32.const 2752
3541+
drop
3542+
i32.const 2784
3543+
local.set $1
3544+
global.get $~lib/memory/__stack_pointer
3545+
local.get $1
3546+
i32.store
3547+
local.get $1
3548+
call $resolve-unary/generic<~lib/string/String>
35043549
global.get $~lib/memory/__stack_pointer
35053550
i32.const 20
35063551
i32.add

0 commit comments

Comments
 (0)