fix corner case in ie8 (#4963)

fixes #4962
This commit is contained in:
Alex Lam S.L
2021-05-25 17:12:31 +01:00
committed by GitHub
parent 1e787c556b
commit eff45eac0e
2 changed files with 54 additions and 2 deletions

View File

@@ -5281,7 +5281,7 @@ merge(Compressor.prototype, {
if (member(def.scope, scopes)) return true; if (member(def.scope, scopes)) return true;
if (scope && !def.redefined()) { if (scope && !def.redefined()) {
var scope_def = scope.find_variable(node.name); var scope_def = scope.find_variable(node.name);
if (def.undeclared ? !scope_def : scope_def === def) { if (scope_def ? scope_def === def : def.undeclared) {
result = "f"; result = "f";
return true; return true;
} }
@@ -7637,7 +7637,6 @@ merge(Compressor.prototype, {
}).init_vars(node), }).init_vars(node),
})); }));
exprs = [ node ]; exprs = [ node ];
} }
if (values) exprs.push(make_node(AST_Call, this, { if (values) exprs.push(make_node(AST_Call, this, {
expression: make_node(AST_Arrow, this, { expression: make_node(AST_Arrow, this, {

View File

@@ -1590,3 +1590,56 @@ issue_4951_2: {
expect_stdout: "PASS" expect_stdout: "PASS"
node_version: ">=14.6" node_version: ">=14.6"
} }
issue_4962_1: {
options = {
ie8: true,
inline: true,
reduce_vars: true,
unused: true,
}
input: {
(function() {
function f() {
while (console.log(typeof g));
}
class A {
static p = f();
}
})(function g() {});
}
expect: {
(function g() {}),
void function() {
while (console.log(typeof g));
}();
}
expect_stdout: "undefined"
node_version: ">=12"
}
issue_4962_2: {
options = {
ie8: true,
inline: true,
reduce_vars: true,
unused: true,
}
input: {
console.log(function f() {}(function g() {
function h() {
f;
}
class A {
static p = h();
}
}, typeof g));
}
expect: {
console.log(function f() {}(function g() {
f;
}));
}
expect_stdout: "undefined"
node_version: ">=12"
}