2008-03-10 Rodrigo Kumpera <rkumpera@novell.com>
authorRodrigo Kumpera <kumpera@gmail.com>
Mon, 10 Mar 2008 14:09:01 +0000 (14:09 -0000)
committerRodrigo Kumpera <kumpera@gmail.com>
Mon, 10 Mar 2008 14:09:01 +0000 (14:09 -0000)
* unverifiable_callvirt_static_method.il: Added. Test for callvirt and
static methods.

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

mono/tests/verifier/ChangeLog
mono/tests/verifier/unverifiable_callvirt_static_method.il [new file with mode: 0644]

index 337005f603dde33cacf01c3f7d3c97c7b741ea63..fe83599e1e9a50450efd2a1b2b0747b4d8ba1d31 100644 (file)
@@ -1,3 +1,8 @@
+2008-03-10 Rodrigo Kumpera <rkumpera@novell.com>
+
+       * unverifiable_callvirt_static_method.il: Added. Test for callvirt and
+       static methods.
+
 2008-02-28 Rodrigo Kumpera <rkumpera@novell.com>
 
        * invalid_refanytype_null_stack_top.il: New test for refanytype opcode.
diff --git a/mono/tests/verifier/unverifiable_callvirt_static_method.il b/mono/tests/verifier/unverifiable_callvirt_static_method.il
new file mode 100644 (file)
index 0000000..4a2d6eb
--- /dev/null
@@ -0,0 +1,80 @@
+
+// unverifiable CIL which breaks the ECMA-335 rules. 
+// this CIL should fail verification by a conforming CLI verifier.
+
+.assembly 'unverifiable_callvirt_final_virtual_method_2_generated'
+{
+  .hash algorithm 0x00008004
+  .ver  0:0:0:0
+}
+
+.assembly extern mscorlib
+{
+  .ver 1:0:5000:0
+  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
+}
+
+
+.class ClassA extends [mscorlib]System.Object
+{
+       .method public hidebysig  specialname rtspecialname instance default void .ctor () cil managed 
+       {
+               .maxstack 8
+               ldarg.0 
+               call instance void object::.ctor()
+               ret 
+       }
+
+       .method public  void Method1() cil managed
+       {
+               ret
+       }
+
+       .method public  void Method2(int32 a) cil managed
+       {
+               ret
+       }
+
+       .method public static void StaticMethod() cil managed
+       {
+               ret
+       }
+}
+
+
+.class Driver extends [mscorlib]System.Object
+{
+
+       .method public virtual void VirtMethod ()
+       {
+               ret
+       }
+
+       .method public hidebysig  specialname rtspecialname instance default void .ctor () cil managed 
+       {
+               .maxstack 8
+               ldarg.0 
+               call instance void object::.ctor()
+               ret 
+       }
+
+       .method public static void Main() cil managed
+       {
+               .entrypoint
+               .maxstack 8
+               .locals init ()
+
+               .try {
+                       newobj instance void ClassA::.ctor()
+                       callvirt instance void ClassA::StaticMethod()
+
+                       leave END
+               } catch [mscorlib]System.NullReferenceException {
+                       leave END
+               }
+
+END:
+               ret
+       }
+
+}