mirror of
https://github.com/rustwasm/wasm-bindgen.git
synced 2024-12-26 03:24:13 +03:00
3f85d7db9f
This commit removes the need for an injected `ConstructorToken` type and also cleans up the story we have for generating constructors a bit. After this commit a `constructor()` is omitted entirely if we're in non-debug mode and there's no actual listed constructor. Additionally we don't deal with splat arguments and rerouting constructors, Nick was kind enough to enlighten me about `Object.create` which is creating an instance without running the constructor! Instances of an exported type are now created through one of two methods: * If `#[wasm_bindgen(constructor)]` is present, then a `constructor` is generated with the appropriate signature. If a constructor is not present and we're in debug mode, a throwing constructor is generated. If we're in release mode and there's no constructor, no constructor is generated. * Otherwise if a binding returns an instance of a type (or otherwise needs to manfuacture an instance, then it will cause an internal `__wrap` function to be generated. This function will use `Object.create` to create an instance without running the constructor. This should ideally clean up our generated JS for classes quite a bit, making it much more lean-and-mean! |
||
---|---|---|
.. | ||
crates | ||
no-std | ||
wasm | ||
headless.rs | ||
non_wasm.rs | ||
std-crate-no-std-dep.rs |