In ilasm/tests:
authorAnkit Jain <radical@corewars.org>
Fri, 13 Jan 2006 22:22:10 +0000 (22:22 -0000)
committerAnkit Jain <radical@corewars.org>
Fri, 13 Jan 2006 22:22:10 +0000 (22:22 -0000)
* gen-instr1.il: New. Test for using GenericParams as operands to
type instructions.

In ilasm/codegen:

* GenericParamRef.cs (GenericParamRef.Resolve): Set PeapiType of the instance
to the cached one.

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

mcs/ilasm/codegen/ChangeLog
mcs/ilasm/codegen/GenericParamRef.cs
mcs/ilasm/tests/ChangeLog
mcs/ilasm/tests/gen-instr1.il [new file with mode: 0644]

index bc54d88eb6fa08c81dfadb3b380d9855302b4491..5e938f0082d0bb20b92d5da59908414cbfca9ee6 100644 (file)
@@ -1,3 +1,8 @@
+2006-01-14  Ankit Jain  <jankit@novell.com>
+
+       * GenericParamRef.cs (GenericParamRef.Resolve): Set PeapiType of the instance
+       to the cached one.
+
 2006-01-13  Ankit Jain  <jankit@novell.com>
 
        * GenericParamRef.cs (GenericParamRef.Resolve): Ensure no duplicate
index de4e282826e753fbb1e64d083eb0b2f7776ae5a6..a3ff227155a48f613450045e3f918ed1a1aefd67 100644 (file)
@@ -69,9 +69,14 @@ namespace Mono.ILASM {
                                 return;
 
                         string key = param.Type.ToString () + param.Index.ToString ();
-                        if (param_table [key] == null) {
+                        PEAPI.GenParam val = (PEAPI.GenParam) param_table [key];
+                        if (val == null) {
                                 code_gen.PEFile.AddGenericParam (param);
                                 param_table [key] = param;
+                        } else {
+                                /* Set this instance's "type" to the cached
+                                   PEAPI.GenParam */
+                                type = (PEAPI.GenParam) val;
                         }
 
                         is_added = true;
index 3ebf7d7a7eb82a9fc9a553b6a6b280bb18e7a97c..34f6c922fe8bb0340f8914de0de076c7bf3db78f 100644 (file)
@@ -1,3 +1,8 @@
+2006-01-14  Ankit Jain  <jankit@novell.com>
+
+       * gen-instr1.il: New. Test for using GenericParams as operands to
+       type instructions.
+
 2006-01-11  Ankit Jain  <jankit@novell.com>
 
        * gen-nested2.il: New.
diff --git a/mcs/ilasm/tests/gen-instr1.il b/mcs/ilasm/tests/gen-instr1.il
new file mode 100644 (file)
index 0000000..e71cf9f
--- /dev/null
@@ -0,0 +1,48 @@
+// Test for type parameter as an operand for
+// a type instr
+// Here, initobj and box have operand : !0 
+
+.assembly extern mscorlib
+{
+  .ver 2:0:0:0
+}
+.assembly 'gpr'
+{
+  .custom instance void class [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() =  (
+               01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78   // ....T..WrapNonEx
+               63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01       ) // ceptionThrows.
+
+  .ver  0:0:0:0
+}
+.module gpr.dll
+
+  .class private auto ansi beforefieldinit g`1<T>
+       extends [mscorlib]System.Object
+  {
+    .method public hidebysig  specialname  rtspecialname 
+           instance default void .ctor ()  cil managed 
+    {
+       .maxstack 8
+       IL_0000:  ldarg.0 
+       IL_0001:  call instance void object::.ctor()
+       IL_0006:  ret 
+    }
+
+    .method public static  hidebysig 
+           default void foo ()  cil managed 
+    {
+       .maxstack 2
+       .locals init (
+               !0      V_0,
+               object  V_1,
+               !0 V_2)
+       IL_0000:  ldloca.s 2
+       IL_0002:  initobj !0
+       IL_0008:  ldloc.2 
+       IL_0009:  box !0
+       IL_000e:  stloc.1 
+       IL_000f:  ret 
+    }
+
+  }
+