2008-06-11 Zoltan Varga <vargaz@gmail.com>
authorZoltan Varga <vargaz@gmail.com>
Wed, 11 Jun 2008 00:01:28 +0000 (00:01 -0000)
committerZoltan Varga <vargaz@gmail.com>
Wed, 11 Jun 2008 00:01:28 +0000 (00:01 -0000)
* TypeBuilderTest.cs (GetField): Add a test for calling GetField on an
open generic type.

svn path=/trunk/mcs/; revision=105527

mcs/class/corlib/Test/System.Reflection.Emit/ChangeLog
mcs/class/corlib/Test/System.Reflection.Emit/TypeBuilderTest.cs

index 6e89ef496857ff4cc090f334c98b7f95cde51815..63198df2f3739ad3862a40b19aa399fcb91ff9e8 100644 (file)
@@ -1,3 +1,8 @@
+2008-06-11  Zoltan Varga  <vargaz@gmail.com>
+
+       * TypeBuilderTest.cs (GetField): Add a test for calling GetField on an
+       open generic type.
+
 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
 
        * TypeBuilderTest.cs: Added test for bug #399047.
index 39718075b67525ad02251b54733baf93dd4eecba..01c62e15e82cd51ecb66005a7b7ca052c62e8a82 100644 (file)
@@ -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