wabt
wabt copied to clipboard
Wrong type error when validating globals with gc proposal features
In the GC proposal, it allows using previous global value as an initializer expression.
Therefore, following wasm module is a valid module in the GC proposal.
;; global.wat
(module (global i32 (i32.const 0)) (global i32 (global.get 0)))
I run the module with the reference interpreter in the gc proposal, and it passes the validation.
$ gc/interperter/wasm global.wat
// terminates normally
As the reference interpreter also includes function references and tail call proposals, I enable all of them and run wat2wasm, but it raises type error.
$ wabt/bin/wat2wasm --enable-function-references --enable-tail-call --enable-gc global.wat
global.wat:1:60: error: initializer expression can only reference an imported global
(module (global i32 (i32.const 0)) (global i32 (global.get 0)))
^