fix corner case in collapse_vars

fixes #3976
This commit is contained in:
alexlamsl 2020-06-09 16:31:37 +08:00
parent d764b6cc3b
commit 724cdbd80e
2 changed files with 39 additions and 1 deletions

View File

@ -1468,7 +1468,7 @@ merge(Compressor.prototype, {
if (node instanceof AST_Call) { if (node instanceof AST_Call) {
var fn = node.expression; var fn = node.expression;
if (fn instanceof AST_SymbolRef) { if (fn instanceof AST_SymbolRef) {
if (fn.definition().recursive_refs > 0) return true; if (recursive_ref(compressor, fn.definition())) return true;
fn = fn.fixed_value(); fn = fn.fixed_value();
} }
if (!(fn instanceof AST_Lambda)) return true; if (!(fn instanceof AST_Lambda)) return true;

View File

@ -8242,3 +8242,41 @@ issue_3971: {
} }
expect_stdout: "1" expect_stdout: "1"
} }
issue_3976: {
options = {
collapse_vars: true,
conditionals: true,
evaluate: true,
inline: true,
reduce_vars: true,
unused: true,
}
input: {
function f() {
console.log("FAIL");
}
(function(a) {
function g() {
if ((a = 0) || f(0)) {
f();
} else {
f();
}
if (h(a = 0));
}
function h() {
g();
}
})();
console.log("PASS");
}
expect: {
function f() {
console.log("FAIL");
}
void 0;
console.log("PASS");
}
expect_stdout: "PASS"
}