fix rest parameter keys when on functions with params

This commit is contained in:
Sebastian McKenzie
2015-01-06 20:15:10 +11:00
parent ca2cbb02f1
commit 1696f77980
4 changed files with 19 additions and 5 deletions

View File

@@ -11,6 +11,11 @@
_Note: Gaps between patch versions are faulty/broken releases._
## 2.6.1
* **Bug Fix**
* Fix rest parameter keys when on functions with params.
## 2.6.1
* **Bug Fix**

View File

@@ -1,3 +1,3 @@
for (var KEY = START; KEY < ARGUMENTS.length; KEY++) {
ARRAY[KEY] = ARGUMENTS[KEY];
ARRAY[ARRAY_KEY] = ARGUMENTS[KEY];
}

View File

@@ -12,6 +12,14 @@ exports.Function = function (node, parent, file) {
var argsId = t.identifier("arguments");
argsId._ignoreAliasFunctions = true;
var start = t.literal(node.params.length);
var key = file.generateUidIdentifier("key");
var arrKey = key;
if (node.params.length) {
arrKey = t.binaryExpression("-", arrKey, start);
}
node.body.body.unshift(
t.variableDeclaration("var", [
t.variableDeclarator(rest, t.arrayExpression([]))
@@ -19,9 +27,10 @@ exports.Function = function (node, parent, file) {
util.template("rest", {
ARGUMENTS: argsId,
START: t.literal(node.params.length),
ARRAY_KEY: arrKey,
START: start,
ARRAY: rest,
KEY: file.generateUidIdentifier("key")
KEY: key
})
);
};

View File

@@ -4,7 +4,7 @@ var t = function (f) {
var items = [];
for (var _key = 1; _key < arguments.length; _key++) {
items[_key] = arguments[_key];
items[_key - 1] = arguments[_key];
}
};
@@ -12,6 +12,6 @@ function t(f) {
var items = [];
for (var _key2 = 1; _key2 < arguments.length; _key2++) {
items[_key2] = arguments[_key2];
items[_key2 - 1] = arguments[_key2];
}
}