1*60fc557cSAlex Crichton;;! gc = true
2*60fc557cSAlex Crichton
392024ad1SLuna P-C(module
492024ad1SLuna P-C  (table $t 10 externref)
592024ad1SLuna P-C
692024ad1SLuna P-C  (func (export "fill") (param $i i32) (param $r externref) (param $n i32)
792024ad1SLuna P-C    (table.fill $t (local.get $i) (local.get $r) (local.get $n))
892024ad1SLuna P-C  )
992024ad1SLuna P-C
1092024ad1SLuna P-C  (func (export "get") (param $i i32) (result externref)
1192024ad1SLuna P-C    (table.get $t (local.get $i))
1292024ad1SLuna P-C  )
1392024ad1SLuna P-C)
1492024ad1SLuna P-C
1592024ad1SLuna P-C(assert_return (invoke "get" (i32.const 1)) (ref.null extern))
1692024ad1SLuna P-C(assert_return (invoke "get" (i32.const 2)) (ref.null extern))
1792024ad1SLuna P-C(assert_return (invoke "get" (i32.const 3)) (ref.null extern))
1892024ad1SLuna P-C(assert_return (invoke "get" (i32.const 4)) (ref.null extern))
1992024ad1SLuna P-C(assert_return (invoke "get" (i32.const 5)) (ref.null extern))
2092024ad1SLuna P-C
2192024ad1SLuna P-C(assert_return (invoke "fill" (i32.const 2) (ref.extern 1) (i32.const 3)))
2292024ad1SLuna P-C(assert_return (invoke "get" (i32.const 1)) (ref.null extern))
2392024ad1SLuna P-C(assert_return (invoke "get" (i32.const 2)) (ref.extern 1))
2492024ad1SLuna P-C(assert_return (invoke "get" (i32.const 3)) (ref.extern 1))
2592024ad1SLuna P-C(assert_return (invoke "get" (i32.const 4)) (ref.extern 1))
2692024ad1SLuna P-C(assert_return (invoke "get" (i32.const 5)) (ref.null extern))
2792024ad1SLuna P-C
2892024ad1SLuna P-C(assert_return (invoke "fill" (i32.const 4) (ref.extern 2) (i32.const 2)))
2992024ad1SLuna P-C(assert_return (invoke "get" (i32.const 3)) (ref.extern 1))
3092024ad1SLuna P-C(assert_return (invoke "get" (i32.const 4)) (ref.extern 2))
3192024ad1SLuna P-C(assert_return (invoke "get" (i32.const 5)) (ref.extern 2))
3292024ad1SLuna P-C(assert_return (invoke "get" (i32.const 6)) (ref.null extern))
3392024ad1SLuna P-C
3492024ad1SLuna P-C(assert_return (invoke "fill" (i32.const 4) (ref.extern 3) (i32.const 0)))
3592024ad1SLuna P-C(assert_return (invoke "get" (i32.const 3)) (ref.extern 1))
3692024ad1SLuna P-C(assert_return (invoke "get" (i32.const 4)) (ref.extern 2))
3792024ad1SLuna P-C(assert_return (invoke "get" (i32.const 5)) (ref.extern 2))
3892024ad1SLuna P-C
3992024ad1SLuna P-C(assert_return (invoke "fill" (i32.const 8) (ref.extern 4) (i32.const 2)))
4092024ad1SLuna P-C(assert_return (invoke "get" (i32.const 7)) (ref.null extern))
4192024ad1SLuna P-C(assert_return (invoke "get" (i32.const 8)) (ref.extern 4))
4292024ad1SLuna P-C(assert_return (invoke "get" (i32.const 9)) (ref.extern 4))
4392024ad1SLuna P-C
4492024ad1SLuna P-C(assert_return (invoke "fill" (i32.const 9) (ref.null extern) (i32.const 1)))
4592024ad1SLuna P-C(assert_return (invoke "get" (i32.const 8)) (ref.extern 4))
4692024ad1SLuna P-C(assert_return (invoke "get" (i32.const 9)) (ref.null extern))
4792024ad1SLuna P-C
4892024ad1SLuna P-C(assert_return (invoke "fill" (i32.const 10) (ref.extern 5) (i32.const 0)))
4992024ad1SLuna P-C(assert_return (invoke "get" (i32.const 9)) (ref.null extern))
5092024ad1SLuna P-C
5192024ad1SLuna P-C(assert_trap
5292024ad1SLuna P-C  (invoke "fill" (i32.const 8) (ref.extern 6) (i32.const 3))
5392024ad1SLuna P-C  "out of bounds table access"
5492024ad1SLuna P-C)
5592024ad1SLuna P-C(assert_return (invoke "get" (i32.const 7)) (ref.null extern))
5692024ad1SLuna P-C(assert_return (invoke "get" (i32.const 8)) (ref.extern 4))
5792024ad1SLuna P-C(assert_return (invoke "get" (i32.const 9)) (ref.null extern))
5892024ad1SLuna P-C
5992024ad1SLuna P-C(assert_trap
6092024ad1SLuna P-C  (invoke "fill" (i32.const 11) (ref.null extern) (i32.const 0))
6192024ad1SLuna P-C  "out of bounds table access"
6292024ad1SLuna P-C)
6392024ad1SLuna P-C
6492024ad1SLuna P-C(assert_trap
6592024ad1SLuna P-C  (invoke "fill" (i32.const 11) (ref.null extern) (i32.const 10))
6692024ad1SLuna P-C  "out of bounds table access"
6792024ad1SLuna P-C)
6892024ad1SLuna P-C
6992024ad1SLuna P-C
7092024ad1SLuna P-C;; Type errors
7192024ad1SLuna P-C
7292024ad1SLuna P-C(assert_invalid
7392024ad1SLuna P-C  (module
7492024ad1SLuna P-C    (table $t 10 externref)
7592024ad1SLuna P-C    (func $type-index-value-length-empty-vs-i32-i32
7692024ad1SLuna P-C      (table.fill $t)
7792024ad1SLuna P-C    )
7892024ad1SLuna P-C  )
7992024ad1SLuna P-C  "type mismatch"
8092024ad1SLuna P-C)
8192024ad1SLuna P-C(assert_invalid
8292024ad1SLuna P-C  (module
8392024ad1SLuna P-C    (table $t 10 externref)
8492024ad1SLuna P-C    (func $type-index-empty-vs-i32
8592024ad1SLuna P-C      (table.fill $t (ref.null extern) (i32.const 1))
8692024ad1SLuna P-C    )
8792024ad1SLuna P-C  )
8892024ad1SLuna P-C  "type mismatch"
8992024ad1SLuna P-C)
9092024ad1SLuna P-C(assert_invalid
9192024ad1SLuna P-C  (module
9292024ad1SLuna P-C    (table $t 10 externref)
9392024ad1SLuna P-C    (func $type-value-empty-vs
9492024ad1SLuna P-C      (table.fill $t (i32.const 1) (i32.const 1))
9592024ad1SLuna P-C    )
9692024ad1SLuna P-C  )
9792024ad1SLuna P-C  "type mismatch"
9892024ad1SLuna P-C)
9992024ad1SLuna P-C(assert_invalid
10092024ad1SLuna P-C  (module
10192024ad1SLuna P-C    (table $t 10 externref)
10292024ad1SLuna P-C    (func $type-length-empty-vs-i32
10392024ad1SLuna P-C      (table.fill $t (i32.const 1) (ref.null extern))
10492024ad1SLuna P-C    )
10592024ad1SLuna P-C  )
10692024ad1SLuna P-C  "type mismatch"
10792024ad1SLuna P-C)
10892024ad1SLuna P-C(assert_invalid
10992024ad1SLuna P-C  (module
11092024ad1SLuna P-C    (table $t 0 externref)
11192024ad1SLuna P-C    (func $type-index-f32-vs-i32
11292024ad1SLuna P-C      (table.fill $t (f32.const 1) (ref.null extern) (i32.const 1))
11392024ad1SLuna P-C    )
11492024ad1SLuna P-C  )
11592024ad1SLuna P-C  "type mismatch"
11692024ad1SLuna P-C)
11792024ad1SLuna P-C(assert_invalid
11892024ad1SLuna P-C  (module
11992024ad1SLuna P-C    (table $t 0 funcref)
12092024ad1SLuna P-C    (func $type-value-vs-funcref (param $r externref)
12192024ad1SLuna P-C      (table.fill $t (i32.const 1) (local.get $r) (i32.const 1))
12292024ad1SLuna P-C    )
12392024ad1SLuna P-C  )
12492024ad1SLuna P-C  "type mismatch"
12592024ad1SLuna P-C)
12692024ad1SLuna P-C(assert_invalid
12792024ad1SLuna P-C  (module
12892024ad1SLuna P-C    (type $afunc (func))
12992024ad1SLuna P-C    (table $t 0 (ref null $afunc))
13092024ad1SLuna P-C    (func $type-funcref-vs-typed-func (param $r funcref)
13192024ad1SLuna P-C      (table.fill $t (i32.const 1) (local.get $r) (i32.const 1))
13292024ad1SLuna P-C    )
13392024ad1SLuna P-C  )
13492024ad1SLuna P-C  "type mismatch"
13592024ad1SLuna P-C)
13692024ad1SLuna P-C(assert_invalid
13792024ad1SLuna P-C  (module
13892024ad1SLuna P-C    (table $t 0 externref)
13992024ad1SLuna P-C    (func $type-length-f32-vs-i32
14092024ad1SLuna P-C      (table.fill $t (i32.const 1) (ref.null extern) (f32.const 1))
14192024ad1SLuna P-C    )
14292024ad1SLuna P-C  )
14392024ad1SLuna P-C  "type mismatch"
14492024ad1SLuna P-C)
14592024ad1SLuna P-C
14692024ad1SLuna P-C(assert_invalid
14792024ad1SLuna P-C  (module
14892024ad1SLuna P-C    (table $t1 1 externref)
14992024ad1SLuna P-C    (table $t2 1 funcref)
15092024ad1SLuna P-C    (func $type-value-externref-vs-funcref-multi (param $r externref)
15192024ad1SLuna P-C      (table.fill $t2 (i32.const 0) (local.get $r) (i32.const 1))
15292024ad1SLuna P-C    )
15392024ad1SLuna P-C  )
15492024ad1SLuna P-C  "type mismatch"
15592024ad1SLuna P-C)
15692024ad1SLuna P-C
15792024ad1SLuna P-C(assert_invalid
15892024ad1SLuna P-C  (module
15992024ad1SLuna P-C    (table $t 1 externref)
16092024ad1SLuna P-C    (func $type-result-empty-vs-num (result i32)
16192024ad1SLuna P-C      (table.fill $t (i32.const 0) (ref.null extern) (i32.const 1))
16292024ad1SLuna P-C    )
16392024ad1SLuna P-C  )
16492024ad1SLuna P-C  "type mismatch"
16592024ad1SLuna P-C)
166