[svn] r7700: nemerle/trunk/ncc: generation/ILEmitter.n testsuite/positive/int-ptr.n

malekith svnadmin at nemerle.org
Mon Jun 11 12:30:45 CEST 2007


Log:
Allow array load from intptr arrays, patch by msinger (#1024).

Author: malekith
Date: Mon Jun 11 12:30:44 2007
New Revision: 7700

Modified:
   nemerle/trunk/ncc/generation/ILEmitter.n
   nemerle/trunk/ncc/testsuite/positive/int-ptr.n

Modified: nemerle/trunk/ncc/generation/ILEmitter.n
==============================================================================
--- nemerle/trunk/ncc/generation/ILEmitter.n	(original)
+++ nemerle/trunk/ncc/generation/ILEmitter.n	Mon Jun 11 12:30:44 2007
@@ -2037,6 +2037,7 @@
             | "Int64" | "UInt64"         => OpCodes.Stelem_I8
             | "Single"                   => OpCodes.Stelem_R4
             | "Double"                   => OpCodes.Stelem_R8
+            | "IntPtr" | "UIntPtr"       => OpCodes.Stelem_I
             | _ => Util.ice ("System.Type IsPrimitive has lied")
           }
           _ilg.Emit (opcode);
@@ -2072,6 +2073,7 @@
               | "Int64" | "UInt64"  => OpCodes.Ldelem_I8
               | "Single"            => OpCodes.Ldelem_R4
               | "Double"            => OpCodes.Ldelem_R8
+              | "IntPtr" | "UIntPtr" => OpCodes.Ldelem_I
               | _ => Util.ice ("System.Type.IsPrimitive has lied")
             }
           else
@@ -2102,7 +2104,7 @@
             | "UInt64"                => OpCodes.Ldind_I8
             | "Single"                => OpCodes.Ldind_R4
             | "Double"                => OpCodes.Ldind_R8
-            | "IntPtr"                => OpCodes.Ldind_I
+            | "IntPtr" | "UIntPtr"    => OpCodes.Ldind_I
             | _ =>
               Util.ice (_method_name + ": not a recognized value type: " + ty.FullName);
           }

Modified: nemerle/trunk/ncc/testsuite/positive/int-ptr.n
==============================================================================
--- nemerle/trunk/ncc/testsuite/positive/int-ptr.n	(original)
+++ nemerle/trunk/ncc/testsuite/positive/int-ptr.n	Mon Jun 11 12:30:44 2007
@@ -3,3 +3,8 @@
  def x = System.IntPtr.Zero : object;
  def y = x :> System.IntPtr;
  assert (y.Equals (System.IntPtr.Zero));
\ No newline at end of file
+
+ // #1024
+ def qq : array[System.IntPtr] = array(5);
+ _ = qq[0];
+ assert (qq[1].Equals(System.IntPtr.Zero));



More information about the svn mailing list