add toConsumableArray helper for spread - fixes #757

This commit is contained in:
Sebastian McKenzie 2015-02-12 07:37:40 +11:00
parent ae344aa23e
commit faa10df84c
21 changed files with 55 additions and 49 deletions

View File

@ -41,6 +41,7 @@ File.helpers = [
"tagged-template-literal-loose", "tagged-template-literal-loose",
"interop-require", "interop-require",
"to-array", "to-array",
"to-consumable-array",
"sliced-to-array", "sliced-to-array",
"object-without-properties", "object-without-properties",
"has-own", "has-own",
@ -216,19 +217,21 @@ File.prototype.debug = function (msg) {
util.debug(parts); util.debug(parts);
}; };
File.prototype.toArray = function (node, i) { File.prototype.toArray = function (node, i, forceHelperName) {
if (t.isArrayExpression(node)) { if (t.isArrayExpression(node)) {
return node; return node;
} else if (t.isIdentifier(node) && node.name === "arguments") { } else if (t.isIdentifier(node) && node.name === "arguments") {
return t.callExpression(t.memberExpression(this.addHelper("slice"), t.identifier("call")), [node]); return t.callExpression(t.memberExpression(this.addHelper("slice"), t.identifier("call")), [node]);
} else { } else {
var declarationName = "to-array"; var helperName = "to-array";
var args = [node]; var args = [node];
if (i) { if (i === true) {
helperName = "to-consumable-array";
} else if (i) {
args.push(t.literal(i)); args.push(t.literal(i));
declarationName = "sliced-to-array"; helperName = "sliced-to-array";
} }
return t.callExpression(this.addHelper(declarationName), args); return t.callExpression(this.addHelper(helperName), args);
} }
}; };

View File

@ -1,9 +1,3 @@
(function (arr) { (function (arr) {
if (Array.isArray(arr)) { return Array.isArray(arr) ? arr : Array.from(arr);
var arr2 = [];
for (var i = 0; i < arr.length; i++) arr2.push(arr[i]);
return arr2;
} else {
return Array.from(arr);
}
}); });

View File

@ -0,0 +1,9 @@
(function (arr) {
if (Array.isArray(arr)) {
var arr2 = [];
for (var i = 0; i < arr.length; i++) arr2.push(arr[i]);
return arr2;
} else {
return Array.from(arr);
}
});

View File

