Merge pull request #5675 from mono/glib-debug-symbols
[mono.git] / mcs / tests / dtest-017.cs
1 using System;
2 using System.Collections.Generic;
3
4 class B<U>
5 {
6 }
7
8 class C<T> : B<T>
9 {
10 }
11
12 interface I<T> : IA<T>
13 {
14 }
15
16 interface IA<U>
17 {
18 }
19
20 struct S<T>
21 {
22 }
23
24 delegate dynamic D (dynamic d);
25
26 class DynamicAssignments
27 {
28         static void Foo (IA<object> o)
29         {
30         }
31         
32         public static int Main ()
33         {
34                 dynamic d1 = null;
35                 dynamic d2 = null;
36                 d1 = d2;
37                 d2 = d1;
38
39                 B<object> g1 = null;
40                 B<dynamic> g2 = null;
41                 g1 = g2;
42                 g2 = g1;
43
44                 B<B<object>> g_n1 = null;
45                 B<B<dynamic>> g_n2 = null;
46                 g_n1 = g_n2;
47                 g_n2 = g_n1;
48                 
49                 object[] o = null;
50                 dynamic[] d = o;
51
52                 C<object> a = null;
53                 B<dynamic> b = a;
54                 a = (C<object>)b;
55                 a = (C<dynamic>)b;
56
57                 I<object> io = null;
58                 IA<dynamic> id = io;
59                 
60                 IA<object> ia_o = null;
61                 IA<dynamic> ia_d = ia_o;
62                 
63                 S<dynamic> s_d = new S<dynamic> ();
64                 S<object> s_o = s_d;
65                 S<object>? s_o_n = s_d;
66                 
67                 D del = delegate (object del_arg) {
68                          return (object) null;
69                 };
70                 
71                 Action<IA<dynamic>> del2 = Foo;
72                 
73                 Action<object> del31 = null;
74                 Action<dynamic> del32 = del31;
75                 
76                 I<dynamic>[] a20 = null;
77                 I<object>[] b20 = a20;
78                 
79                 dynamic[] d40 = null;
80                 IEnumerable<object> d41 = d40;
81
82                 return 0;
83         }
84 }