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