@@ -4300,18 +4300,18 @@ Compressor.prototype.compress = function(node) {
|
||||
if (prop instanceof AST_Node) return;
|
||||
if (!RE_POSITIVE_INTEGER.test("" + prop)) return;
|
||||
prop = +prop;
|
||||
var len = value.elements.length;
|
||||
var elements = value.elements;
|
||||
var len = elements.length;
|
||||
if (prop > len + 4) return;
|
||||
for (var i = Math.min(len, prop + 1); --i >= 0;) {
|
||||
if (elements[i] instanceof AST_Spread) return;
|
||||
}
|
||||
if (prop < len) {
|
||||
var element = value.elements[prop];
|
||||
if (element instanceof AST_Hole) {
|
||||
value.elements[prop] = node.right;
|
||||
} else {
|
||||
value.elements[prop] = make_sequence(node, [ element, node.right ]).optimize(compressor);
|
||||
}
|
||||
var element = elements[prop].drop_side_effect_free(compressor);
|
||||
elements[prop] = element ? make_sequence(node, [ element, node.right ]) : node.right;
|
||||
} else {
|
||||
while (prop > len) value.elements[len++] = make_node(AST_Hole, value);
|
||||
value.elements[prop] = node.right;
|
||||
while (prop > len) elements[len++] = make_node(AST_Hole, value);
|
||||
elements[prop] = node.right;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user