...
1(module
2 (table $t0 0 externref)
3 (table $t1 1 externref)
4 (table $t2 0 2 externref)
5 (table $t3 3 8 externref)
6
7 (func (export "size-t0") (result i32) table.size)
8 (func (export "size-t1") (result i32) (table.size $t1))
9 (func (export "size-t2") (result i32) (table.size $t2))
10 (func (export "size-t3") (result i32) (table.size $t3))
11
12 (func (export "grow-t0") (param $sz i32)
13 (drop (table.grow $t0 (ref.null extern) (local.get $sz)))
14 )
15 (func (export "grow-t1") (param $sz i32)
16 (drop (table.grow $t1 (ref.null extern) (local.get $sz)))
17 )
18 (func (export "grow-t2") (param $sz i32)
19 (drop (table.grow $t2 (ref.null extern) (local.get $sz)))
20 )
21 (func (export "grow-t3") (param $sz i32)
22 (drop (table.grow $t3 (ref.null extern) (local.get $sz)))
23 )
24)
25
26(assert_return (invoke "size-t0") (i32.const 0))
27(assert_return (invoke "grow-t0" (i32.const 1)))
28(assert_return (invoke "size-t0") (i32.const 1))
29(assert_return (invoke "grow-t0" (i32.const 4)))
30(assert_return (invoke "size-t0") (i32.const 5))
31(assert_return (invoke "grow-t0" (i32.const 0)))
32(assert_return (invoke "size-t0") (i32.const 5))
33
34(assert_return (invoke "size-t1") (i32.const 1))
35(assert_return (invoke "grow-t1" (i32.const 1)))
36(assert_return (invoke "size-t1") (i32.const 2))
37(assert_return (invoke "grow-t1" (i32.const 4)))
38(assert_return (invoke "size-t1") (i32.const 6))
39(assert_return (invoke "grow-t1" (i32.const 0)))
40(assert_return (invoke "size-t1") (i32.const 6))
41
42(assert_return (invoke "size-t2") (i32.const 0))
43(assert_return (invoke "grow-t2" (i32.const 3)))
44(assert_return (invoke "size-t2") (i32.const 0))
45(assert_return (invoke "grow-t2" (i32.const 1)))
46(assert_return (invoke "size-t2") (i32.const 1))
47(assert_return (invoke "grow-t2" (i32.const 0)))
48(assert_return (invoke "size-t2") (i32.const 1))
49(assert_return (invoke "grow-t2" (i32.const 4)))
50(assert_return (invoke "size-t2") (i32.const 1))
51(assert_return (invoke "grow-t2" (i32.const 1)))
52(assert_return (invoke "size-t2") (i32.const 2))
53
54(assert_return (invoke "size-t3") (i32.const 3))
55(assert_return (invoke "grow-t3" (i32.const 1)))
56(assert_return (invoke "size-t3") (i32.const 4))
57(assert_return (invoke "grow-t3" (i32.const 3)))
58(assert_return (invoke "size-t3") (i32.const 7))
59(assert_return (invoke "grow-t3" (i32.const 0)))
60(assert_return (invoke "size-t3") (i32.const 7))
61(assert_return (invoke "grow-t3" (i32.const 2)))
62(assert_return (invoke "size-t3") (i32.const 7))
63(assert_return (invoke "grow-t3" (i32.const 1)))
64(assert_return (invoke "size-t3") (i32.const 8))
65
66
67;; Type errors
68
69(assert_invalid
70 (module
71 (table $t 1 externref)
72 (func $type-result-i32-vs-empty
73 (table.size $t)
74 )
75 )
76 "type mismatch"
77)
78(assert_invalid
79 (module
80 (table $t 1 externref)
81 (func $type-result-i32-vs-f32 (result f32)
82 (table.size $t)
83 )
84 )
85 "type mismatch"
86)
View as plain text