| author | Stephen Paul Weber
<singpolyma@singpolyma.net> 2026-01-12 20:40:19 UTC |
| committer | Stephen Paul Weber
<singpolyma@singpolyma.net> 2026-01-12 20:40:19 UTC |
| parent | d2e482da145fbd5c83afe77cde7dae9ebc4ad9e8 |
| HaxeSwiftBridge.hx | +10 | -8 |
diff --git a/HaxeSwiftBridge.hx b/HaxeSwiftBridge.hx index cdc3739..6b225c8 100644 --- a/HaxeSwiftBridge.hx +++ b/HaxeSwiftBridge.hx @@ -469,20 +469,20 @@ class HaxeSwiftBridge { convertArgs(builder, targs, fld?.kind); builder.add(") "); switch tret { - case TType(_.get().name => "Promise", params): + case TAbstract(_.get().name => "Promise", params): builder.add("async "); default: } builder.add("-> "); switch tret { - case TType(_.get().name => "Promise", params): + case TAbstract(_.get().name => "Promise", params): builder.add(getSwiftType(params[0])); default: builder.add(getSwiftType(tret)); } builder.add(" {\n\t\t"); switch tret { - case TType(_.get().name => "Promise", params): + case TAbstract(_.get().name => "Promise", params): builder.add("return await withUnsafeContinuation { cont in\n\t\t"); builder.add("let __cont_ptr = UnsafeMutableRawPointer(Unmanaged.passRetained(cont as AnyObject).toOpaque())\n\t\t"); default: @@ -540,14 +540,15 @@ class HaxeSwiftBridge { ibuilder.add(" = Unmanaged<AnyObject>.fromOpaque(ctx!).takeUnretainedValue() as! "); ibuilder.add(getSwiftType(arg.t)); ibuilder.add("\n\t\t\t\t"); - final cbuilder = new hx.strings.StringBuilder("return " + arg.name); + final cbuilder = new hx.strings.StringBuilder(arg.name); cbuilder.add("("); for (i => farg in fargs) { if (i > 0) cbuilder.add(", "); cbuilder.add(castToSwift("a" + i, farg.t)); } cbuilder.add(")"); - ibuilder.add(castToSwift(cbuilder.toString(), fret, false, true)); + ibuilder.add("return "); + ibuilder.add(castToC(cbuilder.toString(), fret, false)); ibuilder.add("\n\t\t\t},\n\t\t\t__"); ibuilder.add(arg.name); ibuilder.add("_ptr"); @@ -565,13 +566,14 @@ class HaxeSwiftBridge { } } switch tret { - case TType(_.get().name => "Promise", params): - if (targs.length > 0) ibuilder.add(",\n\t\t\t"); + case TAbstract(_.get().name => "Promise", params): + ibuilder.add(",\n\t\t\t"); mkSwiftAsync(ibuilder, params[0]); finalTret = Context.resolveType(TPath({name: "Void", pack: []}), Context.currentPos()); default: } ibuilder.add("\n\t\t)"); + builder.add("return "); builder.add(castToSwift(ibuilder.toString(), finalTret, false, true)); for (arg in targs) { switch TypeTools.followWithAbstracts(Context.resolveType(Context.toComplexType(arg.t), Context.currentPos()), false) { @@ -581,7 +583,7 @@ class HaxeSwiftBridge { } } switch tret { - case TType(_.get().name => "Promise", params): + case TAbstract(_.get().name => "Promise", params): builder.add("\n\t\t}"); default: }