+2010-04-09 Rodrigo Kumpera <rkumpera@novell.com>
+
+ * metadata-verify.c (is_valid_standalonesig_blob): Accept
+ fields as valid standalone sig too. F# does generate them.
+
+ * metadata-verify.c (verify_typedef_table_full): Ignore
+ what <module> extends.
+
2010-04-09 Rodrigo Kumpera <rkumpera@novell.com>
* verify.c (do_invoke_method): It's ok to do use call with
--ptr;
if (signature == 0x07)
return parse_locals_signature (ctx, &ptr, end);
+
+ /*F# and managed C++ produce standalonesig for fields even thou the spec doesn't mention it.*/
+ if (signature == 0x06)
+ return parse_field (ctx, &ptr, end);
+
return parse_method_signature (ctx, &ptr, end, TRUE, TRUE);
}
mono_metadata_decode_row (table, i, data, MONO_TYPEDEF_SIZE);
if (i == 0) {
- if (data [MONO_TYPEDEF_EXTENDS] != 0)
+ /*XXX it's ok if <module> extends object, or anything at all, actually. */
+ /*if (data [MONO_TYPEDEF_EXTENDS] != 0)
ADD_ERROR (ctx, g_strdup_printf ("Invalid typedef row 0 for the special <module> type must have a null extend field"));
+ */
continue;
}