public override void VisitReturn(BoundReturn node) { base.VisitReturn(node); JoinOnBlock(null, JoinType.Return); }
public virtual void VisitReturn(BoundReturn node) { DefaultVisit(node); }
private void EmitReturn(BoundReturn node) { var expression = node.Expression ?? new BoundGetVariable(BoundMagicVariable.Undefined); EmitBox(EmitExpression(expression)); if (_scope.InTryCatch) { var exceptionalReturn = _scope.GetExceptionalReturn(); IL.Emit(OpCodes.Stloc, exceptionalReturn.Local); IL.Emit(OpCodes.Leave, exceptionalReturn.Label); } else { IL.Emit(OpCodes.Ret); } }