2009-09-01 Rodrigo Kumpera <rkumpera@novell.com>
authorRodrigo Kumpera <kumpera@gmail.com>
Tue, 1 Sep 2009 21:04:16 +0000 (21:04 -0000)
committerRodrigo Kumpera <kumpera@gmail.com>
Tue, 1 Sep 2009 21:04:16 +0000 (21:04 -0000)
* cli-tables-tests.md: New test for method abstract + final.
Tests #534175.

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

mono/metadata/ChangeLog
mono/metadata/metadata-verify.c
mono/tests/metadata-verifier/Changelog
mono/tests/metadata-verifier/cli-tables-tests.md

index 8e8d5fee180711b7e8d84411416244f75c6b0475..a82af9553a6db16fa772d4a9ccf923557ecab366 100644 (file)
@@ -1,3 +1,8 @@
+2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * metadata-verify.c (verify_method_table): Check for abstract + final.
+       Fixes #534175.
+
 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
 
        * verify.c (verify_class_fields): Check for duplicate fields.
index ba7c199e8b622695f7d0a4dff4908eaf7041ef42..a3e9ee856ccff01626f6999b208cba4a0cbede11 100644 (file)
@@ -2252,6 +2252,8 @@ verify_method_table (VerifyContext *ctx)
                if (flags & METHOD_ATTRIBUTE_ABSTRACT) {
                        if (flags & METHOD_ATTRIBUTE_PINVOKE_IMPL)
                                ADD_ERROR (ctx, g_strdup_printf ("Invalid method row %d is Abstract and PinvokeImpl", i));
+                       if (flags & METHOD_ATTRIBUTE_FINAL)
+                               ADD_ERROR (ctx, g_strdup_printf ("Invalid method row %d is Abstract and Final", i));
                        if (!(flags & METHOD_ATTRIBUTE_VIRTUAL))
                                ADD_ERROR (ctx, g_strdup_printf ("Invalid method row %d is Abstract but not Virtual", i));
                }
index ee19963c1abeb80ef4cc4dd310da3b774b3df763..384c734e3e8e6842d4484d7e2fd707803f58b09f 100644 (file)
@@ -1,3 +1,8 @@
+2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * cli-tables-tests.md: New test for method abstract + final.
+       Tests #534175.
+
 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
 
        * Makefile: Fix makefile.
index 32c16400ef571ac0dcab48d8aa9bb14397fdb3e3..0b4762f2069ca8a3b90ce9125bedb8332fbf3fb5 100644 (file)
@@ -421,6 +421,9 @@ methoddef-table {
 
        #pinvoke must be static
        invalid offset table-row ( 6 5 ) + 6 set-ushort 0x2086
+
+       #abstract + final (set to public virtual final newslot abstract)
+       invalid offset table-row ( 6 7 ) + 6 set-ushort 0x0566
 }
 
 methoddef-table-global-methods {