g_assert_not_reached ();
break;
}
- if (target && wrapper != target)
- return FALSE;
- ref->method = wrapper;
+ if (target) {
+ /*
+ * Due to the way mini_get_shared_method () works, we could end up with
+ * multiple copies of the same wrapper.
+ */
+ if (wrapper->klass != target->klass)
+ return FALSE;
+ ref->method = target;
+ } else {
+ ref->method = wrapper;
+ }
} else {
/*
* These wrappers are associated with a signature, not with a method.
return 1;
return 0;
}
+
+ public static void SetArrayValue_<T> (T[] values) {
+ values.Select (x => x).ToArray ();
+ }
+
+ public static int test_0_delegate_invoke_wrappers_gsharedvt () {
+ var enums = new LongEnum [] { LongEnum.A };
+ SetArrayValue_ (enums);
+ return 0;
+ }
+
}