nested_array_elem_any.wat 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. (module
  2. (type $array_type (array (mut anyref)))
  3. (global $g_array
  4. (mut (ref $array_type))
  5. (array.new_fixed $array_type 2
  6. (ref.i31 (i32.const 10))
  7. (array.new_fixed $array_type 2
  8. (ref.i31 (i32.const 20))
  9. (array.new_default $array_type (i32.const 2))
  10. )
  11. )
  12. )
  13. ;; assert_return(invoke "get_elem0"), 10)
  14. (func (export "get_elem0") (result i32)
  15. (i31.get_s (ref.cast i31ref (array.get $array_type (global.get $g_array) (i32.const 0))))
  16. )
  17. ;; assert_return(invoke "get_elem1"), array.new_fixed $array_type ...)
  18. (func (export "get_elem1") (result anyref)
  19. (array.get $array_type (global.get $g_array) (i32.const 1))
  20. )
  21. ;; assert_return(invoke "get_elem1_elem0"), 20)
  22. (func (export "get_elem1_elem0") (result i32)
  23. (i31.get_s (ref.cast i31ref
  24. (array.get $array_type
  25. (ref.cast (ref $array_type)
  26. (array.get $array_type (global.get $g_array) (i32.const 1))
  27. )
  28. (i32.const 0)
  29. )
  30. ))
  31. )
  32. ;; assert_return(invoke "get_elem1_elem1"), array.new_default $array_type ...)
  33. (func (export "get_elem1_elem1") (result anyref)
  34. (array.get $array_type
  35. (ref.cast (ref $array_type)
  36. (array.get $array_type (global.get $g_array) (i32.const 1))
  37. )
  38. (i32.const 1)
  39. )
  40. )
  41. ;; assert_return(invoke "get_elem1_elem1_elem0"), 0)
  42. (func (export "get_elem1_elem1_elem0") (result i32)
  43. (i31.get_s (ref.cast i31ref
  44. (array.get $array_type
  45. (ref.cast (ref $array_type)
  46. (array.get $array_type
  47. (ref.cast (ref $array_type)
  48. (array.get $array_type (global.get $g_array) (i32.const 1))
  49. )
  50. (i32.const 1)
  51. )
  52. )
  53. (i32.const 0)
  54. )
  55. ))
  56. )
  57. )