1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
// Compare this to gcs0695-*.cs: these are the allowed cases.
namespace A
{
interface I<X>
{ }
interface J<X,Y> : I<X>
{ }
class A<X> : I<X>, I<A<X>>
{ }
class B<X> : I<B<X>>, I<X>, I<A<X>>
{ }
class C<X> : I<int>, I<A<X>>
{ }
class D<X> : I<A<float>>, I<B<X>>
{ }
class E<X,Y> : J<X,Y>, J<I<X>,I<Y>>
{ }
class F<X> : J<X,I<X>>, J<X,X>
{ }
}
// bug #69057
namespace B
{
struct KeyValuePair<K,V>
{ }
interface ITest<T>
{ }
interface ITest2<K,V> : ITest<KeyValuePair<K,V>>
{ }
class MyTest<K,V> : ITest2<K,V>, ITest<KeyValuePair<K,V>>
{ }
}
// bug #58303
namespace C
{
class S <K> { }
interface Z<T> { }
interface I<K> : Z<S<K>> { }
class C <K> : I<K>, Z<S<K>> { }
}
class Test
{
public static void Main ()
{ }
}
|