From 8b3259e0c29b33978c2e025be31e826045d6f6b8 Mon Sep 17 00:00:00 2001 From: "Alex Lam S.L" Date: Fri, 15 Mar 2019 16:06:47 +0800 Subject: [PATCH] fix corner case in `reduce_vars` (#3341) --- lib/compress.js | 2 +- test/compress/reduce_vars.js | 30 ++++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/lib/compress.js b/lib/compress.js index 43fd561e..1aa75569 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -5833,7 +5833,7 @@ merge(Compressor.prototype, { var fn = node.fixed_value(); if (!(fn instanceof AST_Lambda)) return; if (!fn.name) return; - if (!fixed.variables.get(fn.name.name)) return; + if (fixed.variables.get(fn.name.name) !== fn.name.definition()) 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/reduce_vars.js b/test/compress/reduce_vars.js index 32a06b10..27e53452 100644 --- a/test/compress/reduce_vars.js +++ b/test/compress/reduce_vars.js @@ -6686,3 +6686,33 @@ issues_3267_3: { } expect_stdout: "PASS" } + +issue_3297: { + options = { + reduce_vars: true, + unused: true, + } + input: { + (function() { + function f() { + var a; + var b = function a() { + console.log(a === b) && f(); + }; + b(); + } + f(); + })(); + } + expect: { + (function() { + (function f() { + var b = function a() { + console.log(a === b) && f(); + }; + b(); + })(); + })(); + } + expect_stdout: "true" +} -- 2.34.1