in lib/generator.js [4052:4079]
eachTryFunc(ast, level) {
const env = {
local: new Map(),
returnType: ast.returnType,
hasThrow: true,
pointerParams: ast.pointerParams || [],
};
this.emit(`func ${ast.name} `, level);
this.visitTryParams(ast.args, env);
this.emit('(');
if (_name(env.returnType) !== 'void') {
this.emit(` _result `);
this.visitPointerType(ast.returnType, level, env);
this.emit(', ');
}
this.emit('_err error) {\n');
this.visitStmts(ast.functionBody, level + 1, env);
const stmts = ast.functionBody.stmts;
const length = ast.functionBody.stmts.length;
if (_name(env.returnType) === 'void') {
this.emit(`return _err\n`, level + 1);
} else if ((length === 0 || (stmts[length - 1].type !== 'return' && stmts[length - 1].type !== 'throw' &&
(stmts[length - 1].type !== 'if' || !stmts[length - 1].elseStmts)))) {
this.emit(`return _result, _err\n`, level + 1);
}
this.emit(`}\n`, level);