No unneeded empty arrays in transform spread (#6763)

* No unneeded empty arrays in transform spread

Since Array.prototype.concat creates a new array from inputs, there's
no need to call it from a new empty array ([].concat()).

* [fixup] simplify detection of new array
This commit is contained in:
Anatoli Papirovski
2017-11-09 14:51:56 -05:00
committed by Henry Zhu
parent 617d35245f
commit aefbb1380e
7 changed files with 10 additions and 10 deletions

View File

@@ -15,7 +15,7 @@ var b = [...a, 'foo'];
```js
var a = [ 'a', 'b', 'c' ];
var b = [].concat(a, [ 'foo' ]);
var b = a.concat([ 'foo' ]);
```
## Installation

View File

@@ -52,11 +52,11 @@ export default function(api, options) {
if (!hasSpread(elements)) return;
const nodes = build(elements, scope, state);
let first = nodes.shift();
const first = nodes.shift();
if (!t.isArrayExpression(first)) {
nodes.unshift(first);
first = t.arrayExpression([]);
if (nodes.length === 0 && first !== elements[0].argument) {
path.replaceWith(first);
return;
}
path.replaceWith(

View File

@@ -1,5 +1,5 @@
function foo() {
return bar([].concat(Array.prototype.slice.call(arguments)));
return bar(Array.prototype.slice.call(arguments));
}
function bar(one, two, three) {

View File

@@ -1 +1 @@
var lyrics = [].concat(babelHelpers.toConsumableArray(parts), ["head", "and", "toes"]);
var lyrics = babelHelpers.toConsumableArray(parts).concat(["head", "and", "toes"]);

View File

@@ -3,5 +3,5 @@ function foo() {
bar[_key] = arguments[_key];
}
return [].concat(bar);
return bar.concat();
}

View File

@@ -1 +1 @@
[].concat(babelHelpers.toConsumableArray(foo));
babelHelpers.toConsumableArray(foo);