+2007-04-11 Martin Baulig <martin@ximian.com>
+
+ * mini.c (can_access_member): Fix handling of generic classes;
+ fixes #81259.
+
2007-04-10 Zoltan Varga <vargaz@gmail.com>
* aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
static gboolean
can_access_member (MonoClass *access_klass, MonoClass *member_klass, int access_level)
{
+ if (access_klass->generic_class && member_klass->generic_class &&
+ access_klass->generic_class->container_class && member_klass->generic_class->container_class) {
+ if (can_access_member (access_klass->generic_class->container_class,
+ member_klass->generic_class->container_class, access_level))
+ return TRUE;
+ }
+
/* Partition I 8.5.3.2 */
/* the access level values are the same for fields and methods */
switch (access_level) {
/* same compilation unit */
return access_klass->image == member_klass->image;
case FIELD_ATTRIBUTE_PRIVATE:
- if (access_klass->generic_class && member_klass->generic_class && member_klass->generic_class->container_class)
- return member_klass->generic_class->container_class == access_klass->generic_class->container_class;
return access_klass == member_klass;
case FIELD_ATTRIBUTE_FAM_AND_ASSEM:
if (mono_class_has_parent (access_klass, member_klass) &&
- can_access_internals (access_klass->image->assembly, member_klass->image->assembly))
+ can_access_internals (access_klass->image->assembly, member_klass->image->assembly))
return TRUE;
return FALSE;
case FIELD_ATTRIBUTE_ASSEMBLY: