fix corner cases in dead_code & reduce_vars (#4213)

fixes #4212
This commit is contained in:
Alex Lam S.L
2020-10-13 17:09:17 +01:00
committed by GitHub
parent 0e234a25c5
commit c0c04c33bb
3 changed files with 70 additions and 20 deletions

View File

@@ -485,9 +485,10 @@ merge(Compressor.prototype, {
}
function safe_to_assign(tw, def, declare) {
if (def.fixed === undefined) return declare || all(def.orig, function(sym) {
if (!(declare || all(def.orig, function(sym) {
return !(sym instanceof AST_SymbolConst);
});
}))) return false;
if (def.fixed === undefined) return true;
if (def.fixed === null && def.safe_ids) {
def.safe_ids[def.id] = false;
delete def.safe_ids;
@@ -8557,7 +8558,9 @@ merge(Compressor.prototype, {
]).optimize(compressor);
}
}
} else if (self.left instanceof AST_SymbolRef) {
} else if (self.left instanceof AST_SymbolRef && all(self.left.definition().orig, function(sym) {
return !(sym instanceof AST_SymbolConst);
})) {
var parent;
if (self.operator == "=" && self.left.equivalent_to(self.right)
&& !((parent = compressor.parent()) instanceof AST_UnaryPrefix && parent.operator == "delete")) {