fix corner case in unused (#4236)

fixes #4235
This commit is contained in:
Alex Lam S.L
2020-10-22 15:19:47 +01:00
committed by GitHub
parent 23ca7d675f
commit 9e40abeded
3 changed files with 50 additions and 3 deletions

View File

@@ -4774,9 +4774,11 @@ merge(Compressor.prototype, {
node.definitions.forEach(function(defn) { node.definitions.forEach(function(defn) {
var def = defn.name.definition(); var def = defn.name.definition();
var_defs_by_id.add(def.id, defn); var_defs_by_id.add(def.id, defn);
if (node instanceof AST_Var && def.orig[0] instanceof AST_SymbolCatch) {
var redef = def.redefined(); var redef = def.redefined();
if (redef && node instanceof AST_Var) var_defs_by_id.add(redef.id, defn); if (redef) var_defs_by_id.add(redef.id, defn);
if ((!drop_vars || (node instanceof AST_Const ? redef : def.const_redefs)) }
if ((!drop_vars || (node instanceof AST_Const ? def.redefined() : def.const_redefs))
&& !(def.id in in_use_ids)) { && !(def.id in in_use_ids)) {
in_use_ids[def.id] = true; in_use_ids[def.id] = true;
in_use.push(def); in_use.push(def);

View File

@@ -3085,3 +3085,30 @@ issue_4184: {
} }
expect_stdout: "42" expect_stdout: "42"
} }
issue_4235: {
options = {
inline: true,
reduce_vars: true,
unused: true,
varify: true,
}
input: {
(function() {
{
const f = 0;
}
(function f() {
var f = console.log(f);
})();
})();
}
expect: {
(function() {
f = console.log(f),
void 0;
var f;
})();
}
expect_stdout: "undefined"
}

View File

@@ -2859,3 +2859,21 @@ issue_4186: {
} }
expect_stdout: "NaN" expect_stdout: "NaN"
} }
issue_4235: {
options = {
ie8: true,
unused: true,
}
input: {
try {} catch (e) {}
console.log(function e() {
var e = 0;
}());
}
expect: {
try {} catch (e) {}
console.log(function e() {}());
}
expect_stdout: "undefined"
}