fix corner case in merge_vars (#5609)

This commit is contained in:
Alex Lam S.L
2022-08-09 03:18:11 +01:00
committed by GitHub
parent 2c3c4ec323
commit c32fe26b8d
3 changed files with 37 additions and 13 deletions

View File

@@ -6474,16 +6474,13 @@ Compressor.prototype.compress = function(node) {
} else {
assigned = segment.block instanceof AST_ForEnumeration && segment.block.init === tw.parent();
}
node.name.mark_symbol(assigned ? function(node) {
if (!(node instanceof AST_SymbolDeclaration)) return;
walk_destructured(AST_SymbolDeclaration, assigned ? function(node) {
if (node instanceof AST_SymbolVar) {
mark(node);
} else {
references[node.definition().id] = false;
}
return true;
} : function(node) {
if (!(node instanceof AST_SymbolDeclaration)) return;
var id = node.definition().id;
if (!(node instanceof AST_SymbolVar)) {
references[id] = false;
@@ -6492,8 +6489,7 @@ Compressor.prototype.compress = function(node) {
} else if (references[id]) {
references[id].push(node);
}
return true;
}, tw);
}, node.name);
return true;
}
if (node instanceof AST_While) {
@@ -6613,13 +6609,16 @@ Compressor.prototype.compress = function(node) {
pop();
node.name.walk(marker);
} else if (node instanceof AST_DestructuredKeyVal) {
if (node.key instanceof AST_Node) {
if (!(node.key instanceof AST_Node)) {
node.value.walk(marker);
} else if (node.value instanceof AST_PropAccess) {
push();
segment.block = node;
node.key.walk(tw);
node.value.walk(marker);
pop();
} else {
node.key.walk(tw);
node.value.walk(marker);
}
} else if (node instanceof symbol_type) {