/// <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(); } }