Pauan 3f4acc453b
Dramatically improving the build time of web-sys (#2012)
* Pre-generating web-sys

* Fixing build errors

* Minor refactor for the unit tests

* Changing to generate #[wasm_bindgen} annotations

* Fixing code generation

* Adding in main bin to wasm-bindgen-webidl

* Fixing more problems

* Adding in support for unstable APIs

* Fixing bug with code generation

* More code generation fixes

* Improving the webidl program

* Removing unnecessary cfg from the generated code

* Splitting doc comments onto separate lines

* Improving the generation for unstable features

* Adding in support for string values in enums

* Now runs rustfmt on the mod.rs file

* Fixing codegen for constructors

* Fixing webidl-tests

* Fixing build errors

* Another fix for build errors

* Renaming typescript_name to typescript_type

* Adding in docs for typescript_type

* Adding in CI script to verify that web-sys is up to date

* Fixing CI script

* Fixing CI script

* Don't suppress git diff output

* Remove duplicate definitions of `Location`

Looks to be a preexisting bug in wasm-bindgen?

* Regenerate webidl

* Try to get the git diff command right

* Handle named constructors in WebIDL

* Remove stray rustfmt.toml

* Add back NamedConstructorBar definition in tests

* Run stable rustfmt over everything

* Don't run Cargo in a build script

Instead refactor things so webidl-tests can use the Rust-code-generation
as a library in a build script. Also fixes `cargo fmt` in the
repository.

* Fixup generated code

* Running web-sys checks on stable

* Improving the code generation a little

* Running rustfmt

Co-authored-by: Alex Crichton <alex@alexcrichton.com>
2020-03-02 17:39:36 -06:00

64 lines
1.9 KiB
JavaScript

const wasm = require('wasm-bindgen-test.js');
const assert = require('assert');
exports.assert_null = x => {
assert.strictEqual(x, null);
};
exports.js_works = () => {
assert.strictEqual(wasm.api_foo(), 'foo');
assert.strictEqual(wasm.api_bar('a'), 'a');
assert.strictEqual(wasm.api_baz(), 1);
wasm.api_baz2(2, 'a');
assert.strictEqual(wasm.api_js_null(), null);
assert.strictEqual(wasm.api_js_undefined(), undefined);
wasm.api_test_is_null_undefined(null, undefined, 1.0);
assert.strictEqual(wasm.api_get_true(), true);
assert.strictEqual(wasm.api_get_false(), false);
wasm.api_test_bool(true, false, 1.0);
assert.strictEqual(typeof(wasm.api_mk_symbol()), 'symbol');
assert.strictEqual(typeof(wasm.api_mk_symbol2('a')), 'symbol');
assert.strictEqual(Symbol.keyFor(wasm.api_mk_symbol()), undefined);
assert.strictEqual(Symbol.keyFor(wasm.api_mk_symbol2('b')), undefined);
wasm.api_assert_symbols(Symbol(), 'a');
wasm.api_acquire_string('foo', null);
assert.strictEqual(wasm.api_acquire_string2(''), '');
assert.strictEqual(wasm.api_acquire_string2('a'), 'a');
};
exports.js_eq_works = () => {
assert.strictEqual(wasm.eq_test('a', 'a'), true);
assert.strictEqual(wasm.eq_test('a', 'b'), false);
assert.strictEqual(wasm.eq_test(NaN, NaN), false);
assert.strictEqual(wasm.eq_test({a: 'a'}, {a: 'a'}), false);
assert.strictEqual(wasm.eq_test1(NaN), false);
let x = {a: 'a'};
assert.strictEqual(wasm.eq_test(x, x), true);
assert.strictEqual(wasm.eq_test1(x), true);
};
exports.debug_values = () => ([
null,
undefined,
0,
1.0,
true,
[1,2,3],
"string",
{test: "object"},
[1.0, [2.0, 3.0]],
() => (null),
new Set(),
]);
exports.assert_function_table = (x, i) => {
const rawWasm = require('wasm-bindgen-test.js').__wasm;
assert.ok(x instanceof WebAssembly.Table);
assert.strictEqual(x.get(i), rawWasm.function_table_lookup);
};