[svn] r7746: nemerle/trunk/ncc: testsuite/positive/bug921.n typing/Solver.n

divan svnadmin at nemerle.org
Mon Jul 9 19:02:52 CEST 2007


Log:
Fix bug 921.

Author: divan
Date: Mon Jul  9 19:02:45 2007
New Revision: 7746

Added:
   nemerle/trunk/ncc/testsuite/positive/bug921.n
Modified:
   nemerle/trunk/ncc/typing/Solver.n

Added: nemerle/trunk/ncc/testsuite/positive/bug921.n
==============================================================================
--- (empty file)
+++ nemerle/trunk/ncc/testsuite/positive/bug921.n	Mon Jul  9 19:02:45 2007
@@ -0,0 +1,25 @@
+using System;
+using System.Console;
+using Nemerle.Utility;
+
+module Program
+{
+  Main() : void
+  {
+    def power(f, n) {
+        match(n) {
+            | 0 => (x => x)
+            | 1 => f
+            | _ => (x => f(power(f, n - 1)(x)))
+        }
+    }
+    def g(k) { k + 1 }
+    def i = power(g, 5)(3);
+    WriteLine(i);
+  }
+}
+/*
+BEGIN-OUTPUT
+8
+END-OUTPUT
+*/
\ No newline at end of file

Modified: nemerle/trunk/ncc/typing/Solver.n
==============================================================================
--- nemerle/trunk/ncc/typing/Solver.n	(original)
+++ nemerle/trunk/ncc/typing/Solver.n	Mon Jul  9 19:02:45 2007
@@ -302,6 +302,11 @@
               intersect_classes (MType.Class (tc1, args1), 
                                  MType.Class (tc2, args2))
 
+            | (MType.Fun (p1, r1), MType.Fun (p2, r2)) =>
+               _ = p1.Unify (p2);
+               _ = r1.Unify (r2);
+               [MType.Fun (p1, r1)]
+               
             | _ => 
               SaveError (messenger, 
                          $ "types $t1 and $t2 are not compatible "



More information about the svn mailing list