From: Alex Lam S.L Date: Wed, 5 Feb 2020 20:03:22 +0000 (+0000) Subject: fix corner case in `ie8` & `reduce_vars` (#3706) X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=c93ca6ee5386f824e60bea6563d249c13854f171;p=UglifyJS.git fix corner case in `ie8` & `reduce_vars` (#3706) fixes #3703 --- diff --git a/lib/compress.js b/lib/compress.js index 32d0b67d..b190ef9c 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -6964,9 +6964,9 @@ merge(Compressor.prototype, { var fn = node.fixed_value(); if (!(fn instanceof AST_Lambda)) return; if (!fn.name) return; - var fn_def = fn.name.definition(); - if (fn_def.scope !== fn.name.scope) return; - if (fixed.variables.get(fn.name.name) !== fn_def) return; + if (fn.name.definition() !== def) return; + if (def.scope !== fn.name.scope) return; + if (fixed.variables.get(fn.name.name) !== def) return; fn.name = fn.name.clone(); var value_def = value.variables.get(fn.name.name) || value.def_function(fn.name); node.thedef = value_def; diff --git a/test/compress/ie8.js b/test/compress/ie8.js index f8ce35dc..7ec8037f 100644 --- a/test/compress/ie8.js +++ b/test/compress/ie8.js @@ -2361,3 +2361,40 @@ issue_3542: { } expect_stdout: "1" } + +issue_3703: { + options = { + ie8: true, + reduce_vars: true, + toplevel: true, + unused: true, + } + input: { + var a = "PASS"; + function f() { + var b; + function g() { + a = "FAIL"; + } + var c = g; + function h() { + f; + } + a ? b |= c : b.p; + } + f(); + console.log(a); + } + expect: { + var a = "PASS"; + (function() { + var b; + var c = function g() { + a = "FAIL"; + }; + a ? b |= c : b.p; + })(); + console.log(a); + } + expect_stdout: "PASS" +}