[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