fix corner case in collapse_vars (#5200)

fixes #5199
This commit is contained in:
Alex Lam S.L
2021-11-27 17:43:43 +00:00
committed by GitHub
parent 12227ebbb0
commit 3f8f0e246e
2 changed files with 49 additions and 1 deletions

View File

@@ -2921,7 +2921,29 @@ merge(Compressor.prototype, {
if (value) {
lvalues.add(node.name, is_modified(compressor, tw, node, value, 0));
} else if (node instanceof AST_Lambda) {
if (!(tw.find_parent(AST_Call) || tw.find_parent(AST_Scope))) return true;
for (var level = 0, parent, child = node; parent = tw.parent(level++); child = parent) {
if (parent instanceof AST_Assign) {
if (parent.left === child) break;
if (parent.operator == "=") continue;
if (lazy_op[parent.operator.slice(0, -1)]) continue;
break;
}
if (parent instanceof AST_Binary) {
if (lazy_op[parent.operator]) continue;
break;
}
if (parent instanceof AST_Call) return;
if (parent instanceof AST_Scope) return;
if (parent instanceof AST_Sequence) {
if (parent.tail_node() === child) continue;
break;
}
if (parent instanceof AST_Template) {
if (parent.tag) return;
break;
}
}
return true;
} else if (find_arguments && node instanceof AST_Sub) {
scope.each_argname(function(argname) {
if (!compressor.option("reduce_vars") || argname.definition().assignments) {

View File

@@ -743,3 +743,29 @@ issue_5145_2: {
]
node_version: ">=4"
}
issue_5199: {
options = {
collapse_vars: true,
toplevel: true,
unused: true,
}
input: {
var a = function() {
console.log(typeof b);
}``;
{
const b = a;
}
}
expect: {
var a = function() {
console.log(typeof b);
}``;
{
const b = a;
}
}
expect_stdout: "undefined"
node_version: ">=4"
}