fix corner case in unused (#4913)

fixes #4912
This commit is contained in:
Alex Lam S.L
2021-05-07 12:38:22 +01:00
committed by GitHub
parent d464be3f3f
commit 19d232badb
2 changed files with 97 additions and 8 deletions

View File

@@ -6030,8 +6030,10 @@ merge(Compressor.prototype, {
}
if (node instanceof AST_Definitions) {
node.definitions.forEach(function(defn) {
var side_effects = defn.value
&& (defn.name instanceof AST_Destructured || defn.value.has_side_effects(compressor));
var value = defn.value;
var side_effects = value
&& (defn.name instanceof AST_Destructured || value.has_side_effects(compressor));
var shared = side_effects && value.tail_node().operator == "=";
defn.name.mark_symbol(function(name) {
if (!(name instanceof AST_SymbolDeclaration)) return;
var def = name.definition();
@@ -6046,13 +6048,17 @@ merge(Compressor.prototype, {
in_use_ids[def.id] = true;
in_use.push(def);
}
if (defn.value) {
if (!side_effects) initializations.add(def.id, defn.value);
if (value) {
if (!side_effects) {
initializations.add(def.id, value);
} else if (shared) {
verify_safe_usage(def, true, value_modified[def.id]);
}
assignments.add(def.id, defn);
}
return true;
}, tw);
if (side_effects) defn.value.walk(tw);
if (side_effects) value.walk(tw);
});
return true;
}
@@ -6755,14 +6761,15 @@ merge(Compressor.prototype, {
prop.walk(tw);
});
if (node instanceof AST_Assign) {
var right = get_rhs(node);
var right = get_rhs(node), shared = false;
if (init && node.write_only === true && node_def.scope === self && !right.has_side_effects(compressor)) {
initializations.add(node_def.id, right);
} else {
right.walk(tw);
shared = right.tail_node().operator == "=";
}
if (node.left === sym) {
if (!node.write_only) {
if (!node.write_only || shared) {
verify_safe_usage(node_def, true, value_modified[node_def.id]);
}
} else {