in lib/generator.js [2203:2258]
visitArgs(args, level, env, expected, argHasThrowFunc) {
this.emit('(');
for (let i = 0; i < args.length; i++) {
const expr = args[i];
if(expr.yieldArg) {
this.visitYieldArgs(expr.ast, level, env);
} else if (expr.needCast) {
this.emit('dara.ToMap(');
if (argHasThrowFunc && argHasThrowFunc.get(i)) {
this.emit(argHasThrowFunc.get(i));
} else {
this.visitExpr(expr, level, env);
}
this.emit(')');
} else {
if ((expr.expectedType.name === 'number' || expr.expectedType.name === 'integer') && expr.inferred.name === 'int32') {
this.emit(`dara.ToInt(`);
if (argHasThrowFunc && argHasThrowFunc.get(i)) {
this.emit(argHasThrowFunc.get(i));
} else {
this.visitExpr(expr, level, env, expected);
}
this.emit(`)`);
} else if (expr.type !== 'number' && (expr.inferred.name === 'number' || expr.inferred.name === 'integer') && expr.expectedType.name === 'int32') {
this.emit(`dara.ToInt32(`);
if (argHasThrowFunc && argHasThrowFunc.get(i)) {
this.emit(argHasThrowFunc.get(i));
} else {
this.visitExpr(expr, level, env, expected);
}
this.emit(`)`);
} else {
let setFunc;
if(expr && expr.type === 'call') {
let dealFunc = this.getVarDealFunc(expr, expected);
setFunc = dealFunc && dealFunc(_name(expr.inferred));
}
if(setFunc) {
this.emit(`${setFunc}`);
}
if (argHasThrowFunc && argHasThrowFunc.get(i)) {
this.emit(argHasThrowFunc.get(i));
} else {
this.visitExpr(expr, level, env, expected);
}
if(setFunc) {
this.emit(')');
}
}
}
if (i !== args.length - 1) {
this.emit(', ');
}
}
this.emit(')');
}