fix corner case in reduce_vars (#5517)

fixes #5516
This commit is contained in:
Alex Lam S.L
2022-06-18 20:27:00 +01:00
committed by GitHub
parent 74e36e4456
commit 933ca9ddd8
3 changed files with 68 additions and 0 deletions

View File

@@ -11997,6 +11997,8 @@ Compressor.prototype.compress = function(node) {
if ((def.scope !== self.scope.resolve() || def.in_loop) if ((def.scope !== self.scope.resolve() || def.in_loop)
&& (!compressor.option("reduce_funcs") || def.escaped.depth == 1 || fixed.inlined)) { && (!compressor.option("reduce_funcs") || def.escaped.depth == 1 || fixed.inlined)) {
single_use = false; single_use = false;
} else if (def.redefined()) {
single_use = false;
} else if (recursive_ref(compressor, def, fixed)) { } else if (recursive_ref(compressor, def, fixed)) {
single_use = false; single_use = false;
} else if (fixed.name && fixed.name.definition() !== def) { } else if (fixed.name && fixed.name.definition() !== def) {

View File

@@ -1872,3 +1872,37 @@ issue_5476: {
} }
expect_stdout: "undefined" expect_stdout: "undefined"
} }
issue_5516: {
options = {
inline: true,
reduce_funcs: true,
reduce_vars: true,
unused: true,
}
input: {
console.log(typeof function() {
try {} catch (a) {
(function f() {
a;
})();
}
{
const a = function() {};
return a;
}
}());
}
expect: {
console.log(typeof function() {
try {} catch (a) {
void a;
}
{
const a = function() {};
return a;
}
}());
}
expect_stdout: "function"
}

View File

@@ -613,3 +613,35 @@ issue_4954: {
] ]
node_version: ">=4" node_version: ">=4"
} }
issue_5516: {
options = {
reduce_funcs: true,
reduce_vars: true,
unused: true,
varify: true,
}
input: {
"use strict";
console.log(typeof function() {
{
let a;
}
{
const a = function() {};
return a;
}
}());
}
expect: {
"use strict";
console.log(typeof function() {
{
const a = function() {};
return a;
}
}());
}
expect_stdout: "function"
node_version: ">=4"
}