From: Alex Lam S.L Date: Tue, 9 Feb 2021 04:36:12 +0000 (+0000) Subject: fix corner case in `merge_vars` (#4629) X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=fcee32527bd251febeb7b45251d33756fcee207e;p=UglifyJS.git fix corner case in `merge_vars` (#4629) fixes #4628 --- diff --git a/lib/compress.js b/lib/compress.js index 1d8c71c7..c822a8e7 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -5276,8 +5276,13 @@ merge(Compressor.prototype, { return true; } if (node instanceof AST_VarDef) { - if (node.value) node.value.walk(tw); - node.name.mark_symbol(node.value ? function(node) { + var assigned = node.value; + if (assigned) { + assigned.walk(tw); + } else { + assigned = segment.block instanceof AST_ForEnumeration && segment.block.init === tw.parent(); + } + node.name.mark_symbol(assigned ? function(node) { if (!(node instanceof AST_SymbolDeclaration)) return; if (node instanceof AST_SymbolVar) { mark(node); diff --git a/test/compress/merge_vars.js b/test/compress/merge_vars.js index 1212be93..02d17d31 100644 --- a/test/compress/merge_vars.js +++ b/test/compress/merge_vars.js @@ -3183,3 +3183,32 @@ issue_4257: { "1", ] } + +issue_4628: { + options = { + merge_vars: true, + } + input: { + (function() { + try { + console; + } finally { + var b = a; + } + for (var a in "foo"); + console.log(b); + })(); + } + expect: { + (function() { + try { + console; + } finally { + var b = a; + } + for (var a in "foo"); + console.log(b); + })(); + } + expect_stdout: "undefined" +}