fix corner case in functions (#4234)

fixes #4233
This commit is contained in:
Alex Lam S.L
2020-10-22 03:13:11 +01:00
committed by GitHub
parent fd8c0212b8
commit 23ca7d675f
2 changed files with 42 additions and 1 deletions

View File

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

View File

@@ -5076,3 +5076,42 @@ issue_4186: {
}
expect_stdout: "function"
}
issue_4233: {
options = {
functions: true,
reduce_vars: true,
unused: true,
}
input: {
(function() {
try {
var a = function() {};
try {
throw 42;
} catch (a) {
(function() {
console.log(typeof a);
})();
var a;
}
} catch (e) {}
})();
}
expect: {
(function() {
try {
var a = function() {};
try {
throw 42;
} catch (a) {
(function() {
console.log(typeof a);
})();
var a;
}
} catch (e) {}
})();
}
expect_stdout: "number"
}