BridgeJS: Support `@JS struct` on return type of async exported `@JS func`
Input:
@JS struct Foo {} @JS func getFoo() async -> Foo {}
Expected Output:
@JSFunction func 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) { return await getFoo() } #else fatalError("Only available on WebAssembly") #endif }
Actual Output:
@_expose(wasm, "bjs_getFoo") @_cdecl("bjs_getFoo") public func _bjs_getFoo() -> Int32 { #if arch(wasm32) let ret = JSPromise.async { return await getFoo().jsValue }.jsObject return ret.bridgeJSLowerReturn() #else fatalError("Only available on WebAssembly") #endif }