From 61b66e83f1885dd8ad18ff510e38ab601ebf4c5c Mon Sep 17 00:00:00 2001 From: "Alex Lam S.L" Date: Mon, 20 Jul 2020 19:32:20 +0100 Subject: [PATCH] fix corner case in `ie8` (#4016) fixes #4015 --- lib/scope.js | 1 + test/compress/ie8.js | 45 ++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 44 insertions(+), 2 deletions(-) diff --git a/lib/scope.js b/lib/scope.js index 66314766..3297b8e6 100644 --- a/lib/scope.js +++ b/lib/scope.js @@ -230,6 +230,7 @@ AST_Toplevel.DEFMETHOD("figure_out_scope", function(options) { } else { new_def = scope.def_variable(node); } + old_def.defun = new_def.scope; old_def.orig.concat(old_def.references).forEach(function(node) { node.thedef = new_def; node.reference(options); diff --git a/test/compress/ie8.js b/test/compress/ie8.js index df06c625..2115dbc6 100644 --- a/test/compress/ie8.js +++ b/test/compress/ie8.js @@ -2544,12 +2544,12 @@ issue_3999: { expect: { (function() { (function f() { - for (var c = 0; c < 2; c++) + for (var o = 0; o < 2; o++) try { f[0]; } catch (f) { var f = 0; - console.log(c); + console.log(o); } })(); })(typeof f); @@ -2593,3 +2593,44 @@ issue_4001: { } expect_stdout: "undefined" } + +issue_4015: { + rename = true + mangle = { + ie8: true, + toplevel: true, + } + input: { + var n, a = 0, b; + function f() { + try { + throw 0; + } catch (b) { + (function g() { + (function b() { + a++; + })(); + })(); + } + } + f(); + console.log(a); + } + expect: { + var n, o = 0, c; + function t() { + try { + throw 0; + } catch (c) { + (function n() { + (function c() { + o++; + })(); + })(); + } + } + t(); + console.log(o); + } + expect_stdout: "1" +} -- 2.34.1