Skip to content

BridgeJS: Support @JS struct on return type of async exported @JS func #753

Description

@kateinoigakukun

https://swiftwasm.org/JavaScriptKit/PlayBridgeJS/?code=H4sIAAAAAAAAE6tWKi7PTCtRslJy8ApWKC4pKk0uUXDLz1eoro3JAwmlleYlK6Snlrjl52toKiQWV%2BYlK%2BjaQZUo6SillBQrWSkp1QIAGbFRnEkAAAA%3D&enc=gzip-b64

Input:

@JSstructFoo{}@JSfunc getFoo()async->Foo{}

Expected Output:

@JSFunctionfunc Promise_resolve_<mangled Foo>(_ promise:JSObject, _ value:Foo)throws(JSException)@JSFunction func Promise_reject(_ promise:JSObject, _ value:JSValue)throws(JSException)@_expose(wasm,"bjs_getFoo")@_cdecl("bjs_getFoo")
public func _bjs_getFoo()->Int32{#if arch(wasm32)return_bjs_makePromise(resolve:Promise_resolve_<mangled Foo> reject: Promise_reject){returnawaitgetFoo()}#elsefatalError("Only available on WebAssembly")#endif}

Actual Output:

@_expose(wasm,"bjs_getFoo")@_cdecl("bjs_getFoo")publicfunc _bjs_getFoo()->Int32{#if arch(wasm32)letret=JSPromise.async{returnawaitgetFoo().jsValue
}.jsObject
return ret.bridgeJSLowerReturn()#elsefatalError("Only available on WebAssembly")#endif}

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions