Author: zoltan
Date: 2007-10-20 12:08:16 -0400 (Sat, 20 Oct 2007)
New Revision: 87851

Modified:
   trunk/mono/mono/metadata/ChangeLog
   trunk/mono/mono/metadata/class.c
   trunk/mono/mono/metadata/reflection.c
Log:
2007-10-20  Zoltan Varga  <[EMAIL PROTECTED]>

        * class.c (mono_class_setup_methods): Handle dynamic inflated classes 
correctly.

        * reflection.c (create_generic_typespec): Initialize 
klass->generic_container
        if needed.
        (reflection_methodbuilder_to_mono_method): Set container->is_method to 
TRUE.


Modified: trunk/mono/mono/metadata/ChangeLog
===================================================================
--- trunk/mono/mono/metadata/ChangeLog  2007-10-20 15:42:57 UTC (rev 87850)
+++ trunk/mono/mono/metadata/ChangeLog  2007-10-20 16:08:16 UTC (rev 87851)
@@ -1,3 +1,11 @@
+2007-10-20  Zoltan Varga  <[EMAIL PROTECTED]>
+
+       * class.c (mono_class_setup_methods): Handle dynamic inflated classes 
correctly.
+
+       * reflection.c (create_generic_typespec): Initialize 
klass->generic_container
+       if needed.
+       (reflection_methodbuilder_to_mono_method): Set container->is_method to 
TRUE.
+
 2007-10-18  Jonathan Chambers <[EMAIL PROTECTED]>
 
        * marshal.c: Use correct key when removing item

Modified: trunk/mono/mono/metadata/class.c
===================================================================
--- trunk/mono/mono/metadata/class.c    2007-10-20 15:42:57 UTC (rev 87850)
+++ trunk/mono/mono/metadata/class.c    2007-10-20 16:08:16 UTC (rev 87851)
@@ -1273,13 +1273,14 @@
                return;
        }
 
-       if (class->generic_class && !class->generic_class->is_dynamic) {
+       if (class->generic_class) {
                MonoClass *gklass = class->generic_class->container_class;
 
                mono_class_init (gklass);
                mono_class_setup_methods (gklass);
 
                /* The + 1 makes this always non-NULL to pass the check in 
mono_class_setup_methods () */
+               class->method.count = gklass->method.count;
                methods = g_new0 (MonoMethod *, class->method.count + 1);
 
                for (i = 0; i < class->method.count; i++) {

Modified: trunk/mono/mono/metadata/reflection.c
===================================================================
--- trunk/mono/mono/metadata/reflection.c       2007-10-20 15:42:57 UTC (rev 
87850)
+++ trunk/mono/mono/metadata/reflection.c       2007-10-20 16:08:16 UTC (rev 
87851)
@@ -2551,6 +2551,9 @@
        g_assert (tb->generic_params);
        klass = mono_class_from_mono_type (tb->type.type);
 
+       if (tb->generic_container)
+               mono_reflection_create_generic_class (tb);
+
        sigbuffer_add_value (&buf, MONO_TYPE_GENERICINST);
        g_assert (klass->generic_container);
        sigbuffer_add_value (&buf, klass->byval_arg.type);
@@ -8584,6 +8587,7 @@
                m->generic_container = container = rmb->generic_container;
                container->type_argc = count;
                container->type_params = g_new0 (MonoGenericParam, count);
+               container->is_method = TRUE;
                container->owner.method = m;
 
                for (i = 0; i < count; i++) {

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to