blob: b4c20edae8e0235abf7c2e19ebc7180fab08cf59 [file] [log] [blame]
// Copyright 2021 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --experimental-wasm-eh --experimental-wasm-type-reflection
load("wasm-module-builder.js");
let testcases = [
{types: {parameters:[]}, sig: kSig_v_v},
{types: {parameters:["i32"]}, sig: kSig_v_i},
{types: {parameters:["i64"]}, sig: kSig_v_l},
{types: {parameters:["f64", "f64", "i32"]}, sig: kSig_v_ddi},
{types: {parameters:["f32"]}, sig: kSig_v_f},
];
(function TestExport() {
let builder = new WasmModuleBuilder();
testcases.forEach(function(expected, i) {
let except = builder.addTag(expected.sig);
builder.addExportOfKind("ex" + i, kExternalTag, except);
});
let instance = builder.instantiate();
testcases.forEach(function(expected, i) {
assertEquals(instance.exports["ex" + i].type(), expected.types);
});
})();
(function TestImportExport() {
let builder = new WasmModuleBuilder();
let imports = {m: {}};
testcases.forEach(function(expected, i) {
let t = new WebAssembly.Tag(expected.types);
let index = builder.addImportedTag("m", "ex" + i, expected.sig);
builder.addExportOfKind("ex" + i, kExternalTag, index);
imports.m["ex" + i] = t;
});
let instance = builder.instantiate(imports);
testcases.forEach(function(expected, i) {
assertEquals(instance.exports["ex" + i].type(), expected.types);
})
})();