git » sdk » commit 0bc9111

Support optional arguments in swift

author Stephen Paul Weber
2025-05-12 13:17:00 UTC
committer Stephen Paul Weber
2025-05-12 13:36:16 UTC
parent 35872f4f9bcb2fc99667327de98b83e85ab8d438

Support optional arguments in swift

HaxeSwiftBridge.hx +12 -1

diff --git a/HaxeSwiftBridge.hx b/HaxeSwiftBridge.hx
index 5de16d4..8d5cec6 100644
--- a/HaxeSwiftBridge.hx
+++ b/HaxeSwiftBridge.hx
@@ -177,7 +177,7 @@ class HaxeSwiftBridge {
 			builder.add(": ");
 			builder.add(getSwiftType(arg.t, true));
 			if (arg.opt) {
-				Context.fatalError("default? " + arg.name, Context.currentPos());
+				builder.add(" = nil");
 			}
 		}
 	}
@@ -417,6 +417,17 @@ class HaxeSwiftBridge {
 								default:
 								}
 							}
+							for (arg in targs) {
+								final allowNull = switch arg.t {
+								case TAbstract(_.get().name => "Null", [param]): true;
+								default: false;
+								};
+								switch TypeTools.followWithAbstracts(Context.resolveType(Context.toComplexType(arg.t), Context.currentPos()), false) {
+								case TInst(_.get().name => "Array", [TInst(_.get().name => "String", _)]):
+								builder.add("with" + (allowNull ? "Optional" : "") + "ArrayOfCStrings(" + arg.name + ") { __" + arg.name + " in ");
+								default:
+								}
+							}
 							final ibuilder = new hx.strings.StringBuilder("c_");
 							ibuilder.add(libName);
 							ibuilder.add(".");