Beispiel #1
0
        internal EvalUnwinder(BlockReturnReason reason, RuntimeFlowControl targetFrame, ProcKind sourceProcKind, object returnValue)
            : base(returnValue) {

            Reason = reason;
            _targetFrame = targetFrame;
            _sourceProcKind = sourceProcKind;
        }
Beispiel #2
0
 internal EvalUnwinder(BlockReturnReason reason, RuntimeFlowControl targetFrame, ProcKind sourceProcKind, object returnValue)
     : base(returnValue)
 {
     Reason          = reason;
     _targetFrame    = targetFrame;
     _sourceProcKind = sourceProcKind;
 }
Beispiel #3
0
        internal void SetFlowControl(BlockReturnReason reason, RuntimeFlowControl targetFrame, ProcKind sourceProcKind)
        {
            Debug.Assert((reason == BlockReturnReason.Break) == (targetFrame != null));

            _returnReason   = reason;
            _targetFrame    = targetFrame;
            _sourceProcKind = sourceProcKind;
        }
Beispiel #4
0
 /// <summary>
 /// Propagates control flow (break/return) from the yielded block to the enclosing block.
 /// </summary>
 public object PropagateFlow(BlockParam /*!*/ yieldedBlock, object returnValue)
 {
     if (yieldedBlock.ReturnReason == BlockReturnReason.Break)
     {
         return(Break(returnValue));
     }
     else
     {
         _returnReason = yieldedBlock.ReturnReason;
         return(returnValue);
     }
 }
Beispiel #5
0
        internal void SetFlowControl(BlockReturnReason reason, RuntimeFlowControl targetFrame, ProcKind sourceProcKind) {
            Debug.Assert((reason == BlockReturnReason.Break) == (targetFrame != null));

            _returnReason = reason;
            _targetFrame = targetFrame;
            _sourceProcKind = sourceProcKind;
        }
Beispiel #6
0
 internal EvalUnwinder(BlockReturnReason reason, object returnValue) 
     : this(reason, null, ProcKind.Block, returnValue) {
 }
Beispiel #7
0
 /// <summary>
 /// Propagates control flow (break/return) from the yielded block to the enclosing block.
 /// </summary>
 public object PropagateFlow(BlockParam/*!*/ yieldedBlock, object returnValue) {
     if (yieldedBlock.ReturnReason == BlockReturnReason.Break) {
         return Break(returnValue);
     } else {
         _returnReason = yieldedBlock.ReturnReason;
         return returnValue;
     }
 }
Beispiel #8
0
 internal EvalUnwinder(BlockReturnReason reason, object returnValue)
     : this(reason, null, ProcKind.Block, returnValue)
 {
 }