in lib/generator.js [790:821]
visitFunctionNested(ast, level, env) {
var argHasThrowFunc = new Map;
for (let i = 0; i < ast.args.length; i++) {
if (ast.args[i].type === 'call' && ast.args[i].hasThrow) {
let paramName;
if (ast.args[i].left.type === 'method_call') {
paramName = _lowerFirst(_name(ast.args[i].left.id)) + 'Tmp';
} else {
paramName = _lowerFirst(_name(ast.left.propertyPath[0])) + 'Tmp';
}
if (env.nestFuncParamName.has(paramName)) {
let count = env.nestFuncParamNameSubscript['count'] + 1;
paramName = paramName + count;
}
env.nestFuncParamName.set(paramName);
argHasThrowFunc.set(i, paramName);
this.emit(`${paramName}, err := `, level);
this.visitExpr(ast.args[i], level, env, { pointer: true });
this.emit('\n');
this.emit(`if err != nil {\n`, level);
this.emit(`_err = err\n`, level + 1);
if (env.returnType && _name(env.returnType) !== 'void') {
this.emit(`return _result, _err\n`, level + 1);
} else {
this.emit(`return _err\n`, level + 1);
}
this.emit(`}\n`, level);
}
}
return argHasThrowFunc;
}