Skip to content

Commit 07d17fd

Browse files
committed
tests: add more
1 parent 49745ad commit 07d17fd

3 files changed

Lines changed: 114 additions & 2 deletions

File tree

tests/compiler/tuple-type.debug.wat

Lines changed: 60 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
(module
22
(type $0 (func (param i32 i64) (result i32 i64)))
3-
(type $1 (func (param f32 f64) (result f32 f64)))
3+
(type $1 (func (param i32 i32 i64) (result i32 i64)))
4+
(type $2 (func (result i32 i64)))
5+
(type $3 (func (param f32 f64) (result f32 f64)))
6+
(type $4 (func (param i32 i64)))
7+
(type $5 (func (param i32 i32 i32 i32)))
8+
(type $6 (func))
9+
(import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32)))
10+
(global $~argumentsLength (mut i32) (i32.const 0))
411
(global $~lib/memory/__data_end i32 (i32.const 8))
512
(global $~lib/memory/__stack_pointer (mut i32) (i32.const 32776))
613
(global $~lib/memory/__heap_base i32 (i32.const 32776))
@@ -11,7 +18,9 @@
1118
(export "floats" (func $tuple-type/floats))
1219
(export "forward" (func $tuple-type/forward))
1320
(export "named" (func $tuple-type/named))
21+
(export "dropCall" (func $tuple-type/dropCall))
1422
(export "memory" (memory $0))
23+
(export "indirect" (func $export:tuple-type/indirect))
1524
(func $tuple-type/pair (param $a i32) (param $b i64) (result i32 i64)
1625
local.get $a
1726
local.get $b
@@ -36,4 +45,54 @@
3645
tuple.make 2
3746
return
3847
)
48+
(func $tuple-type/indirect (param $fn i32) (param $a i32) (param $b i64) (result i32 i64)
49+
local.get $a
50+
local.get $b
51+
i32.const 2
52+
global.set $~argumentsLength
53+
local.get $fn
54+
i32.load
55+
call_indirect (type $0)
56+
return
57+
)
58+
(func $tuple-type/dropCall (param $a i32) (param $b i64)
59+
local.get $a
60+
local.get $b
61+
call $tuple-type/pair
62+
tuple.drop 2
63+
)
64+
(func $~stack_check
65+
global.get $~lib/memory/__stack_pointer
66+
global.get $~lib/memory/__data_end
67+
i32.lt_s
68+
if
69+
i32.const 32800
70+
i32.const 32848
71+
i32.const 1
72+
i32.const 1
73+
call $~lib/builtins/abort
74+
unreachable
75+
end
76+
)
77+
(func $export:tuple-type/indirect (param $0 i32) (param $1 i32) (param $2 i64) (result i32 i64)
78+
(local $3 (tuple i32 i64))
79+
global.get $~lib/memory/__stack_pointer
80+
i32.const 4
81+
i32.sub
82+
global.set $~lib/memory/__stack_pointer
83+
call $~stack_check
84+
global.get $~lib/memory/__stack_pointer
85+
local.get $0
86+
i32.store
87+
local.get $0
88+
local.get $1
89+
local.get $2
90+
call $tuple-type/indirect
91+
local.set $3
92+
global.get $~lib/memory/__stack_pointer
93+
i32.const 4
94+
i32.add
95+
global.set $~lib/memory/__stack_pointer
96+
local.get $3
97+
)
3998
)

tests/compiler/tuple-type.release.wat

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,21 @@
11
(module
22
(type $0 (func (param i32 i64) (result i32 i64)))
3-
(type $1 (func (param f32 f64) (result f32 f64)))
3+
(type $1 (func (result i32 i64)))
4+
(type $2 (func (param f32 f64) (result f32 f64)))
5+
(type $3 (func (param i32 i64)))
6+
(type $4 (func (param i32 i32 i32 i32)))
7+
(type $5 (func (param i32 i32 i64) (result i32 i64)))
8+
(import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32)))
9+
(global $~lib/memory/__stack_pointer (mut i32) (i32.const 33792))
410
(memory $0 0)
11+
(table $0 1 1 funcref)
512
(export "pair" (func $tuple-type/pair))
613
(export "floats" (func $tuple-type/floats))
714
(export "forward" (func $tuple-type/pair))
815
(export "named" (func $tuple-type/pair))
16+
(export "dropCall" (func $tuple-type/dropCall))
917
(export "memory" (memory $0))
18+
(export "indirect" (func $export:tuple-type/indirect))
1019
(func $tuple-type/pair (param $0 i32) (param $1 i64) (result i32 i64)
1120
local.get $0
1221
local.get $1
@@ -17,4 +26,38 @@
1726
local.get $1
1827
tuple.make 2
1928
)
29+
(func $tuple-type/dropCall (param $0 i32) (param $1 i64)
30+
)
31+
(func $export:tuple-type/indirect (param $0 i32) (param $1 i32) (param $2 i64) (result i32 i64)
32+
(local $3 (tuple i32 i64))
33+
global.get $~lib/memory/__stack_pointer
34+
i32.const 4
35+
i32.sub
36+
global.set $~lib/memory/__stack_pointer
37+
global.get $~lib/memory/__stack_pointer
38+
i32.const 1024
39+
i32.lt_s
40+
if
41+
i32.const 33824
42+
i32.const 33872
43+
i32.const 1
44+
i32.const 1
45+
call $~lib/builtins/abort
46+
unreachable
47+
end
48+
global.get $~lib/memory/__stack_pointer
49+
local.get $0
50+
i32.store
51+
local.get $1
52+
local.get $2
53+
local.get $0
54+
i32.load
55+
call_indirect (type $0)
56+
local.set $3
57+
global.get $~lib/memory/__stack_pointer
58+
i32.const 4
59+
i32.add
60+
global.set $~lib/memory/__stack_pointer
61+
local.get $3
62+
)
2063
)

tests/compiler/tuple-type.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,13 @@ export function forward(a: i32, b: i64): readonly [i32, i64] {
1313
export function named(a: i32, b: i64): readonly [lo: i32, hi: i64] {
1414
return [a, b];
1515
}
16+
17+
type PairFn = (a: i32, b: i64) => readonly [i32, i64];
18+
19+
export function indirect(fn: PairFn, a: i32, b: i64): readonly [i32, i64] {
20+
return fn(a, b);
21+
}
22+
23+
export function dropCall(a: i32, b: i64): void {
24+
pair(a, b);
25+
}

0 commit comments

Comments
 (0)