Skip to content

Commit

Permalink
fix corner case in dead_code (#3991)
Browse files Browse the repository at this point in the history
  • Loading branch information
alexlamsl committed Jun 12, 2020
1 parent e946571 commit a82ca62
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 11 deletions.
15 changes: 4 additions & 11 deletions lib/compress.js
Expand Up @@ -7865,12 +7865,10 @@ merge(Compressor.prototype, {
if (self.left instanceof AST_PropAccess) {
if (self.operator == "=") {
if (self.__drop) {
var props = [];
flatten(self.left, props);
flatten(self.right, props);
return props.length == 0 ? make_node(AST_Number, self, {
value: 0
}) : make_sequence(self, props).optimize(compressor);
var exprs = [ self.left.expression ];
if (self.left instanceof AST_Sub) exprs.push(self.left.property);
exprs.push(self.right);
return make_sequence(self, exprs).optimize(compressor);
}
if (self.left.equivalent_to(self.right) && !self.left.has_side_effects(compressor)) {
return self.right;
Expand Down Expand Up @@ -7962,11 +7960,6 @@ merge(Compressor.prototype, {
}
return try_evaluate(compressor, self);

function flatten(node, props) {
if (!(node.expression instanceof AST_SymbolRef)) props.push(node.expression);
if (node instanceof AST_Sub) props.push(node.property);
}

function in_try(level, node) {
var right = self.right;
self.right = make_node(AST_Null, right);
Expand Down
25 changes: 25 additions & 0 deletions test/compress/dead-code.js
Expand Up @@ -1290,12 +1290,37 @@ self_assignments_5: {
}
expect: {
var i = 0, l = [ "FAIL", "PASS" ];
l[0];
l[0];
l[0] = l[1];
console.log(l[0], 2);
}
expect_stdout: "PASS 2"
}

self_assignments_6: {
options = {
dead_code: true,
pure_getters: "strict",
reduce_vars: true,
side_effects: true,
toplevel: true,
}
input: {
var o = {
p: "PASS",
};
console.log(o.p = o.p);
}
expect: {
var o = {
p: "PASS",
};
console.log(o.p);
}
expect_stdout: "PASS"
}

issue_3967: {
options = {
dead_code: true,
Expand Down

0 comments on commit a82ca62

Please sign in to comment.