示例#1
0
            /// <summary>
            /// Adds yield target to the current try statement and returns the label
            /// to which the outer code must jump to to route properly to this label.
            /// </summary>
            internal TargetLabel AddYieldTarget(TargetLabel label, int index)
            {
                switch (State)
                {
                case TryStatementState.Try:
                    return(_statement.AddTryYieldTarget(label, index));

                case TryStatementState.Handler:
                    return(_statement.AddCatchYieldTarget(label, index, _handler));

                case TryStatementState.Finally:
                    return(_statement.AddFinallyYieldTarget(label, index));

                default:
                    Debug.Assert(false, "Invalid try statement state " + State.ToString());
                    throw new System.InvalidOperationException();
                }
            }