summaryrefslogtreecommitdiff
path: root/node_modules/@babel/plugin-transform-spread/lib/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/@babel/plugin-transform-spread/lib/index.js')
-rw-r--r--node_modules/@babel/plugin-transform-spread/lib/index.js27
1 files changed, 25 insertions, 2 deletions
diff --git a/node_modules/@babel/plugin-transform-spread/lib/index.js b/node_modules/@babel/plugin-transform-spread/lib/index.js
index f996f731..c1d8aac5 100644
--- a/node_modules/@babel/plugin-transform-spread/lib/index.js
+++ b/node_modules/@babel/plugin-transform-spread/lib/index.js
@@ -18,11 +18,34 @@ var _default = exports.default = (0, _helperPluginUtils.declare)((api, options)
})) {
return spread.argument;
} else {
- return scope.toArray(spread.argument, true, arrayLikeIsIterable);
+ const node = spread.argument;
+ if (_core.types.isIdentifier(node)) {
+ const binding = scope.getBinding(node.name);
+ if (binding != null && binding.constant && binding.path.isGenericType("Array")) {
+ return node;
+ }
+ }
+ if (_core.types.isArrayExpression(node)) {
+ return node;
+ }
+ if (_core.types.isIdentifier(node, {
+ name: "arguments"
+ })) {
+ return _core.template.expression.ast`
+ Array.prototype.slice.call(${node})
+ `;
+ }
+ const args = [node];
+ let helperName = "toConsumableArray";
+ if (arrayLikeIsIterable) {
+ args.unshift(scope.path.hub.addHelper(helperName));
+ helperName = "maybeArrayLike";
+ }
+ return _core.types.callExpression(scope.path.hub.addHelper(helperName), args);
}
}
function hasHole(spread) {
- return spread.elements.some(el => el === null);
+ return spread.elements.includes(null);
}
function hasSpread(nodes) {
for (let i = 0; i < nodes.length; i++) {