enhance dead_code (#3907)
This commit is contained in:
@@ -7739,6 +7739,10 @@ merge(Compressor.prototype, {
|
||||
if (compressor.option("dead_code")) {
|
||||
if (self.left instanceof AST_PropAccess) {
|
||||
if (self.operator == "=") {
|
||||
if (self.left.equivalent_to(self.right)
|
||||
&& (self.left instanceof AST_Dot || !self.left.property.has_side_effects(compressor))) {
|
||||
return self.right;
|
||||
}
|
||||
var exp = self.left.expression;
|
||||
if (exp instanceof AST_Lambda
|
||||
|| !compressor.has_directive("use strict")
|
||||
@@ -7751,6 +7755,7 @@ merge(Compressor.prototype, {
|
||||
}
|
||||
}
|
||||
} else if (self.left instanceof AST_SymbolRef) {
|
||||
if (self.operator == "=" && self.left.equivalent_to(self.right)) return self.right;
|
||||
if (self.left.is_immutable()) return strip_assignment();
|
||||
var def = self.left.definition();
|
||||
var scope = def.scope.resolve();
|
||||
|
||||
@@ -1168,3 +1168,28 @@ redundant_assignments: {
|
||||
}
|
||||
expect_stdout: "PASS PASS"
|
||||
}
|
||||
|
||||
self_assignments: {
|
||||
options = {
|
||||
dead_code: true,
|
||||
}
|
||||
input: {
|
||||
var a = "PASS", b = 0, l = [ "FAIL", "PASS" ], o = { p: "PASS" };
|
||||
a = a;
|
||||
l[0] = l[0];
|
||||
l[b] = l[b];
|
||||
l[b++] = l[b++];
|
||||
o.p = o.p;
|
||||
console.log(a, b, l[0], o.p);
|
||||
}
|
||||
expect: {
|
||||
var a = "PASS", b = 0, l = [ "FAIL", "PASS" ], o = { p: "PASS" };
|
||||
a;
|
||||
l[0];
|
||||
l[b];
|
||||
l[b++] = l[b++];
|
||||
o.p;
|
||||
console.log(a, b, l[0], o.p);
|
||||
}
|
||||
expect_stdout: "PASS 2 PASS PASS"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user