Merge pull request #5714 from alexischr/update_bockbuild
[mono.git] / mcs / tests / gtest-571.cs
1 using System;
2
3 public abstract class A<T>
4 {
5         public abstract A<MM> For<MM> () where MM : T;
6 }
7
8 public class B<U, X, V> : A<V>
9         where V : X
10         where X : U
11 {
12         readonly A<U> _inner;
13
14         public B (A<U> inner)
15         {
16                 _inner = inner;
17         }
18
19         public override A<PP> For<PP> () // base constraint is copied as PP : V
20         {
21                 return _inner.For<PP> ();
22         }
23 }
24
25 public class Test : A<Test>
26 {
27         public static void Main ()
28         {
29                 var t = new Test ();
30                 new B<Test, Test, Test> (t).For<Test> ();
31         }
32
33         public override A<QQ> For<QQ> ()
34         {
35                 return null;
36         }
37 }