From 0b2573c3fad6a66ae388ca115d0ba528b8a9e20c Mon Sep 17 00:00:00 2001 From: "Alex Lam S.L" Date: Thu, 30 Sep 2021 14:43:34 +0100 Subject: [PATCH] fix corner case in `templates` (#5137) fixes #5136 --- lib/compress.js | 18 +++++++++--------- test/compress/templates.js | 14 ++++++++++++++ 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/lib/compress.js b/lib/compress.js index a66e72ca..4657de23 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -11374,15 +11374,6 @@ merge(Compressor.prototype, { if (!tag) status = typeof trimmed; } if (!tag && strs.length > 1) { - if (strs[0] == "") return make_node(AST_Binary, self, { - operator: "+", - left: exprs[0], - right: make_node(AST_Template, self, { - expressions: exprs.slice(1), - strings: strs.slice(1), - tag: tag, - }).transform(compressor), - }).optimize(compressor); if (strs[strs.length - 1] == "") return make_node(AST_Binary, self, { operator: "+", left: make_node(AST_Template, self, { @@ -11392,6 +11383,15 @@ merge(Compressor.prototype, { }).transform(compressor), right: exprs[exprs.length - 1], }).optimize(compressor); + if (strs[0] == "") return make_node(AST_Binary, self, { + operator: "+", + left: exprs[0], + right: make_node(AST_Template, self, { + expressions: exprs.slice(1), + strings: strs.slice(1), + tag: tag, + }).transform(compressor), + }).optimize(compressor); } self.expressions = exprs; self.strings = strs; diff --git a/test/compress/templates.js b/test/compress/templates.js index 81bc8610..cbd4b85b 100644 --- a/test/compress/templates.js +++ b/test/compress/templates.js @@ -685,3 +685,17 @@ issue_5125_8: { expect_stdout: "undefinedundefinedundefined PASS" node_version: ">=4" } + +issue_5136: { + options = { + templates: true, + } + input: { + console.log(`${A = []}${A[0] = 42}`); + } + expect: { + console.log(`` + (A = []) + (A[0] = 42)); + } + expect_stdout: "42" + node_version: ">=4" +}