1;;! gc = true 2 3(module 4 (table $t 10 externref) 5 6 (func (export "fill") (param $i i32) (param $r externref) (param $n i32) 7 (table.fill $t (local.get $i) (local.get $r) (local.get $n)) 8 ) 9 10 (func (export "get") (param $i i32) (result externref) 11 (table.get $t (local.get $i)) 12 ) 13) 14 15(assert_return (invoke "get" (i32.const 1)) (ref.null extern)) 16(assert_return (invoke "get" (i32.const 2)) (ref.null extern)) 17(assert_return (invoke "get" (i32.const 3)) (ref.null extern)) 18(assert_return (invoke "get" (i32.const 4)) (ref.null extern)) 19(assert_return (invoke "get" (i32.const 5)) (ref.null extern)) 20 21(assert_return (invoke "fill" (i32.const 2) (ref.extern 1) (i32.const 3))) 22(assert_return (invoke "get" (i32.const 1)) (ref.null extern)) 23(assert_return (invoke "get" (i32.const 2)) (ref.extern 1)) 24(assert_return (invoke "get" (i32.const 3)) (ref.extern 1)) 25(assert_return (invoke "get" (i32.const 4)) (ref.extern 1)) 26(assert_return (invoke "get" (i32.const 5)) (ref.null extern)) 27 28(assert_return (invoke "fill" (i32.const 4) (ref.extern 2) (i32.const 2))) 29(assert_return (invoke "get" (i32.const 3)) (ref.extern 1)) 30(assert_return (invoke "get" (i32.const 4)) (ref.extern 2)) 31(assert_return (invoke "get" (i32.const 5)) (ref.extern 2)) 32(assert_return (invoke "get" (i32.const 6)) (ref.null extern)) 33 34(assert_return (invoke "fill" (i32.const 4) (ref.extern 3) (i32.const 0))) 35(assert_return (invoke "get" (i32.const 3)) (ref.extern 1)) 36(assert_return (invoke "get" (i32.const 4)) (ref.extern 2)) 37(assert_return (invoke "get" (i32.const 5)) (ref.extern 2)) 38 39(assert_return (invoke "fill" (i32.const 8) (ref.extern 4) (i32.const 2))) 40(assert_return (invoke "get" (i32.const 7)) (ref.null extern)) 41(assert_return (invoke "get" (i32.const 8)) (ref.extern 4)) 42(assert_return (invoke "get" (i32.const 9)) (ref.extern 4)) 43 44(assert_return (invoke "fill" (i32.const 9) (ref.null extern) (i32.const 1))) 45(assert_return (invoke "get" (i32.const 8)) (ref.extern 4)) 46(assert_return (invoke "get" (i32.const 9)) (ref.null extern)) 47 48(assert_return (invoke "fill" (i32.const 10) (ref.extern 5) (i32.const 0))) 49(assert_return (invoke "get" (i32.const 9)) (ref.null extern)) 50 51(assert_trap 52 (invoke "fill" (i32.const 8) (ref.extern 6) (i32.const 3)) 53 "out of bounds table access" 54) 55(assert_return (invoke "get" (i32.const 7)) (ref.null extern)) 56(assert_return (invoke "get" (i32.const 8)) (ref.extern 4)) 57(assert_return (invoke "get" (i32.const 9)) (ref.null extern)) 58 59(assert_trap 60 (invoke "fill" (i32.const 11) (ref.null extern) (i32.const 0)) 61 "out of bounds table access" 62) 63 64(assert_trap 65 (invoke "fill" (i32.const 11) (ref.null extern) (i32.const 10)) 66 "out of bounds table access" 67) 68 69 70;; Type errors 71 72(assert_invalid 73 (module 74 (table $t 10 externref) 75 (func $type-index-value-length-empty-vs-i32-i32 76 (table.fill $t) 77 ) 78 ) 79 "type mismatch" 80) 81(assert_invalid 82 (module 83 (table $t 10 externref) 84 (func $type-index-empty-vs-i32 85 (table.fill $t (ref.null extern) (i32.const 1)) 86 ) 87 ) 88 "type mismatch" 89) 90(assert_invalid 91 (module 92 (table $t 10 externref) 93 (func $type-value-empty-vs 94 (table.fill $t (i32.const 1) (i32.const 1)) 95 ) 96 ) 97 "type mismatch" 98) 99(assert_invalid 100 (module 101 (table $t 10 externref) 102 (func $type-length-empty-vs-i32 103 (table.fill $t (i32.const 1) (ref.null extern)) 104 ) 105 ) 106 "type mismatch" 107) 108(assert_invalid 109 (module 110 (table $t 0 externref) 111 (func $type-index-f32-vs-i32 112 (table.fill $t (f32.const 1) (ref.null extern) (i32.const 1)) 113 ) 114 ) 115 "type mismatch" 116) 117(assert_invalid 118 (module 119 (table $t 0 funcref) 120 (func $type-value-vs-funcref (param $r externref) 121 (table.fill $t (i32.const 1) (local.get $r) (i32.const 1)) 122 ) 123 ) 124 "type mismatch" 125) 126(assert_invalid 127 (module 128 (type $afunc (func)) 129 (table $t 0 (ref null $afunc)) 130 (func $type-funcref-vs-typed-func (param $r funcref) 131 (table.fill $t (i32.const 1) (local.get $r) (i32.const 1)) 132 ) 133 ) 134 "type mismatch" 135) 136(assert_invalid 137 (module 138 (table $t 0 externref) 139 (func $type-length-f32-vs-i32 140 (table.fill $t (i32.const 1) (ref.null extern) (f32.const 1)) 141 ) 142 ) 143 "type mismatch" 144) 145 146(assert_invalid 147 (module 148 (table $t1 1 externref) 149 (table $t2 1 funcref) 150 (func $type-value-externref-vs-funcref-multi (param $r externref) 151 (table.fill $t2 (i32.const 0) (local.get $r) (i32.const 1)) 152 ) 153 ) 154 "type mismatch" 155) 156 157(assert_invalid 158 (module 159 (table $t 1 externref) 160 (func $type-result-empty-vs-num (result i32) 161 (table.fill $t (i32.const 0) (ref.null extern) (i32.const 1)) 162 ) 163 ) 164 "type mismatch" 165) 166