babel/lib/6to5/transformation/transformers/es6-rest-parameters.js
Sebastian McKenzie 55054e45da Revert "Improve performance of rest parameter."
This reverts commit e5463cc2a97cafbf9d35656038f19b45dd75ffce.
2015-01-15 19:34:33 +11:00

37 lines
771 B
JavaScript

var util = require("../../util");
var t = require("../../types");
exports.Function = function (node, parent, file) {
if (!node.rest) return;
var rest = node.rest;
delete node.rest;
t.ensureBlock(node);
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([]))
]),
util.template("rest", {
ARGUMENTS: argsId,
ARRAY_KEY: arrKey,
START: start,
ARRAY: rest,
KEY: key
})
);
};