Source code
Revision control
Copy as Markdown
Other Tools
// |jit-test| skip-if: !wasmComponentsEnabled()
// Basic instantiation.
wasmValidateText(`
(component
(core module)
(core instance (instantiate 0))
)
`);
// Invalid module index.
wasmFailValidateText(`
(component
(core module)
(core instance (instantiate 1))
)
`, /invalid core module index 1/);
wasmFailValidateText(`
(component
(core module)
(core instance (instantiate 99))
)
`, /invalid core module index 99/);
// Multiple instances from different modules.
wasmValidateText(`
(component
(core module)
(core module)
(core instance (instantiate 0))
(core instance (instantiate 1))
)
`);
// Multiple instances from the same module.
wasmValidateText(`
(component
(core module)
(core instance (instantiate 0))
(core instance (instantiate 0))
)
`);
// Core module with actual code, instantiated.
wasmValidateText(`
(component
(core module
(func (export "add") (param i32 i32) (result i32)
(i32.add (local.get 0) (local.get 1))
)
)
(core instance (instantiate 0))
)
`);
// Instantiation with import args: a module that imports, satisfied by another
// instance's exports.
wasmValidateText(`
(component
(core module
(func (export "f") (result i32) (i32.const 42))
)
(core module
(import "imp" "f" (func (result i32)))
)
(core instance (instantiate 0))
(core instance (instantiate 1 (with "imp" (instance 0))))
)
`);
// Invalid instance index in instantiation args.
wasmFailValidateText(`
(component
(core module
(import "imp" "f" (func))
)
(core instance (instantiate 0 (with "imp" (instance 99))))
)
`, /invalid core instance index/);
// Instantiation arg name doesn't match any import on the module.
// TODO(wasm-cm): Import name validation not yet implemented.
if (false) {
wasmFailValidateText(`
(component
(core module
(func (export "f") (result i32) (i32.const 42))
)
(core module
(import "imp" "f" (func (result i32)))
)
(core instance (instantiate 0))
(core instance (instantiate 1 (with "nonexistent" (instance 0))))
)
`, /does not import/);
}
// Instance's exports don't satisfy the module's imports.
// TODO(wasm-cm): Import satisfaction validation not yet implemented.
if (false) {
wasmFailValidateText(`
(component
(core module
(global (export "g") i32 (i32.const 0))
)
(core module
(import "imp" "f" (func (result i32)))
)
(core instance (instantiate 0))
(core instance (instantiate 1 (with "imp" (instance 0))))
)
`, /does not satisfy/);
}
// Inline exports.
// TODO(wasm-cm): Inline exports not yet implemented.
wasmFailValidateText(`
(component
(core module
(func (export "f"))
)
(core instance (instantiate 0))
(alias core export 0 "f" (core func))
(core instance (export "f" (func 0)))
)
`, /inline exports are not yet supported/);