account for declaration assignment in collapse_vars (#2859)

fixes #2858
This commit is contained in:
Alex Lam S.L
2018-02-01 15:09:53 +08:00
committed by GitHub
parent 2a4c68be4f
commit 102f994b9d
2 changed files with 35 additions and 0 deletions

View File

@@ -990,6 +990,7 @@ merge(Compressor.prototype, {
|| node instanceof AST_Debugger
|| node instanceof AST_IterationStatement && !(node instanceof AST_For)
|| node instanceof AST_Try
|| node instanceof AST_VarDef && node.value && side_effects && !references_in_scope(node.name.definition())
|| node instanceof AST_With
|| parent instanceof AST_For && node !== parent.init
|| (side_effects || !replace_all)

View File

@@ -4190,3 +4190,37 @@ return_3: {
}
expect_stdout: "0"
}
issue_2858: {
options = {
collapse_vars: true,
unused: true,
}
input: {
var b;
(function() {
function f() {
a++;
}
f();
var c = f();
var a = void 0;
c || (b = a);
})();
console.log(b);
}
expect: {
var b;
(function() {
function f() {
a++;
}
f();
var c = f();
var a = void 0;
c || (b = a);
})();
console.log(b);
}
expect_stdout: "undefined"
}