| const assert = require('assert'); |
| const wasm = require('wasm-bindgen-test'); |
| |
| exports.works_call = a => { |
| a(); |
| }; |
| |
| exports.works_thread = a => a(2); |
| |
| let CANNOT_REUSE_CACHE = null; |
| |
| exports.cannot_reuse_call = a => { |
| CANNOT_REUSE_CACHE = a; |
| }; |
| |
| exports.cannot_reuse_call_again = () => { |
| CANNOT_REUSE_CACHE(); |
| }; |
| |
| exports.long_lived_call1 = a => { |
| a(); |
| }; |
| |
| exports.long_lived_call2 = a => a(2); |
| |
| exports.many_arity_call1 = a => { |
| a(); |
| }; |
| exports.many_arity_call2 = a => { |
| a(1); |
| }; |
| exports.many_arity_call3 = a => { |
| a(1, 2); |
| }; |
| exports.many_arity_call4 = a => { |
| a(1, 2, 3); |
| }; |
| exports.many_arity_call5 = a => { |
| a(1, 2, 3, 4); |
| }; |
| exports.many_arity_call6 = a => { |
| a(1, 2, 3, 4, 5); |
| }; |
| exports.many_arity_call7 = a => { |
| a(1, 2, 3, 4, 5, 6); |
| }; |
| exports.many_arity_call8 = a => { |
| a(1, 2, 3, 4, 5, 6, 7); |
| }; |
| exports.many_arity_call9 = a => { |
| a(1, 2, 3, 4, 5, 6, 7, 8); |
| }; |
| |
| let LONG_LIVED_DROPPING_CACHE = null; |
| |
| exports.long_lived_dropping_cache = a => { |
| LONG_LIVED_DROPPING_CACHE = a; |
| }; |
| exports.long_lived_dropping_call = () => { |
| LONG_LIVED_DROPPING_CACHE(); |
| }; |
| |
| let LONG_FNMUT_RECURSIVE_CACHE = null; |
| |
| exports.long_fnmut_recursive_cache = a => { |
| LONG_FNMUT_RECURSIVE_CACHE = a; |
| }; |
| exports.long_fnmut_recursive_call = () => { |
| LONG_FNMUT_RECURSIVE_CACHE(); |
| }; |
| |
| exports.fnmut_call = a => { |
| a(); |
| }; |
| |
| exports.fnmut_thread = a => a(2); |
| |
| let FNMUT_BAD_F = null; |
| |
| exports.fnmut_bad_call = a => { |
| FNMUT_BAD_F = a; |
| a(); |
| }; |
| |
| exports.fnmut_bad_again = x => { |
| if (x) { |
| FNMUT_BAD_F(); |
| } |
| }; |
| |
| exports.string_arguments_call = a => { |
| a('foo'); |
| }; |
| |
| exports.string_ret_call = a => { |
| assert.strictEqual(a('foo'), 'foobar'); |
| }; |
| |
| let DROP_DURING_CALL = null; |
| exports.drop_during_call_save = f => { |
| DROP_DURING_CALL = f; |
| }; |
| exports.drop_during_call_call = () => DROP_DURING_CALL(); |
| |
| exports.js_test_closure_returner = () => { |
| wasm.closure_returner().someKey(); |
| }; |
| |
| exports.calling_it_throws = a => { |
| try { |
| a(); |
| return false; |
| } catch(_) { |
| return true; |
| } |
| }; |
| |
| exports.call_val = f => f(); |
| |
| exports.pass_reference_first_arg_twice = (a, b, c) => { |
| b(a); |
| c(a); |
| a.free(); |
| }; |
| |
| exports.call_destroyed = f => { |
| assert.throws(f, /invoked recursively or destroyed/); |
| }; |
| |
| let FORGOTTEN_CLOSURE = null; |
| |
| exports.js_store_forgotten_closure = f => { |
| FORGOTTEN_CLOSURE = f; |
| }; |
| |
| exports.js_call_forgotten_closure = () => { |
| FORGOTTEN_CLOSURE(); |
| }; |