@@ -4265,8 +4265,17 @@ Compressor.prototype.compress = function(node) {
|
|||||||
prop = +prop;
|
prop = +prop;
|
||||||
var len = value.elements.length;
|
var len = value.elements.length;
|
||||||
if (prop > len + 4) return;
|
if (prop > len + 4) return;
|
||||||
while (len < prop) value.elements[len++] = make_node(AST_Hole, value);
|
if (prop < len) {
|
||||||
value.elements[prop] = node.right;
|
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);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
while (prop > len) value.elements[len++] = make_node(AST_Hole, value);
|
||||||
|
value.elements[prop] = node.right;
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ join_array_assignments_1: {
|
|||||||
}
|
}
|
||||||
expect: {
|
expect: {
|
||||||
console.log(function () {
|
console.log(function () {
|
||||||
var a = ["moz", "baz", "bar", , , , , "moo"];
|
var a = [("foo", "moz"), "baz", "bar", , , , , "moo"];
|
||||||
return a;
|
return a;
|
||||||
}().join());
|
}().join());
|
||||||
}
|
}
|
||||||
@@ -93,6 +93,7 @@ join_array_assignments_4: {
|
|||||||
options = {
|
options = {
|
||||||
evaluate: true,
|
evaluate: true,
|
||||||
join_vars: true,
|
join_vars: true,
|
||||||
|
side_effects: true,
|
||||||
}
|
}
|
||||||
input: {
|
input: {
|
||||||
console.log(function () {
|
console.log(function () {
|
||||||
@@ -1492,3 +1493,18 @@ issue_5175: {
|
|||||||
}
|
}
|
||||||
expect_stdout: "PASS PASS"
|
expect_stdout: "PASS PASS"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
issue_5831: {
|
||||||
|
options = {
|
||||||
|
evaluate: true,
|
||||||
|
join_vars: true,
|
||||||
|
}
|
||||||
|
input: {
|
||||||
|
var a = [ console.log("PASS") ];
|
||||||
|
a[0] = 42;
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
var a = [ (console.log("PASS"), 42) ];
|
||||||
|
}
|
||||||
|
expect_stdout: "PASS"
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user