mirror of
https://github.com/rustwasm/wasm-bindgen.git
synced 2024-11-24 14:42:35 +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! |
||
---|---|---|
.. | ||
api.js | ||
api.rs | ||
char.js | ||
char.rs | ||
classes.js | ||
classes.rs | ||
closures.js | ||
closures.rs | ||
comments.js | ||
comments.rs | ||
duplicate_deps.js | ||
duplicate_deps.rs | ||
duplicates_a.js | ||
duplicates_b.js | ||
duplicates_c.js | ||
duplicates.rs | ||
enums.js | ||
enums.rs | ||
import_class.js | ||
import_class.rs | ||
imports.js | ||
imports.rs | ||
js_objects.js | ||
js_objects.rs | ||
jscast.js | ||
jscast.rs | ||
main.rs | ||
math.js | ||
math.rs | ||
node.js | ||
node.rs | ||
option.js | ||
option.rs | ||
optional_primitives.js | ||
optional_primitives.rs | ||
rethrow.js | ||
rethrow.rs | ||
simple.js | ||
simple.rs | ||
slice.js | ||
slice.rs | ||
structural.js | ||
structural.rs | ||
u64.js | ||
u64.rs | ||
validate_prt.js | ||
validate_prt.rs | ||
variadic.js | ||
variadic.rs |