mirror of
https://github.com/rustwasm/wasm-bindgen.git
synced 2024-12-15 04:23:12 +03:00
88618116ac
This commit adds support to attach `#[wasm_bindgen]` on an `async fn` which will change the return value into a `Promise` in JS. This in theory has the exact same semantics as an `async` function in JS where you call it with all the arguments, nothing happens and you get a promise back, and then later the promise actually resolves. This commit also adds a helper trait, `IntoJsResult`, to allow `async` functions with multiple kinds of return values instead of requiring everything to be `Result<JsValue, JsValue>`. |
||
---|---|---|
.. | ||
src | ||
tests | ||
ui-tests | ||
Cargo.toml | ||
LICENSE-APACHE | ||
LICENSE-MIT | ||
README.md |
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 amy-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.