Updated with review feedback.
[mono.git] / mcs / tests / test-async-44.cs
1 using System;
2 using System.Threading.Tasks;
3
4 class A
5 {
6         public Task<int> GetValue (int b)
7         {
8                 return Task.FromResult (b);
9         }
10 }
11
12 class C
13 {
14         public static int Main ()
15         {
16                 var c = new C ();
17                 return c.Foo ().Result;
18         }
19
20         public A Instance
21         {
22                 get
23                 {
24                         return new A ();
25                 }
26         }
27
28         async Task<int> Foo ()
29         {
30                 int value = 1;
31
32                 {
33                         await Test (value,
34                                 async () => {
35                                         int b = value;
36                                         await Instance.GetValue (Bar () + b);
37                                 });
38                 }
39
40                 return 0;
41         }
42
43         int Bar ()
44         {
45                 return 1;
46         }
47
48         T Test<T> (int arg, Func<T> func)
49         {
50                 return func ();
51         }
52 }
53