From: Alex Lam S.L Date: Fri, 18 Dec 2020 16:52:37 +0000 (+0000) Subject: fix corner case in `merge_vars` (#4407) X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=44e494f16f5ce7fc1272e6ca6ae227f77623c2f9;p=UglifyJS.git fix corner case in `merge_vars` (#4407) fixes #4406 --- diff --git a/lib/compress.js b/lib/compress.js index 1249e620..ab68c45d 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -4801,7 +4801,7 @@ merge(Compressor.prototype, { if (node instanceof AST_Call) { var exp = node.expression; var tail = exp.tail_node(); - if (!(tail instanceof AST_Function)) return; + if (!is_function(tail)) return; if (exp !== tail) exp.expressions.slice(0, -1).forEach(function(node) { node.walk(tw); }); diff --git a/test/compress/async.js b/test/compress/async.js index 79189c7d..4fd16efd 100644 --- a/test/compress/async.js +++ b/test/compress/async.js @@ -567,3 +567,33 @@ issue_4377: { expect_stdout: "function" node_version: ">=8" } + +issue_4406: { + options = { + merge_vars: true, + } + input: { + A = "PASS"; + B = "FAIL"; + (function() { + var a, b; + a = A; + (async function({ + [console.log(a)]: {}, + }) {})((b = B) && { undefined: b }); + })(); + } + expect: { + A = "PASS"; + B = "FAIL"; + (function() { + var a, b; + a = A; + (async function({ + [console.log(a)]: {}, + }) {})((b = B) && { undefined: b }); + })(); + } + expect_stdout: "PASS" + node_version: ">=8" +}