[svn] r5954: nemerle/trunk/ncc: testsuite/positive/generics.n typing/MType.n

malekith svnadmin at nemerle.org
Mon Nov 21 15:18:59 CET 2005


Log:
Look for tyvar's member also in supertypes. Resolves #574.

Author: malekith
Date: Mon Nov 21 15:18:57 2005
New Revision: 5954

Modified:
   nemerle/trunk/ncc/testsuite/positive/generics.n
   nemerle/trunk/ncc/typing/MType.n

Modified: nemerle/trunk/ncc/testsuite/positive/generics.n
==============================================================================
--- nemerle/trunk/ncc/testsuite/positive/generics.n	(original)
+++ nemerle/trunk/ncc/testsuite/positive/generics.n	Mon Nov 21 15:18:57 2005
@@ -147,6 +147,14 @@
     }
 }
 
+public module Bug574 {
+    m [T] (l : array [T]) : void where T : System.Reflection.Emit.TypeBuilder
+    {
+      foreach (e in l)
+        _ = e.HasElementType;
+    }
+}
+
 /*
 BEGIN-OUTPUT
 System.Collections.Generic.List`1[System.Int32]

Modified: nemerle/trunk/ncc/typing/MType.n
==============================================================================
--- nemerle/trunk/ncc/typing/MType.n	(original)
+++ nemerle/trunk/ncc/typing/MType.n	Mon Nov 21 15:18:57 2005
@@ -663,6 +663,9 @@
           foreach (t is MType.Class in tyvar.Constraints) // FIXME: what to do with "where 'a : 'b"?
             when (t.tycon.Equals (member.DeclaringType))
               Nemerle.Imperative.Return (t.TypeOfMember (member));
+          foreach (t is MType.Class in tyvar.Constraints)
+            when (t.tycon.SuperType (member.DeclaringType).IsSome)
+              Nemerle.Imperative.Return (t.TypeOfMember (member));
           Util.ice ($"not found for member $(member) with dt $(member.DeclaringType) -- am in $(this)")
         
         | _ =>



More information about the svn mailing list