[ilasm] Don't break arguments compatiblity
[mono-project.git] / mcs / tests / test-async-70.cs
blob550c2bbcb8934edbec6d1799ea819929f4391798
1 using System;
2 using System.Threading.Tasks;
4 class Test
6 static async Task<int> YieldValue (int a)
8 await Task.Yield ();
9 return a;
12 static async Task<int> TestNestedReturn (int v)
14 int x = 0;
16 try {
17 try {
18 x = await YieldValue (1);
19 Console.WriteLine ("T1");
20 if (x == v)
21 return 6;
22 } finally {
23 Console.WriteLine ("F1");
25 x += await YieldValue (2);
28 Console.WriteLine ("AF1");
29 } finally {
30 Console.WriteLine ("F2");
31 try {
32 x += await YieldValue (4);
33 Console.WriteLine ("T3");
34 } finally {
35 Console.WriteLine ("F3");
36 x += await YieldValue (8);
40 Console.WriteLine ("END");
42 return x;
45 static async Task<int> TestNestedGoto (int v)
47 int x = 0;
49 try {
50 try {
51 Console.WriteLine ("T1");
52 if (x == v)
53 goto L;
55 x = await YieldValue (1);
56 } finally {
57 Console.WriteLine ("F1");
59 x += await YieldValue (2);
62 Console.WriteLine ("AF1");
63 } finally {
64 Console.WriteLine ("F2");
65 try {
66 x += await YieldValue (4);
67 Console.WriteLine ("T3");
68 } finally {
69 Console.WriteLine ("F3");
70 x += await YieldValue (8);
74 Console.WriteLine ("END");
76 Console.WriteLine ("END L");
78 return x;
81 public static int Main ()
83 if (TestNestedReturn (1).Result != 6)
84 return 1;
86 if (TestNestedReturn (0).Result != 15)
87 return 2;
89 if (TestNestedGoto (1).Result != 15)
90 return 3;
92 if (TestNestedGoto (0).Result != 14)
93 return 4;
95 return 0;