Example #1
0
        public static void Run()
        {
            var s = new StructWithYieldReturn {
                val = 2
            };
            var count = s.Count();

            YieldReturnTest.Print("StructWithYieldReturn", count.GetEnumerator());
            YieldReturnTest.Print("StructWithYieldReturn (again)", count.GetEnumerator());
        }
Example #2
0
        static void Main()
        {
            Print("SimpleYieldReturn", SimpleYieldReturn().GetEnumerator());
            Print("SimpleYieldReturnEnumerator", SimpleYieldReturnEnumerator());
            Print("YieldReturnParameters",
                  new YieldReturnTest {
                fieldOnThis = 1
            }.YieldReturnParameters(2).GetEnumerator());
            Print("YieldReturnParametersEnumerator",
                  new YieldReturnTest {
                fieldOnThis = 1
            }.YieldReturnParametersEnumerator(2));
            Print("YieldReturnInLoop", YieldReturnInLoop().GetEnumerator());
            Print("YieldReturnWithTryFinally", YieldReturnWithTryFinally().GetEnumerator());
            Print("YieldReturnInLock1", YieldReturnInLock1(new object()).GetEnumerator());
            Print("YieldReturnInLock2", YieldReturnInLock2(new object()).GetEnumerator());
            Print("YieldReturnWithNestedTryFinally(false)", YieldReturnWithNestedTryFinally(false).GetEnumerator());
            Print("YieldReturnWithNestedTryFinally(true)", YieldReturnWithNestedTryFinally(true).GetEnumerator());
            Print("YieldReturnWithTwoNonNestedFinallyBlocks", YieldReturnWithTwoNonNestedFinallyBlocks(SimpleYieldReturn()).GetEnumerator());
            // TODO: check anon methods
            Print("GetEvenNumbers", GetEvenNumbers(3).GetEnumerator());
            Print("YieldChars", YieldChars.GetEnumerator());
            Print("ExceptionHandling", ExceptionHandling().GetEnumerator());
            Print("YieldBreakInCatch", YieldBreakInCatch().GetEnumerator());
            Print("YieldBreakInCatchInTryFinally", YieldBreakInCatchInTryFinally().GetEnumerator());
            Print("YieldBreakInTryCatchInTryFinally", YieldBreakInTryCatchInTryFinally().GetEnumerator());
            Print("YieldBreakInTryFinallyInTryFinally(false)", YieldBreakInTryFinallyInTryFinally(false).GetEnumerator());
            Print("YieldBreakInTryFinallyInTryFinally(true)", YieldBreakInTryFinallyInTryFinally(true).GetEnumerator());
            try
            {
                Print("UnconditionalThrowInTryFinally()", UnconditionalThrowInTryFinally().GetEnumerator());
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            Print("NestedTryFinallyStartingOnSamePosition", NestedTryFinallyStartingOnSamePosition().GetEnumerator());
            Print("TryFinallyWithTwoExitPoints(false)", TryFinallyWithTwoExitPoints(false).GetEnumerator());
            Print("TryFinallyWithTwoExitPoints(true)", TryFinallyWithTwoExitPoints(true).GetEnumerator());
#if !LEGACY_CSC
            Print("YieldBreakInNestedTryFinally()", YieldBreakInNestedTryFinally().GetEnumerator());
            Print("TryFinallyWithTwoExitPointsInNestedTry(false)", TryFinallyWithTwoExitPointsInNestedTry(false).GetEnumerator());
            Print("TryFinallyWithTwoExitPointsInNestedTry(true)", TryFinallyWithTwoExitPointsInNestedTry(true).GetEnumerator());
            Print("TryFinallyWithTwoExitPointsInNestedCatch(false)", TryFinallyWithTwoExitPointsInNestedCatch(false).GetEnumerator());
            Print("TryFinallyWithTwoExitPointsInNestedCatch(true)", TryFinallyWithTwoExitPointsInNestedCatch(true).GetEnumerator());
#endif
            Print("GenericYield<int>()", GenericYield <int>().GetEnumerator());
            StructWithYieldReturn.Run();
        }