replace slice with a loop in rest parameters
This commit is contained in:
3
lib/6to5/transformation/templates/rest.js
Normal file
3
lib/6to5/transformation/templates/rest.js
Normal file
@@ -0,0 +1,3 @@
|
||||
for (var KEY = START; KEY < ARGUMENTS.length; KEY++) {
|
||||
ARRAY[$__0] = ARGUMENTS[KEY];
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
var t = require("../../types");
|
||||
var util = require("../../util");
|
||||
var t = require("../../types");
|
||||
|
||||
exports.Function = function (node, parent, file) {
|
||||
exports.Function = function (node, parent, file, scope) {
|
||||
if (!node.rest) return;
|
||||
|
||||
var rest = node.rest;
|
||||
@@ -8,15 +9,19 @@ exports.Function = function (node, parent, file) {
|
||||
|
||||
t.ensureBlock(node);
|
||||
|
||||
var call = file.toArray(t.identifier("arguments"));
|
||||
var argsId = t.identifier("arguments");
|
||||
argsId._ignoreAliasFunctions = true;
|
||||
|
||||
if (node.params.length) {
|
||||
call.arguments.push(t.literal(node.params.length));
|
||||
}
|
||||
node.body.body.unshift(
|
||||
t.variableDeclaration("var", [
|
||||
t.variableDeclarator(rest, t.arrayExpression([]))
|
||||
]),
|
||||
|
||||
call._ignoreAliasFunctions = true;
|
||||
|
||||
node.body.body.unshift(t.variableDeclaration("var", [
|
||||
t.variableDeclarator(rest, call)
|
||||
]));
|
||||
util.template("rest", {
|
||||
ARGUMENTS: argsId,
|
||||
START: t.literal(node.params.length),
|
||||
ARRAY: rest,
|
||||
KEY: file.generateUidIdentifier("key")
|
||||
})
|
||||
);
|
||||
};
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
"use strict";
|
||||
|
||||
var _slice = Array.prototype.slice;
|
||||
var concat = function () {
|
||||
var arrs = _slice.call(arguments);
|
||||
var arrs = [];
|
||||
|
||||
for (var _key = 0; _key < arguments.length; _key++) {
|
||||
arrs[$__0] = arguments[_key];
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1,10 +1,17 @@
|
||||
"use strict";
|
||||
|
||||
var _slice = Array.prototype.slice;
|
||||
var t = function (f) {
|
||||
var items = _slice.call(arguments, 1);
|
||||
var items = [];
|
||||
|
||||
for (var _key = 1; _key < arguments.length; _key++) {
|
||||
items[$__0] = arguments[_key];
|
||||
}
|
||||
};
|
||||
|
||||
function t(f) {
|
||||
var items = _slice.call(arguments, 1);
|
||||
var items = [];
|
||||
|
||||
for (var _key2 = 1; _key2 < arguments.length; _key2++) {
|
||||
items[$__0] = arguments[_key2];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,10 +1,17 @@
|
||||
"use strict";
|
||||
|
||||
var _slice = Array.prototype.slice;
|
||||
var t = function () {
|
||||
var items = _slice.call(arguments);
|
||||
var items = [];
|
||||
|
||||
for (var _key = 0; _key < arguments.length; _key++) {
|
||||
items[$__0] = arguments[_key];
|
||||
}
|
||||
};
|
||||
|
||||
function t() {
|
||||
var items = _slice.call(arguments);
|
||||
var items = [];
|
||||
|
||||
for (var _key2 = 0; _key2 < arguments.length; _key2++) {
|
||||
items[$__0] = arguments[_key2];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
var _slice = Array.prototype.slice;
|
||||
function foo() {
|
||||
return bar.apply(null, ["test"].concat(_slice.call(arguments)));
|
||||
return bar.apply(undefined, ["test"].concat(_slice.call(arguments)));
|
||||
}
|
||||
|
||||
function bar(one, two, three) {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
"use strict";
|
||||
|
||||
function foo() {
|
||||
return bar.apply(null, arguments);
|
||||
return bar.apply(undefined, arguments);
|
||||
}
|
||||
|
||||
function bar(one, two, three) {
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
"use strict";
|
||||
|
||||
f.apply(null, [1, 2, 3]);
|
||||
f.apply(undefined, [1, 2, 3]);
|
||||
|
||||
@@ -4,4 +4,4 @@ var _toArray = function (arr) {
|
||||
return Array.isArray(arr) ? arr : Array.from(arr);
|
||||
};
|
||||
|
||||
add.apply(null, _toArray(numbers).concat([foo, bar]));
|
||||
add.apply(undefined, _toArray(numbers).concat([foo, bar]));
|
||||
|
||||
@@ -4,4 +4,4 @@ var _toArray = function (arr) {
|
||||
return Array.isArray(arr) ? arr : Array.from(arr);
|
||||
};
|
||||
|
||||
add.apply(null, [foo].concat(_toArray(numbers), [bar]));
|
||||
add.apply(undefined, [foo].concat(_toArray(numbers), [bar]));
|
||||
|
||||
@@ -4,4 +4,4 @@ var _toArray = function (arr) {
|
||||
return Array.isArray(arr) ? arr : Array.from(arr);
|
||||
};
|
||||
|
||||
add.apply(null, [foo, bar].concat(_toArray(numbers)));
|
||||
add.apply(undefined, [foo, bar].concat(_toArray(numbers)));
|
||||
|
||||
@@ -4,4 +4,4 @@ var _toArray = function (arr) {
|
||||
return Array.isArray(arr) ? arr : Array.from(arr);
|
||||
};
|
||||
|
||||
add.apply(null, [foo].concat(_toArray(numbers), [bar, what], _toArray(test)));
|
||||
add.apply(undefined, [foo].concat(_toArray(numbers), [bar, what], _toArray(test)));
|
||||
|
||||
@@ -4,4 +4,4 @@ var _toArray = function (arr) {
|
||||
return Array.isArray(arr) ? arr : Array.from(arr);
|
||||
};
|
||||
|
||||
add.apply(null, _toArray(numbers));
|
||||
add.apply(undefined, _toArray(numbers));
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
function foo(...test) {
|
||||
|
||||
function foo() {
|
||||
test("bar", ...arguments);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
"use strict";
|
||||
|
||||
function foo() {
|
||||
var test = customNamespace.slice.call(arguments);
|
||||
test.apply(undefined, ["bar"].concat(customNamespace.slice.call(arguments)));
|
||||
}
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
function foo(...test) {
|
||||
|
||||
function foo() {
|
||||
test("bar", ...arguments);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
"use strict";
|
||||
|
||||
function foo() {
|
||||
var test = to5Runtime.slice.call(arguments);
|
||||
test.apply(undefined, ["bar"].concat(to5Runtime.slice.call(arguments)));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user