From 3c384cf9a8ed4230cf87f14ab017b613b38df628 Mon Sep 17 00:00:00 2001 From: "Alex Lam S.L" Date: Sun, 6 Dec 2020 10:30:50 +0000 Subject: [PATCH] fix corner case in `collapse_vars` (#4332) fixes #4331 --- lib/compress.js | 1 + test/compress/spread.js | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/lib/compress.js b/lib/compress.js index 82474b5c..e84465f6 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -2047,6 +2047,7 @@ merge(Compressor.prototype, { return (parent.tail_node() === node ? find_stop_value : find_stop_unused)(parent, level + 1); } if (parent instanceof AST_SimpleStatement) return find_stop_unused(parent, level + 1); + if (parent instanceof AST_Spread) return find_stop_value(parent, level + 1); if (parent instanceof AST_Switch) { if (parent.expression !== node) return node; return find_stop_value(parent, level + 1); diff --git a/test/compress/spread.js b/test/compress/spread.js index 01818dc3..21ccbe6d 100644 --- a/test/compress/spread.js +++ b/test/compress/spread.js @@ -399,3 +399,29 @@ issue_4329: { expect_stdout: "PASS" node_version: ">=8" } + +issue_4331: { + options = { + collapse_vars: true, + toplevel: true, + } + input: { + var a = "PASS", b; + console, + b = a; + (function() { + a++; + })(...a); + console.log(b); + } + expect: { + var a = "PASS", b; + console; + (function() { + a++; + })(...b = a); + console.log(b); + } + expect_stdout: "PASS" + node_version: ">=8" +} -- 2.34.1