From 77e14c8482a8a9c061531bc91db71ea6830af7b1 Mon Sep 17 00:00:00 2001 From: dave caruso Date: Mon, 29 Jul 2024 19:04:59 -0700 Subject: [PATCH] fix template addition folding 12904 (#12928) --- src/js_parser.zig | 7 ++++--- test/bundler/bundler_string.test.ts | 6 ++++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/js_parser.zig b/src/js_parser.zig index 5cba46d738..ee975f28ea 100644 --- a/src/js_parser.zig +++ b/src/js_parser.zig @@ -356,6 +356,7 @@ fn foldStringAddition(l: Expr, r: Expr, allocator: std.mem.Allocator, kind: Fold right, r.data == .e_inlined_enum, ) }; + return lhs; } } else { if (left.head.isUTF8()) { @@ -364,10 +365,9 @@ fn foldStringAddition(l: Expr, r: Expr, allocator: std.mem.Allocator, kind: Fold right, r.data == .e_inlined_enum, ) }; + return lhs; } } - - return lhs; } }, // `foo${bar}` + `a${hi}b` => `foo${bar}a${hi}b` @@ -391,6 +391,7 @@ fn foldStringAddition(l: Expr, r: Expr, allocator: std.mem.Allocator, kind: Fold E.TemplatePart, &.{ left.parts, right.parts }, ) catch bun.outOfMemory(); + return lhs; } } else { if (left.head.isUTF8() and right.head.isUTF8()) { @@ -400,9 +401,9 @@ fn foldStringAddition(l: Expr, r: Expr, allocator: std.mem.Allocator, kind: Fold r.data == .e_inlined_enum, ) }; left.parts = right.parts; + return lhs; } } - return lhs; } }, else => { diff --git a/test/bundler/bundler_string.test.ts b/test/bundler/bundler_string.test.ts index 21ac10f17b..ef7a9d74e4 100644 --- a/test/bundler/bundler_string.test.ts +++ b/test/bundler/bundler_string.test.ts @@ -80,6 +80,12 @@ const templateStringTests: Record = { FoldNested6: { expr: "`a\0${5}c\\${{$${`d`}e`", print: true }, EscapedDollar: { expr: "`\\${'a'}`", captureRaw: "\"${'a'}\"" }, EscapedDollar2: { expr: "`\\${'a'}\\${'b'}`", captureRaw: "\"${'a'}${'b'}\"" }, + StringAddition: { expr: "`${1}\u2796` + 'rest'", print: true }, + StringAddition2: { expr: "`\u2796${1}` + `a${Number(1)}b`", print: true }, + StringAddition3: { expr: '`0${"\u2796"}` + `a${Number(1)}b`', print: true }, + StringAddition4: { expr: "`${1}z` + `\u2796${Number(1)}rest`", print: true }, + StringAddition5: { expr: "`\u2796${1}z` + `\u2796${Number(1)}rest`", print: true }, + StringAddition6: { expr: "`${1}` + '\u2796rest'", print: true }, }; describe("bundler", () => {