fix tail call recursion on functions with less arguments than parameters - fixes #1938
This commit is contained in:
@@ -0,0 +1,15 @@
|
||||
function foo(a, b) {
|
||||
if (b) {
|
||||
return foo(b);
|
||||
} else {
|
||||
return a;
|
||||
}
|
||||
}
|
||||
|
||||
function foo(a, b) {
|
||||
if (b) {
|
||||
return foo("a", "b", "c");
|
||||
} else {
|
||||
return a;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
function foo(a, b) {
|
||||
if (b) {
|
||||
return foo(b);
|
||||
} else {
|
||||
return a;
|
||||
}
|
||||
}
|
||||
|
||||
assert.equal(foo("Michael", "Jackson"), "Jackson");
|
||||
@@ -0,0 +1,28 @@
|
||||
"use strict";
|
||||
|
||||
function foo(a, b) {
|
||||
if (b) {
|
||||
return foo(b);
|
||||
} else {
|
||||
return a;
|
||||
}
|
||||
}
|
||||
|
||||
function foo(_x, _x2) {
|
||||
var _again = true;
|
||||
|
||||
_function: while (_again) {
|
||||
var a = _x,
|
||||
b = _x2;
|
||||
_again = false;
|
||||
|
||||
if (b) {
|
||||
_x = "a";
|
||||
_x2 = "b";
|
||||
_again = true;
|
||||
continue _function;
|
||||
} else {
|
||||
return a;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user