All pastes #30642 Raw Edit

Mine

public text v1 · immutable
#30642 ·published 2005-11-23 18:13 UTC
rendered paste body
Index: class.c
===================================================================
--- class.c     (revision 53280)
+++ class.c     (working copy)
@@ -2711,6 +2711,23 @@
        return class;
 }

+/** is klass Nullable<T>? */
+static gboolean
+type_is_nullable (MonoClass* klass)
+{
+       return klass->generic_class != NULL &&
+               klass->generic_class->container_class == mono_defaults.generic_nullable_class;
+}
+
+
+/** if klass is T? return T */
+static MonoClass*
+type_get_nullable_param (MonoClass* klass)
+{
+       g_assert (type_is_nullable (klass));
+       return klass->generic_class->inst->type_argv [0];
+}
+
 /*
  * Create the `MonoClass' for an instantiation of a generic type.
  * We only do this if we actually need it.
@@ -2746,6 +2763,9 @@

        klass->cast_class = klass->element_class = klass;

+       if (type_is_nullable (klass))
+               klass->cast_class = klass->element_class = type_get_nullable_param (klass);
+
        if (gclass->generic_class.is_dynamic) {
                klass->instance_size = gklass->instance_size;
                klass->class_size = gklass->class_size;