@ -6,7 +6,7 @@ var t = require("../../../types");
exports.check = t.isSpreadElement; exports.check = t.isSpreadElement;
var getSpreadLiteral = function (spread, file) { var getSpreadLiteral = function (spread, file) {
return file.toArray(spread.argument); return file.toArray(spread.argument, true);
}; };
var hasSpread = function (nodes) { var hasSpread = function (nodes) {

View File

@ -1,6 +1,6 @@
"use strict"; "use strict";
var _toArray = function (arr) { if (Array.isArray(arr)) { var arr2 = []; for (var i = 0; i < arr.length; i++) arr2.push(arr[i]); return arr2; } else { return Array.from(arr); } }; var _toArray = function (arr) { return Array.isArray(arr) ? arr : Array.from(arr); };
var isSorted = function (_ref) { var isSorted = function (_ref) {
var _ref2 = _toArray(_ref); var _ref2 = _toArray(_ref);

View File

@ -1,5 +1,5 @@
"use strict"; "use strict";
var _toArray = function (arr) { if (Array.isArray(arr)) { var arr2 = []; for (var i = 0; i < arr.length; i++) arr2.push(arr[i]); return arr2; } else { return Array.from(arr); } }; var _toConsumableArray = function (arr) { if (Array.isArray(arr)) { var arr2 = []; for (var i = 0; i < arr.length; i++) arr2.push(arr[i]); return arr2; } else { return Array.from(arr); } };
var lyrics = [].concat(_toArray(parts), ["head", "and", "toes"]); var lyrics = [].concat(_toConsumableArray(parts), ["head", "and", "toes"]);

View File

@ -1,5 +1,5 @@
"use strict"; "use strict";
var _toArray = function (arr) { if (Array.isArray(arr)) { var arr2 = []; for (var i = 0; i < arr.length; i++) arr2.push(arr[i]); return arr2; } else { return Array.from(arr); } }; var _toConsumableArray = function (arr) { if (Array.isArray(arr)) { var arr2 = []; for (var i = 0; i < arr.length; i++) arr2.push(arr[i]); return arr2; } else { return Array.from(arr); } };
var a = [b].concat(_toArray(c), [d]); var a = [b].concat(_toConsumableArray(c), [d]);

View File

@ -1,5 +1,5 @@
"use strict"; "use strict";
var _toArray = function (arr) { if (Array.isArray(arr)) { var arr2 = []; for (var i = 0; i < arr.length; i++) arr2.push(arr[i]); return arr2; } else { return Array.from(arr); } }; var _toConsumableArray = function (arr) { if (Array.isArray(arr)) { var arr2 = []; for (var i = 0; i < arr.length; i++) arr2.push(arr[i]); return arr2; } else { return Array.from(arr); } };
var a = [b].concat(_toArray(c), [d, e], _toArray(f)); var a = [b].concat(_toConsumableArray(c), [d, e], _toConsumableArray(f));

View File

@ -1,5 +1,5 @@
"use strict"; "use strict";
var _toArray = function (arr) { if (Array.isArray(arr)) { var arr2 = []; for (var i = 0; i < arr.length; i++) arr2.push(arr[i]); return arr2; } else { return Array.from(arr); } }; var _toConsumableArray = function (arr) { if (Array.isArray(arr)) { var arr2 = []; for (var i = 0; i < arr.length; i++) arr2.push(arr[i]); return arr2; } else { return Array.from(arr); } };
var lyrics = ["head", "and", "toes"].concat(_toArray(parts)); var lyrics = ["head", "and", "toes"].concat(_toConsumableArray(parts));

View File

@ -1,6 +1,6 @@
"use strict"; "use strict";
var _obj; var _obj;
var _toArray = function (arr) { if (Array.isArray(arr)) { var arr2 = []; for (var i = 0; i < arr.length; i++) arr2.push(arr[i]); return arr2; } else { return Array.from(arr); } }; var _toConsumableArray = function (arr) { if (Array.isArray(arr)) { var arr2 = []; for (var i = 0; i < arr.length; i++) arr2.push(arr[i]); return arr2; } else { return Array.from(arr); } };
(_obj = obj)[method].apply(_obj, [foo, bar].concat(_toArray(args))); (_obj = obj)[method].apply(_obj, [foo, bar].concat(_toConsumableArray(args)));

View File

@ -1,6 +1,6 @@
"use strict"; "use strict";
var _obj; var _obj;
var _toArray = function (arr) { if (Array.isArray(arr)) { var arr2 = []; for (var i = 0; i < arr.length; i++) arr2.push(arr[i]); return arr2; } else { return Array.from(arr); } }; var _toConsumableArray = function (arr) { if (Array.isArray(arr)) { var arr2 = []; for (var i = 0; i < arr.length; i++) arr2.push(arr[i]); return arr2; } else { return Array.from(arr); } };
(_obj = obj)[method].apply(_obj, _toArray(args)); (_obj = obj)[method].apply(_obj, _toConsumableArray(args));

View File

@ -1,7 +1,7 @@
"use strict"; "use strict";
var _foob, _foob$test; var _foob, _foob$test;
var _toArray = function (arr) { if (Array.isArray(arr)) { var arr2 = []; for (var i = 0; i < arr.length; i++) arr2.push(arr[i]); return arr2; } else { return Array.from(arr); } }; var _toConsumableArray = function (arr) { if (Array.isArray(arr)) { var arr2 = []; for (var i = 0; i < arr.length; i++) arr2.push(arr[i]); return arr2; } else { return Array.from(arr); } };
(_foob = foob).add.apply(_foob, [foo, bar].concat(_toArray(numbers))); (_foob = foob).add.apply(_foob, [foo, bar].concat(_toConsumableArray(numbers)));
(_foob$test = foob.test).add.apply(_foob$test, [foo, bar].concat(_toArray(numbers))); (_foob$test = foob.test).add.apply(_foob$test, [foo, bar].concat(_toConsumableArray(numbers)));

View File

@ -1,7 +1,7 @@
"use strict"; "use strict";
var _foob, _foob$test; var _foob, _foob$test;
var _toArray = function (arr) { if (Array.isArray(arr)) { var arr2 = []; for (var i = 0; i < arr.length; i++) arr2.push(arr[i]); return arr2; } else { return Array.from(arr); } }; var _toConsumableArray = function (arr) { if (Array.isArray(arr)) { var arr2 = []; for (var i = 0; i < arr.length; i++) arr2.push(arr[i]); return arr2; } else { return Array.from(arr); } };
(_foob = foob).add.apply(_foob, _toArray(numbers)); (_foob = foob).add.apply(_foob, _toConsumableArray(numbers));
(_foob$test = foob.test).add.apply(_foob$test, _toArray(numbers)); (_foob$test = foob.test).add.apply(_foob$test, _toConsumableArray(numbers));

View File

@ -1,5 +1,5 @@
"use strict"; "use strict";
var _toArray = function (arr) { if (Array.isArray(arr)) { var arr2 = []; for (var i = 0; i < arr.length; i++) arr2.push(arr[i]); return arr2; } else { return Array.from(arr); } }; var _toConsumableArray = function (arr) { if (Array.isArray(arr)) { var arr2 = []; for (var i = 0; i < arr.length; i++) arr2.push(arr[i]); return arr2; } else { return Array.from(arr); } };
add.apply(undefined, _toArray(numbers).concat([foo, bar])); add.apply(undefined, _toConsumableArray(numbers).concat([foo, bar]));

View File

@ -1,5 +1,5 @@
"use strict"; "use strict";
var _toArray = function (arr) { if (Array.isArray(arr)) { var arr2 = []; for (var i = 0; i < arr.length; i++) arr2.push(arr[i]); return arr2; } else { return Array.from(arr); } }; var _toConsumableArray = function (arr) { if (Array.isArray(arr)) { var arr2 = []; for (var i = 0; i < arr.length; i++) arr2.push(arr[i]); return arr2; } else { return Array.from(arr); } };
add.apply(undefined, [foo].concat(_toArray(numbers), [bar])); add.apply(undefined, [foo].concat(_toConsumableArray(numbers), [bar]));

View File

@ -1,5 +1,5 @@
"use strict"; "use strict";
var _toArray = function (arr) { if (Array.isArray(arr)) { var arr2 = []; for (var i = 0; i < arr.length; i++) arr2.push(arr[i]); return arr2; } else { return Array.from(arr); } }; var _toConsumableArray = function (arr) { if (Array.isArray(arr)) { var arr2 = []; for (var i = 0; i < arr.length; i++) arr2.push(arr[i]); return arr2; } else { return Array.from(arr); } };
add.apply(undefined, [foo, bar].concat(_toArray(numbers))); add.apply(undefined, [foo, bar].concat(_toConsumableArray(numbers)));

View File

@ -1,5 +1,5 @@
"use strict"; "use strict";
var _toArray = function (arr) { if (Array.isArray(arr)) { var arr2 = []; for (var i = 0; i < arr.length; i++) arr2.push(arr[i]); return arr2; } else { return Array.from(arr); } }; var _toConsumableArray = function (arr) { if (Array.isArray(arr)) { var arr2 = []; for (var i = 0; i < arr.length; i++) arr2.push(arr[i]); return arr2; } else { return Array.from(arr); } };
add.apply(undefined, [foo].concat(_toArray(numbers), [bar, what], _toArray(test))); add.apply(undefined, [foo].concat(_toConsumableArray(numbers), [bar, what], _toConsumableArray(test)));

View File

@ -1,5 +1,5 @@
"use strict"; "use strict";
var _toArray = function (arr) { if (Array.isArray(arr)) { var arr2 = []; for (var i = 0; i < arr.length; i++) arr2.push(arr[i]); return arr2; } else { return Array.from(arr); } }; var _toConsumableArray = function (arr) { if (Array.isArray(arr)) { var arr2 = []; for (var i = 0; i < arr.length; i++) arr2.push(arr[i]); return arr2; } else { return Array.from(arr); } };
add.apply(undefined, _toArray(numbers)); add.apply(undefined, _toConsumableArray(numbers));

View File

@ -2,7 +2,7 @@
var _applyConstructor = function (Constructor, args) { var instance = Object.create(Constructor.prototype); var result = Constructor.apply(instance, args); return result != null && (typeof result == "object" || typeof result == "function") ? result : instance; }; var _applyConstructor = function (Constructor, args) { var instance = Object.create(Constructor.prototype); var result = Constructor.apply(instance, args); return result != null && (typeof result == "object" || typeof result == "function") ? result : instance; };
var _toArray = function (arr) { if (Array.isArray(arr)) { var arr2 = []; for (var i = 0; i < arr.length; i++) arr2.push(arr[i]); return arr2; } else { return Array.from(arr); } }; var _toConsumableArray = function (arr) { if (Array.isArray(arr)) { var arr2 = []; for (var i = 0; i < arr.length; i++) arr2.push(arr[i]); return arr2; } else { return Array.from(arr); } };
_applyConstructor(Numbers, _toArray(nums)); _applyConstructor(Numbers, _toConsumableArray(nums));
_applyConstructor(Numbers, [1].concat(_toArray(nums))); _applyConstructor(Numbers, [1].concat(_toConsumableArray(nums)));

View File

@ -1,5 +1,5 @@
"use strict"; "use strict";
var _toArray = function (arr) { if (Array.isArray(arr)) { var arr2 = []; for (var i = 0; i < arr.length; i++) arr2.push(arr[i]); return arr2; } else { return Array.from(arr); } }; var _toConsumableArray = function (arr) { if (Array.isArray(arr)) { var arr2 = []; for (var i = 0; i < arr.length; i++) arr2.push(arr[i]); return arr2; } else { return Array.from(arr); } };
[].concat(_toArray(foo)); [].concat(_toConsumableArray(foo));

View File

@ -7,7 +7,7 @@ System.register(["6to5-runtime/helpers"], function (_export) {
_to5Helpers = _to5RuntimeHelpers; _to5Helpers = _to5RuntimeHelpers;
}], }],
execute: function () { execute: function () {
foo.apply(undefined, _to5Helpers.toArray(bar)); foo.apply(undefined, _to5Helpers.toConsumableArray(bar));
} }
}; };
}); });