in lib/generator.js [2633:2668]
visitYieldArgs(ast, level, env) {
let pointer = false;
let setFunc;
var hasThrowCall = (ast.expr.type === 'call' &&
ast.expr.hasThrow) || ast.expr.type === 'construct';
if (ast.left.type === 'property_assign' || ast.left.type === 'property') {
pointer = true;
this.visitPropertyAccess(ast.left, level, env, { needCast: 'false', type: 'pointer', pointer });
} else if (ast.left.type === 'variable') {
const name = _name(ast.left.id);
pointer = env.pointerParams && env.pointerParams.includes(name);
this.emit(`${name}`);
if(hasThrowCall){
let dealFunc = this.getVarDealFunc(ast.expr, { pointer });
setFunc = dealFunc && dealFunc(_name(ast.expr.inferred));
if(setFunc) {
this.emit('Tmp');
}
}
} else if (ast.left.type === 'virtualVariable') {
pointer = true;
this.emit(`${_vid(_avoidVariableKeywords(_format(_name(ast.left.vid))))}`, level);
} else if (ast.left.type === 'map_access') {
pointer = true;
this.visitMapAccess(ast.left, level, env, { pointer });
} else if (ast.left.type === 'array_access') {
pointer = true;
this.visitArrayAccess(ast.left, level, env, { pointer });
} else {
throw new Error('unimpelemented');
}
if (hasThrowCall) {
this.emit(', _yieldErr');
}
}