diff --git a/src/libraries/System.Runtime/tests/System.Reflection.Tests/TypeInfoTests.cs b/src/libraries/System.Runtime/tests/System.Reflection.Tests/TypeInfoTests.cs index f20d14dedc3fb3..231c6f1119bcdf 100644 --- a/src/libraries/System.Runtime/tests/System.Reflection.Tests/TypeInfoTests.cs +++ b/src/libraries/System.Runtime/tests/System.Reflection.Tests/TypeInfoTests.cs @@ -940,6 +940,7 @@ public void GetMembers(BindingFlags bindingAttributes, int length) [Theory] [InlineData(typeof(MembersClass), new Type[] { typeof(TI_NonGenericInterface1), typeof(TI_NonGenericInterface2) })] [InlineData(typeof(TI_NonGenericInterface2), new Type[0])] + [InlineData(typeof(IntEnum), new Type[] { typeof(IComparable), typeof(ISpanFormattable), typeof(IFormattable), typeof(IConvertible) })] public void GetInterfaces(Type type, Type[] expected) { Assert.Equal(expected.OrderBy(t => t.Name), type.GetTypeInfo().GetInterfaces().OrderBy(t => t.Name)); diff --git a/src/mono/mono/metadata/class-init.c b/src/mono/mono/metadata/class-init.c index 624fd9989efe4f..33f545e01768f3 100644 --- a/src/mono/mono/metadata/class-init.c +++ b/src/mono/mono/metadata/class-init.c @@ -3964,21 +3964,15 @@ mono_class_setup_interfaces (MonoClass *klass, MonoError *error) if (iface) array_ifaces [interface_count ++] = iface; } - int mult = klass->element_class->enumtype ? 2 : 1; - interfaces = (MonoClass **)mono_image_alloc0 (klass->image, sizeof (MonoClass*) * interface_count * mult); + interfaces = (MonoClass **)mono_image_alloc0 (klass->image, sizeof (MonoClass*) * interface_count ); int itf_idx = 0; args [0] = m_class_get_byval_arg (m_class_get_element_class (klass)); for (int i = 0; i < interface_count; ++i) interfaces [itf_idx++] = mono_class_bind_generic_parameters (array_ifaces [i], 1, args, FALSE); - if (klass->element_class->enumtype) { - args [0] = mono_class_enum_basetype_internal (klass->element_class); - for (int i = 0; i < interface_count; ++i) - interfaces [itf_idx++] = mono_class_bind_generic_parameters (array_ifaces [i], 1, args, FALSE); - } - interface_count *= mult; g_assert (itf_idx == interface_count); + } else if (mono_class_is_ginst (klass)) { MonoClass *gklass = mono_class_get_generic_class (klass)->container_class;