From: Zoltan Varga Date: Wed, 11 Jun 2008 00:01:28 +0000 (-0000) Subject: 2008-06-11 Zoltan Varga X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=commitdiff_plain;h=dc219e54752d7efe428a548da0284f7aa4bea18d;p=mono.git 2008-06-11 Zoltan Varga * TypeBuilderTest.cs (GetField): Add a test for calling GetField on an open generic type. svn path=/trunk/mcs/; revision=105527 --- diff --git a/mcs/class/corlib/Test/System.Reflection.Emit/ChangeLog b/mcs/class/corlib/Test/System.Reflection.Emit/ChangeLog index 6e89ef49685..63198df2f37 100644 --- a/mcs/class/corlib/Test/System.Reflection.Emit/ChangeLog +++ b/mcs/class/corlib/Test/System.Reflection.Emit/ChangeLog @@ -1,3 +1,8 @@ +2008-06-11 Zoltan Varga + + * TypeBuilderTest.cs (GetField): Add a test for calling GetField on an + open generic type. + 2008-06-10 Rodrigo Kumpera * TypeBuilderTest.cs: Added test for bug #399047. diff --git a/mcs/class/corlib/Test/System.Reflection.Emit/TypeBuilderTest.cs b/mcs/class/corlib/Test/System.Reflection.Emit/TypeBuilderTest.cs index 39718075b67..01c62e15e82 100644 --- a/mcs/class/corlib/Test/System.Reflection.Emit/TypeBuilderTest.cs +++ b/mcs/class/corlib/Test/System.Reflection.Emit/TypeBuilderTest.cs @@ -9454,11 +9454,24 @@ namespace MonoTests.System.Reflection.Emit ilgen.Emit (OpCodes.Ldfld, fi2); ilgen.Emit (OpCodes.Ret); + // Check GetField on a type instantiated with type parameters + Type t3 = tb.MakeGenericType (typeParams [0]); + FieldBuilder fb3 = tb.DefineField ("field3", typeParams [0], FieldAttributes.Public); + FieldInfo fi3 = TypeBuilder.GetField (t3, fb3); + + MethodBuilder mb3 = tb.DefineMethod ("get_T", MethodAttributes.Public|MethodAttributes.Static, typeParams [0], Type.EmptyTypes); + ILGenerator ilgen3 = mb3.GetILGenerator (); + ilgen3.Emit (OpCodes.Newobj, TypeBuilder.GetConstructor (t3, cb)); + ilgen3.Emit (OpCodes.Ldfld, fi3); + ilgen3.Emit (OpCodes.Ret); + Type created = tb.CreateType (); Type inst = created.MakeGenericType (typeof (object)); Assert.AreEqual (42, inst.GetMethod ("get_int").Invoke (null, null)); + + Assert.AreEqual (null, inst.GetMethod ("get_T").Invoke (null, null)); } [Test] //bug #354047