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
..
2019-09-20 13:50:00 -05:00
2020-01-07 13:48:25 -06:00

wasm-bindgen-macro

Implementation of the #[wasm_bindgen] attribute. See the wasm-bindgen documentation for more information about what this macro does.

Testing

Testing of this macro is done through "ui tests" in the ui-tests subdirectory of this crate. Each Rust file in this folder is compiled with the wasm_bindgen crate, and the *.stderr file sitting next to it is the asserted output of the compiler. If the output matches, the test passes, and if the output doesn't match the test fails. Note that it is also considered a failure if a test actually compiles successfully.

To add a test:

  • Create ui-tests/my-awesome-test.rs
  • Write an invalid #[wasm_bindgen] invocation, testing the error you're generating
  • Execute cargo test -p ui-tests, the test will fail
  • From within the ui-tests folder, execute ./update-all-references.sh. This should create a my-awesome-test.stderr file.
  • Inspect my-awesome-test.stderr to make sure it looks ok
  • Rerun cargo test -p ui-tests and your tests should pass!

Testing here is a work in progress, see #601 for more information.