Merge pull request #5675 from mono/glib-debug-symbols
[mono.git] / mcs / tests / gtest-289.cs
1 // Compiler options: -optimize+
2
3 using System;
4 using System.Reflection;
5
6 enum E
7 {
8 }
9
10 delegate void D();
11
12 class C {
13         public C () {}
14
15         int i = default (int);
16         double d = default (double);
17         char c = default (char);
18         bool b = default (bool);
19         decimal dec2 = default (decimal);
20         object o = default (object);
21         ValueType BoolVal = default (ValueType);
22         E e = default (E);
23                 
24         int[] a_i = default(int[]);
25         object[] a_o = default(object[]);
26         ValueType[] a_v = default(ValueType[]);
27
28         event D Ev1 = default(D);
29 }
30
31 class Consts
32 {
33         const int i = default (int);
34         const double d = default (double);
35         const char c = default (char);
36         const bool b = default (bool);
37         const decimal dec2 = default (decimal);
38         const object o = default (object);
39         const ValueType BoolVal = default (ValueType);
40         const E e = default (E);
41                 
42         const int[] a_i = default(int[]);
43         const object[] a_o = default(object[]);
44         const ValueType[] a_v = default(ValueType[]);
45 }
46
47 class Test
48 {
49         public static int Main ()
50         {
51                 ConstructorInfo mi = typeof(C).GetConstructors ()[0];
52         MethodBody mb = mi.GetMethodBody();
53                 
54                 if (mb.GetILAsByteArray ().Length != 7) {
55                         Console.WriteLine("Optimization failed");
56                         return 3;
57                 }
58
59                 bool b = default (DateTime?) == default (DateTime?);
60                 if (!b)
61                         return 19;
62                 
63                 Console.WriteLine ("OK");
64                 return 0;
65         }
66 }