Merge pull request #5714 from alexischr/update_bockbuild
[mono.git] / mcs / tests / test-async-33.cs
1 using System;
2 using System.Threading;
3 using System.Threading.Tasks;
4
5 class A
6 {
7         public virtual Task<int> Foo (int value)
8         {
9                 return Task.FromResult (value);
10         }
11         
12         public virtual Task<int> Prop { get; set; }
13 }
14
15 class B : A
16 {
17         public override Task<int> Prop {
18                 get {
19                         throw new ApplicationException ();
20                 }
21                 set {
22                         throw new ApplicationException ();
23                 }
24         }
25         
26         public override async Task<int> Foo (int value)
27         {
28                 return await base.Foo (value) + 1;
29         }
30         
31         public async Task<int> Foo2 (int value)
32         {
33                 base.Prop = Task.FromResult (value);
34                 return await base.Prop;
35         }
36 }
37
38 class Program
39 {
40         public static int Main()
41         {
42                 var b = new B ();
43                 if (b.Foo (3).Result != 4)
44                         return 1;
45                 
46                 if (b.Foo2 (5).Result != 5)
47                         return 2;
48                 
49                 Console.WriteLine("ok");
50                 return 0;
51         }
52 }