From: Alex Lam S.L Date: Sun, 14 Jun 2020 17:29:01 +0000 (+0800) Subject: fix corner case in `rename` (#4000) X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=8b2cfd45fa8dd4f01d9535ad43bc37ce4953e78d;p=UglifyJS.git fix corner case in `rename` (#4000) fixes #3999 --- diff --git a/lib/scope.js b/lib/scope.js index 2f49df76..66314766 100644 --- a/lib/scope.js +++ b/lib/scope.js @@ -543,11 +543,8 @@ AST_Toplevel.DEFMETHOD("expand_names", function(options) { var redef = def.redefined(); var name = redef ? redef.rename || redef.name : next_name(); def.rename = name; - def.orig.forEach(function(sym) { - sym.name = name; - }); - def.references.forEach(function(sym) { - sym.name = name; + def.orig.concat(def.references).forEach(function(sym) { + if (sym.definition() === def) sym.name = name; }); } }); diff --git a/test/compress/ie8.js b/test/compress/ie8.js index e11e3651..c0049766 100644 --- a/test/compress/ie8.js +++ b/test/compress/ie8.js @@ -2223,13 +2223,13 @@ issue_3523_rename_ie8: { expect: { var a = 0, b, c = "FAIL"; (function() { - var c, n, t, o, a, r, f, i, u, e, h, l, v, y; + var c, n, t, o, a, r, e, f, i, u, h, l, v, y; })(); try { throw 0; } catch (e) { (function() { - (function n() { + (function e() { c = "PASS"; })(); })(); @@ -2522,3 +2522,40 @@ issue_3918: { } expect_stdout: "PASS" } + +issue_3999: { + rename = true + mangle = { + ie8: true, + } + input: { + (function() { + (function f() { + for (var i = 0; i < 2; i++) + try { + f[0]; + } catch (f) { + var f = 0; + console.log(i); + } + })(); + })(typeof f); + } + expect: { + (function() { + (function f() { + for (var c = 0; c < 2; c++) + try { + f[0]; + } catch (f) { + var f = 0; + console.log(c); + } + })(); + })(typeof f); + } + expect_stdout: [ + "0", + "1", + ] +}