Skip to content

Commit

Permalink
Merge pull request #7419 from webpack/bugfix/wasm-multi-direct
Browse files Browse the repository at this point in the history
fix a code generation bug and add test cases
  • Loading branch information
sokra committed May 28, 2018
2 parents 1f2584e + e367b93 commit 67fa81f
Show file tree
Hide file tree
Showing 10 changed files with 65 additions and 1 deletion.
2 changes: 1 addition & 1 deletion lib/wasm/WasmMainTemplatePlugin.js
Expand Up @@ -96,7 +96,7 @@ function generateImportObject(module) {
).join(", ");
const variables = Array.from(
waitForInstances.keys(),
(name, i) => `${name} = array[${i}];`
(name, i) => `${name} = array[${i}]`
).join(", ");
return Template.asString([
`${JSON.stringify(module.id)}: function() {`,
Expand Down
6 changes: 6 additions & 0 deletions test/cases/wasm/imports-many-direct/index.js
@@ -0,0 +1,6 @@
it("should allow to run a WebAssembly module with many direct wasm dependencies", function() {
return import("./wasm.wat").then(function(wasm) {
const result = wasm.testI64();
expect(result).toEqual(42);
});
});
7 changes: 7 additions & 0 deletions test/cases/wasm/imports-many-direct/other1.wat
@@ -0,0 +1,7 @@
(module
(type $t0 (func (param i64) (result i64)))
(func $getI64 (type $t0) (param $p0 i64) (result i64)
get_local $p0
i64.const 20
i64.add)
(export "getI64" (func $getI64)))
7 changes: 7 additions & 0 deletions test/cases/wasm/imports-many-direct/other2.wat
@@ -0,0 +1,7 @@
(module
(type $t0 (func (param i64) (result i64)))
(func $getI64 (type $t0) (param $p0 i64) (result i64)
get_local $p0
i64.const 22
i64.add)
(export "getI64" (func $getI64)))
5 changes: 5 additions & 0 deletions test/cases/wasm/imports-many-direct/test.filter.js
@@ -0,0 +1,5 @@
var supportsWebAssembly = require("../../../helpers/supportsWebAssembly");

module.exports = function(config) {
return supportsWebAssembly();
};
13 changes: 13 additions & 0 deletions test/cases/wasm/imports-many-direct/wasm.wat
@@ -0,0 +1,13 @@
(module
(type $t0 (func (param i64) (result i64)))
(type $t1 (func (result i32)))
(import "./other1.wat" "getI64" (func $getI641 (type $t0)))
(import "./other2.wat" "getI64" (func $getI642 (type $t0)))
(func $testI64 (type $t1) (result i32)
i64.const 1152921504606846976
call $getI641
call $getI642
i64.const 1152921504606846976
i64.sub
i32.wrap/i64)
(export "testI64" (func $testI64)))
6 changes: 6 additions & 0 deletions test/cases/wasm/unused-export/index.js
@@ -0,0 +1,6 @@
it("should allow wasm with unused exports", function() {
return import("./module").then(function(module) {
const result = module.run();
expect(result).toEqual(42);
});
});
5 changes: 5 additions & 0 deletions test/cases/wasm/unused-export/module.js
@@ -0,0 +1,5 @@
import { getNumber } from "./wasm.wat";

export function run() {
return getNumber();
}
5 changes: 5 additions & 0 deletions test/cases/wasm/unused-export/test.filter.js
@@ -0,0 +1,5 @@
var supportsWebAssembly = require("../../../helpers/supportsWebAssembly");

module.exports = function(config) {
return supportsWebAssembly();
};
10 changes: 10 additions & 0 deletions test/cases/wasm/unused-export/wasm.wat
@@ -0,0 +1,10 @@
(module
(type $t0 (func (param i32 i32) (result i32)))
(type $t1 (func (result i32)))
(func $add (export "add") (type $t0) (param $p0 i32) (param $p1 i32) (result i32)
(i32.add
(get_local $p0)
(get_local $p1)))
(func $getNumber (export "getNumber") (type $t1) (result i32)
(i32.const 42)))

0 comments on commit 67fa81f

Please sign in to comment.