1;;! reference_types = true 2 3(module 4 (table $t3 2 funcref) 5 (elem (table $t3) (i32.const 1) func $dummy) 6 (func $dummy) 7 8 (func $f3 (export "get-funcref") (param $i i32) (result funcref) 9 (table.get $t3 (local.get $i)) 10 ) 11 12 (func (export "set-funcref") (param $i i32) (param $r funcref) 13 (table.set $t3 (local.get $i) (local.get $r)) 14 ) 15 (func (export "set-funcref-from") (param $i i32) (param $j i32) 16 (table.set $t3 (local.get $i) (table.get $t3 (local.get $j))) 17 ) 18) 19 20(assert_return (invoke "get-funcref" (i32.const 0)) (ref.null func)) 21(assert_return (invoke "set-funcref-from" (i32.const 0) (i32.const 1))) 22(assert_return (invoke "set-funcref" (i32.const 0) (ref.null func))) 23(assert_return (invoke "get-funcref" (i32.const 0)) (ref.null func)) 24 25(assert_trap (invoke "set-funcref" (i32.const 3) (ref.null func)) "out of bounds table access") 26(assert_trap (invoke "set-funcref" (i32.const -1) (ref.null func)) "out of bounds table access") 27 28(assert_trap (invoke "set-funcref-from" (i32.const 3) (i32.const 1)) "out of bounds table access") 29(assert_trap (invoke "set-funcref-from" (i32.const -1) (i32.const 1)) "out of bounds table access") 30