fix properties for array literal with spread (#2499)

fixes #2498
This commit is contained in:
kzc
2017-11-23 13:04:26 -05:00
committed by Alex Lam S.L
parent 567cb0e4e3
commit 3d8341a7ab
2 changed files with 182 additions and 2 deletions

View File

@@ -4996,7 +4996,7 @@ merge(Compressor.prototype, {
&& prop instanceof AST_Number && expr instanceof AST_Array) {
var index = prop.getValue();
var elements = expr.elements;
if (index in elements) {
FLATTEN: if (index in elements) {
var flatten = true;
var values = [];
for (var i = elements.length; --i > index;) {
@@ -5007,10 +5007,13 @@ merge(Compressor.prototype, {
}
}
var retValue = elements[index];
if (retValue instanceof AST_Expansion) break FLATTEN;
retValue = retValue instanceof AST_Hole ? make_node(AST_Undefined, retValue) : retValue;
if (!flatten) values.unshift(retValue);
while (--i >= 0) {
var value = elements[i].drop_side_effect_free(compressor);
var value = elements[i];
if (value instanceof AST_Expansion) break FLATTEN;
value = value.drop_side_effect_free(compressor);
if (value) values.unshift(value);
else index--;
}