[svn] r5931: nemerle/trunk/ncc: testsuite/frommcs/gtest-094.n testsuite/positive/infer.n typing/TyVarEnv.n

malekith svnadmin at nemerle.org
Sat Nov 12 22:47:16 CET 2005


Log:
Use proper type to subtype in nested type parameters lookup. Resolves #527.

Author: malekith
Date: Sat Nov 12 22:47:15 2005
New Revision: 5931

Modified:
   nemerle/trunk/ncc/testsuite/frommcs/gtest-094.n
   nemerle/trunk/ncc/testsuite/positive/infer.n
   nemerle/trunk/ncc/typing/TyVarEnv.n

Modified: nemerle/trunk/ncc/testsuite/frommcs/gtest-094.n
==============================================================================
--- nemerle/trunk/ncc/testsuite/frommcs/gtest-094.n	(original)
+++ nemerle/trunk/ncc/testsuite/frommcs/gtest-094.n	Sat Nov 12 22:47:15 2005
@@ -1,5 +1,3 @@
-// FIXME: #527
-// NO-TEST
 public class LinkedList[T]
 {
 	protected class Node

Modified: nemerle/trunk/ncc/testsuite/positive/infer.n
==============================================================================
--- nemerle/trunk/ncc/testsuite/positive/infer.n	(original)
+++ nemerle/trunk/ncc/testsuite/positive/infer.n	Sat Nov 12 22:47:15 2005
@@ -38,6 +38,30 @@
     ignore (bb ([1], f2));
     def _ = [ ([["foo"]], "foo") ] : list[_];
     System.Console.WriteLine (Set[int].A.B.x.GetType ());
+    Bug527.Run ();
+  }
+}
+
+module Bug527 {
+  public class LinkedList[T]
+  {
+          public class Node
+          { }
+  }
+
+  public class HashedLinkedList[T] : LinkedList[T]
+  {
+           static public mutable node : Node = Node (); // error here
+  }
+
+  public class XHashedLinkedList[T] : LinkedList[LinkedList[T]]
+  {
+           static public mutable node : Node = Node (); // error here
+  }
+
+  public static Run () : void {
+    System.Console.WriteLine (HashedLinkedList[int].node.GetType());
+    System.Console.WriteLine (XHashedLinkedList[int].node.GetType());
   }
 }
 
@@ -154,5 +178,7 @@
 /*
 BEGIN-OUTPUT
 M+Set`1+A[System.Int32]
+Bug527+LinkedList`1+Node[System.Int32]
+Bug527+LinkedList`1+Node[Bug527+LinkedList`1[System.Int32]]
 END-OUTPUT
 */

Modified: nemerle/trunk/ncc/typing/TyVarEnv.n
==============================================================================
--- nemerle/trunk/ncc/typing/TyVarEnv.n	(original)
+++ nemerle/trunk/ncc/typing/TyVarEnv.n	Sat Nov 12 22:47:15 2005
@@ -136,7 +136,7 @@
                   else if (nesting.LookupMemberAvailable && 
                            nesting.LookupMember (ti.Name).Contains (ti))
                     curtc.NestingSubst (nesting)
-                      .Apply (nesting.SubtypingSubst (ti)
+                      .Apply (nesting.SubtypingSubst (ti.DeclaringType)
                         .Apply (ti.DeclaringType.GetMemType ()).Fix ())
                   else find_nesting (nesting.DeclaringType)
                 }



More information about the svn mailing list