Exemplo n.º 1
0
            public override void VisitReturn(BoundReturn node)
            {
                base.VisitReturn(node);

                JoinOnBlock(null, JoinType.Return);
            }
Exemplo n.º 2
0
 public virtual void VisitReturn(BoundReturn node)
 {
     DefaultVisit(node);
 }
Exemplo n.º 3
0
        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);
            }
        }