in lib/generator.js [3590:3627]
visitReturnBody(ast, apiName, level, env) {
assert.equal(ast.type, 'returnBody');
const funcName = `${_lowerFirst(apiName)}_opResponse`;
if(_isIterator(env.returnType)) {
this.visitYieldReturnBody(ast, funcName, level, env);
return;
}
const errCounts = this.stmtsErrCount(ast.stmts.stmts);
if(errCounts > 1) {
const args = this.getStmtsVars(ast.stmts.stmts);
this.tryFunc.push({
args,
functionBody: ast.stmts,
returnType: env.returnType,
name: funcName,
pointerParams: env.pointerParams,
});
if (_name(env.returnType) && _name(env.returnType) !== 'void') {
this.emit(`_result, _err = ${funcName}`, level);
} else {
this.emit(`_err = ${funcName}`, level);
}
this.visitTryArgs(args, level, env);
this.emit('\n');
this.visitAPIErrCatch(level, env);
let err = '_err';
if(!env.runtimeBody) {
err = 'nil';
}
if(_name(env.returnType) === 'void' ) {
this.emit(`return ${err}\n`, level);
} else {
this.emit(`return _result, ${err}\n`, level);
}
return;
}
this.visitStmts(ast.stmts, level, env);
}