[sre] Pass declaring type to GetMethodFromHandle in
authorAleksey Kliger <aleksey@xamarin.com>
Mon, 31 Jul 2017 22:35:16 +0000 (18:35 -0400)
committerAleksey Kliger <aleksey@xamarin.com>
Mon, 31 Jul 2017 22:35:16 +0000 (18:35 -0400)
GenericTypeParameterBuilder:InternalResolve (Fixes #58454)

When the parameter belongs to a method builder, we need to pass the declaring
type (appropriately resolved) to GetMethodFromHandle to avoid an
ArgumentException.

Fixes https://bugzilla.xamarin.com/show_bug.cgi?id=58454

mcs/class/corlib/System.Reflection.Emit/GenericTypeParameterBuilder.cs

index 30b6aac80e572f9402afd9b4403a9cf03e23c95b..9bbe8d0d92b32f73ee8976d3aa23780a54250672 100644 (file)
@@ -87,7 +87,7 @@ namespace System.Reflection.Emit
                internal override Type InternalResolve ()
                {
                        if (mbuilder != null)
-                               return MethodBase.GetMethodFromHandle (mbuilder.MethodHandleInternal).GetGenericArguments () [index];
+                               return MethodBase.GetMethodFromHandle (mbuilder.MethodHandleInternal, mbuilder.TypeBuilder.InternalResolve ().TypeHandle).GetGenericArguments () [index];
                        return tbuilder.InternalResolve ().GetGenericArguments () [index];
                }