if (decl->is_inflated) {
override = mono_class_inflate_generic_method_checked (override, mono_method_get_context (decl), error);
mono_error_assert_ok (error);
+ } else if (mono_class_is_gtd (override->klass)) {
+ override = mono_class_inflate_generic_method_full_checked (override, ic, mono_class_get_context (ic), error);
}
if (!apply_override (klass, ic, vtable, decl, override, &override_map, &override_class_map, &conflict_map))
goto fail;
--- /dev/null
+using System;
+
+
+interface IBaseThingy
+{
+ int Foo ();
+}
+
+interface INativeThingy<T> : IBaseThingy
+{
+ int IBaseThingy.Foo () {
+ return 0;
+ }
+}
+
+class NativeThingy : INativeThingy<string>
+{
+}
+
+public class Test
+{
+ public static int test_0_dim_override()
+ {
+ var thingy = new NativeThingy ();
+ var ithingy = (IBaseThingy)thingy;
+ int i = ithingy.Foo ();
+ return i;
+ }
+
+ public static int Main (string[] args) {
+ return TestDriver.RunTests (typeof (Test), args);
+ }
+
+}