Source code

Revision control

Copy as Markdown

Other Tools

// |jit-test| skip-if: !wasmComponentsEnabled()
// We use imported functions as our oracle for strongly-uniqueness, as only
// functions allow the full range of plain names.
function assertAllStronglyUnique(names) {
wasmValidateText(`(component
${names.map(n => `(import "${n}" (func))`).join("\n")}
)`);
}
function assertNotStronglyUnique(okNames, badName) {
assertAllStronglyUnique(okNames);
wasmFailValidateText(`(component
${okNames.map(n => `(import "${n}" (func))`).join("\n")}
(import "${badName}" (func))
)`, /not strongly-unique/);
}
const specOkExamples = [
"foo", "foo-bar",
"[constructor]foo",
"[method]foo.bar", "[method]foo.baz",
];
assertAllStronglyUnique(specOkExamples);
assertNotStronglyUnique(specOkExamples, "foo");
assertNotStronglyUnique(specOkExamples, "foo-BAR");
assertNotStronglyUnique(specOkExamples, "[constructor]foo-BAR");
assertNotStronglyUnique(specOkExamples, "[method]foo.foo");
assertNotStronglyUnique(specOkExamples, "[method]foo.BAR");