Source code

Revision control

Copy as Markdown

Other Tools

// |jit-test| skip-if: !wasmComponentsEnabled()
// ----------------------------------------------------------------------------
// Sanity check of type bounds
wasmValidateText(`(component
(import "a" (type (sub resource)))
(import "b" (type (eq 0)))
(import "c" (type (eq 0)))
(import "d" (type (eq 1)))
)`);
wasmFailValidateText(`(component
(import "a" (type (eq 0)))
)`, /invalid type index/);
// ----------------------------------------------------------------------------
// Imported function types (including type bounds)
wasmValidateText(`(component
(type $f (func (param "x" s32) (param "y" s32)))
(import "ft" (type $f2 (eq $f)))
(import "foo" (func $f2))
)`);
wasmValidateText(`(component
(type $f (func (param "x" s32) (param "y" s32)))
(import "ft" (type $f2 (eq $f)))
(core module
(func (export "foo") (param i32 i32))
)
(core instance (instantiate 0))
(alias core export 0 "foo" (core func $foo))
(func $Foo (type $f2) (canon lift (core func $foo)))
)`);
// ----------------------------------------------------------------------------
// Imported primitive / value types (including type bounds)
wasmValidateText(`(component
(type $s_internal s32)
(type $r_internal (record (field "s" $s_internal)))
(import "s" (type $s2 (eq $s_internal)))
(import "r" (type $r2 (eq $r_internal)))
(export $s "s" (type $s_internal))
(export $r "r" (type $r_internal))
(core module
(func (export "foo") (param i32 i32 i32 i32))
)
(core instance (instantiate 0))
(alias core export 0 "foo" (core func $foo))
(type $f (func
(param "n" $s) (param "r" $r)
(param "n2" $s2) (param "r2" $r2)
))
(func (export "foo") (type $f) (canon lift (core func $foo)))
)`);