Skip to content

Commit 1e652dd

Browse files
authored
Add a test for mutating externref globals (WebAssembly#104)
While `linking.wast` tests that we can link modules that are importing and exporting mutable `externref` globals, there were no tests exercising `global.{get,set}` on mutable `externref` globals.
1 parent 401c8eb commit 1e652dd

File tree

1 file changed

+6
-0
lines changed

1 file changed

+6
-0
lines changed

test/core/global.wast

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,18 @@
1212
(global $y (mut i64) (i64.const -15))
1313

1414
(global $r externref (ref.null extern))
15+
(global $mr (mut externref) (ref.null extern))
1516
(global funcref (ref.null func))
1617

1718
(func (export "get-a") (result i32) (global.get $a))
1819
(func (export "get-b") (result i64) (global.get $b))
1920
(func (export "get-r") (result externref) (global.get $r))
21+
(func (export "get-mr") (result externref) (global.get $mr))
2022
(func (export "get-x") (result i32) (global.get $x))
2123
(func (export "get-y") (result i64) (global.get $y))
2224
(func (export "set-x") (param i32) (global.set $x (local.get 0)))
2325
(func (export "set-y") (param i64) (global.set $y (local.get 0)))
26+
(func (export "set-mr") (param externref) (global.set $mr (local.get 0)))
2427

2528
(func (export "get-1") (result f32) (global.get 1))
2629
(func (export "get-2") (result f64) (global.get 2))
@@ -185,6 +188,7 @@
185188
(assert_return (invoke "get-a") (i32.const -2))
186189
(assert_return (invoke "get-b") (i64.const -5))
187190
(assert_return (invoke "get-r") (ref.null extern))
191+
(assert_return (invoke "get-mr") (ref.null extern))
188192
(assert_return (invoke "get-x") (i32.const -12))
189193
(assert_return (invoke "get-y") (i64.const -15))
190194

@@ -197,11 +201,13 @@
197201
(assert_return (invoke "set-y" (i64.const 7)))
198202
(assert_return (invoke "set-5" (f32.const 8)))
199203
(assert_return (invoke "set-6" (f64.const 9)))
204+
(assert_return (invoke "set-mr" (ref.extern 10)))
200205

201206
(assert_return (invoke "get-x") (i32.const 6))
202207
(assert_return (invoke "get-y") (i64.const 7))
203208
(assert_return (invoke "get-5") (f32.const 8))
204209
(assert_return (invoke "get-6") (f64.const 9))
210+
(assert_return (invoke "get-mr") (ref.extern 10))
205211

206212
(assert_return (invoke "as-select-first") (i32.const 6))
207213
(assert_return (invoke "as-select-mid") (i32.const 2))

0 commit comments

Comments
 (0)