@@ -10663,7 +10663,8 @@ merge(Compressor.prototype, {
1066310663 && self.left.operator == "+"
1066410664 && self.left.left instanceof AST_String
1066510665 && self.left.left.value == ""
10666- && self.right.is_string(compressor)) {
10666+ && self.right.is_string(compressor)
10667+ && (self.left.right.is_constant() || !self.right.has_side_effects(compressor))) {
1066710668 self.left = self.left.right;
1066810669 return self.optimize(compressor);
1066910670 }
@@ -11392,15 +11393,29 @@ merge(Compressor.prototype, {
1139211393 }).transform(compressor),
1139311394 right: exprs[exprs.length - 1],
1139411395 }).optimize(compressor);
11395- if (strs[0] == "") return make_node(AST_Binary, self, {
11396- operator: "+",
11397- left: exprs[0],
11398- right: make_node(AST_Template, self, {
11399- expressions: exprs.slice(1),
11400- strings: strs.slice(1),
11401- tag: tag,
11402- }).transform(compressor),
11403- }).optimize(compressor);
11396+ if (strs[0] == "") {
11397+ var left = make_node(AST_Binary, self, {
11398+ operator: "+",
11399+ left: make_node(AST_String, self, { value: "" }),
11400+ right: exprs[0],
11401+ });
11402+ for (var i = 1; strs[i] == "" && i < exprs.length; i++) {
11403+ left = make_node(AST_Binary, self, {
11404+ operator: "+",
11405+ left: left,
11406+ right: exprs[i],
11407+ });
11408+ }
11409+ return best_of(compressor, self, make_node(AST_Binary, self, {
11410+ operator: "+",
11411+ left: left.transform(compressor),
11412+ right: make_node(AST_Template, self, {
11413+ expressions: exprs.slice(i),
11414+ strings: strs.slice(i),
11415+ tag: tag,
11416+ }).transform(compressor),
11417+ }).optimize(compressor));
11418+ }
1140411419 }
1140511420 self.expressions = exprs;
1140611421 self.strings = strs;
0 commit comments