[svn] r6768: nemerle/trunk/ncc: testsuite/positive/refout.n typing/Typer2.n

malekith svnadmin at nemerle.org
Wed Oct 18 20:43:46 CEST 2006


Log:
Don't use self-tail-call for ref/out parameters. Fixes #777.

Author: malekith
Date: Wed Oct 18 20:43:45 2006
New Revision: 6768

Modified:
   nemerle/trunk/ncc/testsuite/positive/refout.n
   nemerle/trunk/ncc/typing/Typer2.n

Modified: nemerle/trunk/ncc/testsuite/positive/refout.n
==============================================================================
--- nemerle/trunk/ncc/testsuite/positive/refout.n	(original)
+++ nemerle/trunk/ncc/testsuite/positive/refout.n	Wed Oct 18 20:43:45 2006
@@ -54,6 +54,15 @@
     y = 42;
   }
 
+    // bug #777
+    public Recur( n : int, foo : ref long ) : long
+    {
+       if(n <= 0)
+          1L;
+       else
+          Recur(n-1, ref foo);
+    }
+
   Main () : void
   {
     mutable x = 3;

Modified: nemerle/trunk/ncc/typing/Typer2.n
==============================================================================
--- nemerle/trunk/ncc/typing/Typer2.n	(original)
+++ nemerle/trunk/ncc/typing/Typer2.n	Wed Oct 18 20:43:45 2006
@@ -1064,7 +1064,8 @@
                 }
 
               | _ =>
-                if ((ctx %&& Context.IsTail) && IsSelfCall (func))
+                if ((ctx %&& Context.IsTail) && IsSelfCall (func) && 
+                    parms.ForAll (p => p.kind == ParmKind.Normal))
                   TExpr.SelfTailCall (parms)
                 else {
                   def ctx =



More information about the svn mailing list