fix tail call recursion on functions with less arguments than parameters - fixes #1938

This commit is contained in:
Sebastian McKenzie
2015-07-07 11:11:58 +01:00
parent a262e99abd
commit babc9c90b4
5 changed files with 70 additions and 8 deletions

View File

@@ -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;
}
}

View File

@@ -0,0 +1,9 @@
function foo(a, b) {
if (b) {
return foo(b);
} else {
return a;
}
}
assert.equal(foo("Michael", "Jackson"), "Jackson");

View File

@@ -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;
}
}
}