2009-08-24 Rodrigo Kumpera <rkumpera@novell.com>
authorRodrigo Kumpera <kumpera@gmail.com>
Mon, 24 Aug 2009 22:31:10 +0000 (22:31 -0000)
committerRodrigo Kumpera <kumpera@gmail.com>
Mon, 24 Aug 2009 22:31:10 +0000 (22:31 -0000)
* load-exceptions.cs:
* load-missing.il: Test for invalid method overrides.

svn path=/trunk/mono/; revision=140560

mono/tests/ChangeLog
mono/tests/load-exceptions.cs
mono/tests/load-missing.il

index e2889f2b7a5fb66994050a422cea15d2803715ec..80a08b3434973557ef85c9c343a12f7d00079003 100644 (file)
@@ -1,3 +1,8 @@
+2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * load-exceptions.cs:
+       * load-missing.il: Test for invalid method overrides.
+
 2009-08-19 Rodrigo Kumpera  <rkumpera@novell.com>
 
        * constraints-load.il: New test for errors related to loading
index fe210bbb9b098f8766f9934184eb7c5cef595d12..17492abdfe81bec6daf78cd36982463f1989223a 100644 (file)
@@ -248,6 +248,23 @@ public class Tests : LoadMissing {
                return 0;
        }
 
+       public static int test_0_bad_method_override1 ()
+       {
+               try {
+                       BadOverridesDriver.bad_override1 ();
+                       return 1;
+               } catch (TypeLoadException) {}
+               return 0;
+       }
+
+       public static int test_0_bad_method_override2 ()
+       {
+               try {
+                       BadOverridesDriver.bad_override2 ();
+                       return 1;
+               } catch (TypeLoadException) {}
+               return 0;
+       }
 
        public static void missing_outer () {
                new Missing.Foo1.InnerFoo ();
index dd44a354c28850ccbac1f5cdc6fd8ed9d45fdb35..f031e4cf03e7776396327684b92593acf3748783 100644 (file)
     } // end of method CCtorClass::foo      \r
 \r
   } // end of class CCtorClass\r
+\r
+.class interface public auto ansi abstract TestIface\r
+{\r
+       .method public virtual  hidebysig  newslot abstract instance default int32 foo ()  cil managed  {}\r
+}\r
+\r
+.class public auto ansi beforefieldinit BadMethodOverride1\r
+{\r
+       .method public virtual virtual newslot default int32 foo ()\r
+       {\r
+               .override class TestIface::foo\r
+               ldc.i4.0\r
+               ret\r
+       }\r
+\r
+       .method public hidebysig  specialname  rtspecialname  instance default void '.ctor' ()  cil managed \r
+    {\r
+               ldarg.0                                \r
+               call instance void object::'.ctor'()   \r
+               ret                                    \r
+       }\r
+}\r
+\r
+.class public auto ansi beforefieldinit RandomBaseClass\r
+{\r
+       .method public virtual virtual newslot default int32 foo ()\r
+       {\r
+               ldc.i4.0\r
+               ret\r
+       }\r
+\r
+       .method public hidebysig  specialname  rtspecialname  instance default void '.ctor' ()  cil managed \r
+    {\r
+               ldarg.0                                \r
+               call instance void object::'.ctor'()   \r
+               ret                                    \r
+       }\r
+}\r
+\r
+.class public auto ansi beforefieldinit BadMethodOverride2\r
+{\r
+       .method public virtual virtual newslot default int32 foo ()\r
+       {\r
+               .override class RandomBaseClass::foo\r
+               ldc.i4.0\r
+               ret\r
+       }\r
+\r
+       .method public hidebysig  specialname  rtspecialname  instance default void '.ctor' ()  cil managed \r
+    {\r
+               ldarg.0                                \r
+               call instance void object::'.ctor'()   \r
+               ret                                    \r
+       }\r
+}\r
+\r
+.class public auto ansi beforefieldinit BadOverridesDriver\r
+{\r
+       .method public static void bad_override1 ()\r
+       {\r
+               newobj instance void BadMethodOverride1::.ctor()\r
+               pop\r
+               ret\r
+       }\r
+\r
+       .method public static void bad_override2 ()\r
+       {\r
+               newobj instance void BadMethodOverride2::.ctor()\r
+               pop\r
+               ret\r
+       }\r
+\r
+}\r