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