2007-03-19 Marek Sieradzki <marek.sieradzki@gmail.com>
[mono.git] / mcs / tests / test-567.cs
1 using System;
2 using System.Reflection;
3 using System.Runtime.InteropServices;
4 using System.Runtime.CompilerServices;
5
6 namespace preservesig_test
7 {
8         class Class1
9         {
10                 static int Main(string[] args)
11                 {
12                         MethodInfo dofoo = typeof(TestClass).GetMethod("DoFoo");
13                         if ((dofoo.GetMethodImplementationFlags() & MethodImplAttributes.PreserveSig) == 0)
14                                 return 1;
15                         
16                         dofoo = typeof(TestClass).GetProperty("Foo").GetGetMethod ();
17                         if ((dofoo.GetMethodImplementationFlags() & MethodImplAttributes.PreserveSig) == 0)
18                                 return 1;
19
20                         dofoo = typeof(TestClass).GetEvent("e").GetAddMethod (true);
21                         if ((dofoo.GetMethodImplementationFlags() & MethodImplAttributes.PreserveSig) == 0)
22                                 return 1;
23                         
24                         Console.WriteLine("Has PreserveSig");
25                         return 0;
26                 }
27         }
28
29         public class TestClass
30         {
31                 public delegate void D ();
32                 
33                 [method:PreserveSig]
34                 public event D e;
35                 
36                 [PreserveSig()]
37                 [MethodImpl(MethodImplOptions.InternalCall,MethodCodeType=MethodCodeType.Runtime)]
38                 public int DoFoo()
39                 {
40                         return 0;
41                 }
42                 
43                 public int Foo {
44                         [PreserveSig]
45                         get {
46                                 return 2;
47                         }
48                 }
49         }
50 }