fix corner case in collapse_vars (#4013)

fixes #4012
This commit is contained in:
Alex Lam S.L
2020-07-20 16:28:13 +01:00
committed by GitHub
parent 2021c2fa3e
commit a5db8cd14c
2 changed files with 40 additions and 1 deletions

View File

@@ -1197,7 +1197,9 @@ merge(Compressor.prototype, {
function find_loop_scope_try() { function find_loop_scope_try() {
var node = compressor.self(), level = 0; var node = compressor.self(), level = 0;
do { do {
if (node instanceof AST_Catch || node instanceof AST_Finally) { if (node instanceof AST_Catch) {
if (!compressor.parent(level).bfinally) level++;
} else if (node instanceof AST_Finally) {
level++; level++;
} else if (node instanceof AST_IterationStatement) { } else if (node instanceof AST_IterationStatement) {
in_loop = true; in_loop = true;

View File

@@ -8280,3 +8280,40 @@ issue_3976: {
} }
expect_stdout: "PASS" expect_stdout: "PASS"
} }
issue_4012: {
options = {
collapse_vars: true,
dead_code: true,
evaluate: true,
}
input: {
(function(a) {
try {
throw 2;
} catch (b) {
a = "PASS";
if (--b)
return;
if (3);
} finally {
console.log(a);
}
})();
}
expect: {
(function(a) {
try {
throw 2;
} catch (b) {
a = "PASS";
if (--b)
return;
if (3);
} finally {
console.log(a);
}
})();
}
expect_stdout: "PASS"
}