Skip to content

Commit 0b2573c

Browse files
authored
fix corner case in templates (#5137)
fixes #5136
1 parent 1575210 commit 0b2573c

2 files changed

Lines changed: 23 additions & 9 deletions

File tree

lib/compress.js

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11374,15 +11374,6 @@ merge(Compressor.prototype, {
1137411374
if (!tag) status = typeof trimmed;
1137511375
}
1137611376
if (!tag && strs.length > 1) {
11377-
if (strs[0] == "") return make_node(AST_Binary, self, {
11378-
operator: "+",
11379-
left: exprs[0],
11380-
right: make_node(AST_Template, self, {
11381-
expressions: exprs.slice(1),
11382-
strings: strs.slice(1),
11383-
tag: tag,
11384-
}).transform(compressor),
11385-
}).optimize(compressor);
1138611377
if (strs[strs.length - 1] == "") return make_node(AST_Binary, self, {
1138711378
operator: "+",
1138811379
left: make_node(AST_Template, self, {
@@ -11392,6 +11383,15 @@ merge(Compressor.prototype, {
1139211383
}).transform(compressor),
1139311384
right: exprs[exprs.length - 1],
1139411385
}).optimize(compressor);
11386+
if (strs[0] == "") return make_node(AST_Binary, self, {
11387+
operator: "+",
11388+
left: exprs[0],
11389+
right: make_node(AST_Template, self, {
11390+
expressions: exprs.slice(1),
11391+
strings: strs.slice(1),
11392+
tag: tag,
11393+
}).transform(compressor),
11394+
}).optimize(compressor);
1139511395
}
1139611396
self.expressions = exprs;
1139711397
self.strings = strs;

test/compress/templates.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -685,3 +685,17 @@ issue_5125_8: {
685685
expect_stdout: "undefinedundefinedundefined PASS"
686686
node_version: ">=4"
687687
}
688+
689+
issue_5136: {
690+
options = {
691+
templates: true,
692+
}
693+
input: {
694+
console.log(`${A = []}${A[0] = 42}`);
695+
}
696+
expect: {
697+
console.log(`` + (A = []) + (A[0] = 42));
698+
}
699+
expect_stdout: "42"
700+
node_version: ">=4"
701+
}

0 commit comments

Comments
 (0)