make objectArgs function arg fields optional

This commit is contained in:
2024-03-11 13:03:44 +01:00
parent 73aeb3fce6
commit de4f841d4d

View File

@@ -181,23 +181,29 @@ class FieldForms {
}; };
var additionalArgsName = 'additionalArgs${uuid.Uuid.v4().replace("-", "_")}'; var additionalArgsName = 'additionalArgs${uuid.Uuid.v4().replace("-", "_")}';
var isOpt = true; var objectIsOpt = true;
var fields:Array<Field> = []; var fields:Array<Field> = [];
for (argName => arg in argMap) { for (argName => arg in argMap) {
if (arg.opt == null || arg.opt == false) var type = arg.type;
isOpt = false; var meta = arg.meta;
if (meta == null) meta = [];
if (arg.opt == null || arg.opt == false) {
objectIsOpt = false;
} else {
meta.push({pos: wholeExp.macroPos(), name: ":optional"});
}
fields.push({ fields.push({
name: argName, name: argName,
pos: wholeExp.macroPos(), pos: wholeExp.macroPos(),
meta: arg.meta, meta: meta,
kind: FVar(arg.type, null) kind: FVar(type, null)
}); });
callExpArgs[argIndexMap[argName]] = macro $i{additionalArgsName}?.$argName; callExpArgs[argIndexMap[argName]] = macro $i{additionalArgsName}?.$argName;
} }
var additionalArgType = TAnonymous(fields); var additionalArgType = TAnonymous(fields);
newArgs.push({ newArgs.push({
name: additionalArgsName, name: additionalArgsName,
opt: isOpt, opt: objectIsOpt,
type: additionalArgType type: additionalArgType
}); });