mirror of
https://github.com/fluencelabs/wasm-bindgen
synced 2025-06-14 05:21:24 +00:00
Store richer adapter types, don't use instructions for TypeScript (#1945)
This commit updates how TypeScript signature are generated from adapters in wasm-bindgen. A richer set of `AdapterType` types are now stored which record information about optional types and such. These direct `AdapterType` values are then used to calculate the TypeScript signature, rather than following the instructions in an adapter function (which only works anyway for wasm-bindgen generated adapters). This should be more robust since it reads the actual true signature of the adapter to generate the TypeScript signature, rather than attempting to ad-hoc-ly infer it from the various instructions, which was already broken. A number of refactorings were involved here, but the main pieces are: * The `AdapterType` type is a bit more rich now to describe more Rust-like types. * The `TypescriptArg` structure is now gone and instead return values are directly inferred from type signatures of adapters. * The `typescript_{required,optional}` methods are no longer needed. * The return of `JsBuilder::process` was enhanced to return more values, rather than storing some return values on the structure itself. Closes #1926
This commit is contained in:
@ -13,4 +13,8 @@ impl A {
|
||||
pub fn other() {}
|
||||
|
||||
pub fn foo(&self) {}
|
||||
|
||||
pub fn ret_bool(&self) -> bool { true }
|
||||
pub fn take_bool(&self, _: bool) {}
|
||||
pub fn take_many(&self, _: bool, _: f64, _: u32) {}
|
||||
}
|
||||
|
@ -4,3 +4,6 @@ const a = new wbg.A();
|
||||
wbg.A.other();
|
||||
a.foo();
|
||||
a.free();
|
||||
const b: boolean = a.ret_bool()
|
||||
a.take_bool(b);
|
||||
a.take_many(b, 1, 2);
|
||||
|
Reference in New Issue
Block a user