wasm-micro-runtime/tests/unit/gc/wasm-apps/nested_array_elem_any.wat
2026-03-03 13:05:44 +08:00

63 lines
1.7 KiB
Plaintext

(module
(type $array_type (array (mut anyref)))
(global $g_array
(mut (ref $array_type))
(array.new_fixed $array_type 2
(ref.i31 (i32.const 10))
(array.new_fixed $array_type 2
(ref.i31 (i32.const 20))
(array.new_default $array_type (i32.const 2))
)
)
)
;; assert_return(invoke "get_elem0"), 10)
(func (export "get_elem0") (result i32)
(i31.get_s (ref.cast i31ref (array.get $array_type (global.get $g_array) (i32.const 0))))
)
;; assert_return(invoke "get_elem1"), array.new_fixed $array_type ...)
(func (export "get_elem1") (result anyref)
(array.get $array_type (global.get $g_array) (i32.const 1))
)
;; assert_return(invoke "get_elem1_elem0"), 20)
(func (export "get_elem1_elem0") (result i32)
(i31.get_s (ref.cast i31ref
(array.get $array_type
(ref.cast (ref $array_type)
(array.get $array_type (global.get $g_array) (i32.const 1))
)
(i32.const 0)
)
))
)
;; assert_return(invoke "get_elem1_elem1"), array.new_default $array_type ...)
(func (export "get_elem1_elem1") (result anyref)
(array.get $array_type
(ref.cast (ref $array_type)
(array.get $array_type (global.get $g_array) (i32.const 1))
)
(i32.const 1)
)
)
;; assert_return(invoke "get_elem1_elem1_elem0"), 0)
(func (export "get_elem1_elem1_elem0") (result i32)
(i31.get_s (ref.cast i31ref
(array.get $array_type
(ref.cast (ref $array_type)
(array.get $array_type
(ref.cast (ref $array_type)
(array.get $array_type (global.get $g_array) (i32.const 1))
)
(i32.const 1)
)
)
(i32.const 0)
)
))
)
)