summaryrefslogtreecommitdiff
path: root/test/binaryen.js
diff options
context:
space:
mode:
authorDaniel Wirtz <dcode@dcode.io>2020-09-18 17:08:58 +0200
committerGitHub <noreply@github.com>2020-09-18 17:08:58 +0200
commit1a928bc3ff4b511e81b3f93db8aea872e88abaaf (patch)
treec36dc3594abcd32e61f1e0a63d85339c266db788 /test/binaryen.js
parent2548f04c198594a21e4144261e8cfea5de56308a (diff)
downloadbinaryen-1a928bc3ff4b511e81b3f93db8aea872e88abaaf.tar.gz
binaryen-1a928bc3ff4b511e81b3f93db8aea872e88abaaf.tar.bz2
binaryen-1a928bc3ff4b511e81b3f93db8aea872e88abaaf.zip
Update JS API function wrapper (#3128)
Updates the JS API `Function` wrapper introduced in #3115 with bindings for more C API functions. Also adds additional comments to describe the inner workings of wrappers in more detail.
Diffstat (limited to 'test/binaryen.js')
-rw-r--r--test/binaryen.js/expressions.js1
-rw-r--r--test/binaryen.js/functions.js41
-rw-r--r--test/binaryen.js/functions.js.txt14
3 files changed, 55 insertions, 1 deletions
diff --git a/test/binaryen.js/expressions.js b/test/binaryen.js/expressions.js
index a9a0ab982..b9a9a24fb 100644
--- a/test/binaryen.js/expressions.js
+++ b/test/binaryen.js/expressions.js
@@ -17,7 +17,6 @@ console.log("# Expression");
assert(typeof binaryen.Block.getName === "function"); // own
assert(typeof theExpression.getId === "function"); // proto
assert(typeof theExpression.getName === "function"); // own
- assert(theExpression.expr === 42);
assert((theExpression | 0) === 42); // via valueOf
})();
diff --git a/test/binaryen.js/functions.js b/test/binaryen.js/functions.js
index b50632dfa..84f59350b 100644
--- a/test/binaryen.js/functions.js
+++ b/test/binaryen.js/functions.js
@@ -32,3 +32,44 @@ module.removeFunction("a-function");
assert(module.validate());
console.log(module.emitText());
+
+// Test wrapper
+
+func = module.addFunction("b-function",
+ binaryen.createType([binaryen.i32, binaryen.i32]),
+ binaryen.i32,
+ [ binaryen.i32, binaryen.f64 ],
+ module.local.tee(2,
+ module.i32.add(
+ module.local.get(0, binaryen.i32),
+ module.local.get(1, binaryen.i32)
+ ),
+ binaryen.i32
+ )
+);
+binaryen.Function.setLocalName(func, 0, "a");
+binaryen.Function.setLocalName(func, 1, "b");
+binaryen.Function.setLocalName(func, 2, "ret");
+binaryen.Function.setLocalName(func, 3, "unused");
+
+var theFunc = binaryen.Function(func);
+assert(theFunc.name === "b-function");
+assert(theFunc.params === binaryen.createType([binaryen.i32, binaryen.i32]));
+assert(theFunc.results === binaryen.i32);
+assert(theFunc.numVars === 2);
+assert(theFunc.getVar(0) === binaryen.i32);
+assert(theFunc.getVar(1) === binaryen.f64);
+assert(theFunc.numLocals === 4);
+assert(theFunc.getLocalName(0) === "a");
+assert(theFunc.getLocalName(1) === "b");
+assert(theFunc.getLocalName(2) === "ret");
+assert(theFunc.getLocalName(3) === "unused");
+theFunc.setLocalName(2, "res");
+assert(theFunc.getLocalName(2) === "res");
+assert((theFunc | 0) === func);
+
+assert(module.validate());
+
+console.log(module.emitText());
+
+module.dispose();
diff --git a/test/binaryen.js/functions.js.txt b/test/binaryen.js/functions.js.txt
index 8dd90b3a8..bf6337e0e 100644
--- a/test/binaryen.js/functions.js.txt
+++ b/test/binaryen.js/functions.js.txt
@@ -6,3 +6,17 @@ getExpressionInfo(body)={"id":14,"value":3}
(module
)
+(module
+ (type $i32_i32_=>_i32 (func (param i32 i32) (result i32)))
+ (func $b-function (param $a i32) (param $b i32) (result i32)
+ (local $res i32)
+ (local $unused f64)
+ (local.tee $res
+ (i32.add
+ (local.get $a)
+ (local.get $b)
+ )
+ )
+ )
+)
+