fix corner case in keep_fargs (#3620)

fixes #3619
This commit is contained in:
Alex Lam S.L
2019-12-02 12:28:17 +08:00
committed by GitHub
parent 9a6faf365b
commit bef856addb
2 changed files with 31 additions and 2 deletions

View File

@@ -5173,8 +5173,7 @@ merge(Compressor.prototype, {
&& !fn.uses_arguments
&& !fn.pinned()) {
var pos = 0, last = 0;
var drop_fargs = exp === fn && compressor.drop_fargs(fn, self)
&& (!fn.name || !fn.name.definition().recursive_refs);
var drop_fargs = exp === fn && !fn.name && compressor.drop_fargs(fn, self);
var side_effects = [];
for (var i = 0; i < self.args.length; i++) {
var trim = i >= fn.argnames.length;

View File

@@ -1425,3 +1425,33 @@ recursive_iife_3: {
}
expect_stdout: "PASS"
}
issue_3619: {
options = {
keep_fargs: false,
unused: true,
}
input: {
var a = 1, b = "FAIL";
(function f(c, d) {
function g() {
d && (b = "PASS", 0 <= --a && g());
0 <= --a && f(0, "function");
}
g();
})();
console.log(b);
}
expect: {
var a = 1, b = "FAIL";
(function f(c, d) {
function g() {
d && (b = "PASS", 0 <= --a && g());
0 <= --a && f(0, "function");
}
g();
})();
console.log(b);
}
expect_stdout: "PASS"
}