[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