avoid double counting within single-use functions (#2785)

fixes #2783
This commit is contained in:
Alex Lam S.L
2018-01-15 16:42:15 +08:00
committed by GitHub
parent f96929c031
commit cbbe6fad60
2 changed files with 39 additions and 0 deletions

View File

@@ -5022,6 +5022,7 @@ merge(Compressor.prototype, {
} }
if (single_use && fixed) { if (single_use && fixed) {
if (fixed instanceof AST_Defun) { if (fixed instanceof AST_Defun) {
fixed._squeezed = true;
fixed = make_node(AST_Function, fixed, fixed); fixed = make_node(AST_Function, fixed, fixed);
} }
var value; var value;

View File

@@ -1951,3 +1951,41 @@ issue_2737_2: {
} }
expect_stdout: "PASS" expect_stdout: "PASS"
} }
issue_2783: {
options = {
collapse_vars: true,
conditionals: true,
if_return: true,
inline: true,
reduce_vars: true,
unused: true,
}
input: {
(function() {
return g;
function f(a) {
var b = a.b;
if (b) return b;
return a;
}
function g(o, i) {
while (i--) {
console.log(f(o));
}
}
})()({ b: "PASS" }, 1);
}
expect: {
(function() {
return function(o,i) {
while (i--) console.log(f(o));
};
function f(a) {
var b = a.b;
return b || a;
}
})()({ b: "PASS" },1);
}
expect_stdout: "PASS"
}