fix corner case in reduce_funcs (#5049)

fixes #5048
This commit is contained in:
Alex Lam S.L
2021-07-04 08:09:05 +01:00
committed by GitHub
parent f4ae267920
commit f5dbb672b9
2 changed files with 22 additions and 2 deletions

View File

@@ -10913,9 +10913,10 @@ merge(Compressor.prototype, {
return self;
});
function recursive_ref(compressor, def) {
function recursive_ref(compressor, def, fn) {
var level = 0, node = compressor.self();
do {
if (node === fn) return node;
if (is_lambda(node) && node.name && node.name.definition() === def) return node;
} while (node = compressor.parent(level++));
}
@@ -10951,7 +10952,7 @@ merge(Compressor.prototype, {
if ((def.scope !== self.scope.resolve() || def.in_loop)
&& (!compressor.option("reduce_funcs") || def.escaped.depth == 1 || fixed.inlined)) {
single_use = false;
} else if (recursive_ref(compressor, def)) {
} else if (recursive_ref(compressor, def, fixed)) {
single_use = false;
} else if (fixed.name && fixed.name.definition() !== def) {
single_use = false;

View File

@@ -7677,3 +7677,22 @@ issue_4949: {
}
expect_stdout: "0 1"
}
issue_5048: {
options = {
reduce_funcs: true,
reduce_vars: true,
unused: true,
}
input: {
console.log(function() {
var a = function() {
return a + 42;
};
}());
}
expect: {
console.log(function() {}());
}
expect_stdout: "undefined"
}