make objectArgs function arg fields optional
This commit is contained in:
@@ -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
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user