diff --git a/internal/printer/printer_test.go b/internal/printer/printer_test.go index 1bd17cc6c6..2e4fdd46a1 100644 --- a/internal/printer/printer_test.go +++ b/internal/printer/printer_test.go @@ -28,6 +28,8 @@ func TestEmit(t *testing.T) { {title: "BooleanLiteral#1", input: `true`, output: `true;`}, {title: "BooleanLiteral#2", input: `false`, output: `false;`}, {title: "NoSubstitutionTemplateLiteral", input: "``", output: "``;"}, + {title: "NoSubstitutionTemplateLiteral#2", input: "`\n`", output: "`\n`;"}, + {title: "RegularExpressionLiteral#1", input: `/a/`, output: `/a/;`}, {title: "RegularExpressionLiteral#2", input: `/a/g`, output: `/a/g;`}, {title: "NullLiteral", input: `null`, output: `null;`}, diff --git a/internal/printer/utilities.go b/internal/printer/utilities.go index 6561a5a95a..9eac7f1b89 100644 --- a/internal/printer/utilities.go +++ b/internal/printer/utilities.go @@ -103,7 +103,7 @@ func escapeStringWorker(s string, quoteChar QuoteChar, flags getLiteralTextFlags escape = true } default: - if ch < '\u001f' || flags&getLiteralTextFlagsNeverAsciiEscape == 0 && ch > '\u007f' { + if ch <= '\u001f' || flags&getLiteralTextFlagsNeverAsciiEscape == 0 && ch > '\u007f' { escape = true } } diff --git a/internal/printer/utilities_test.go b/internal/printer/utilities_test.go index cbe034f22d..02281a0f8b 100644 --- a/internal/printer/utilities_test.go +++ b/internal/printer/utilities_test.go @@ -25,6 +25,7 @@ func TestEscapeString(t *testing.T) { {s: "ab'c", quoteChar: QuoteCharSingleQuote, expected: `ab\'c`}, {s: "ab\"c", quoteChar: QuoteCharSingleQuote, expected: `ab"c`}, {s: "ab`c", quoteChar: QuoteCharBacktick, expected: "ab\\`c"}, + {s: "\u001f", quoteChar: QuoteCharBacktick, expected: "\\u001F"}, } for i, rec := range data { t.Run(fmt.Sprintf("[%d] escapeString(%q, %v)", i, rec.s, rec.quoteChar), func(t *testing.T) { diff --git a/testdata/baselines/reference/submodule/conformance/templateStringControlCharacterEscapes03.types b/testdata/baselines/reference/submodule/conformance/templateStringControlCharacterEscapes03.types index cb40439a14..aea47c3578 100644 --- a/testdata/baselines/reference/submodule/conformance/templateStringControlCharacterEscapes03.types +++ b/testdata/baselines/reference/submodule/conformance/templateStringControlCharacterEscapes03.types @@ -3,5 +3,5 @@ === templateStringControlCharacterEscapes03.ts === var x = `\x1F\u001f 1F 1f`; >x : string ->`\x1F\u001f 1F 1f` : " 1F 1f" +>`\x1F\u001f 1F 1f` : "\u001F\u001F 1F 1f" diff --git a/testdata/baselines/reference/submodule/conformance/templateStringControlCharacterEscapes03.types.diff b/testdata/baselines/reference/submodule/conformance/templateStringControlCharacterEscapes03.types.diff deleted file mode 100644 index 5fcd94380c..0000000000 --- a/testdata/baselines/reference/submodule/conformance/templateStringControlCharacterEscapes03.types.diff +++ /dev/null @@ -1,8 +0,0 @@ ---- old.templateStringControlCharacterEscapes03.types -+++ new.templateStringControlCharacterEscapes03.types -@@= skipped -2, +2 lines =@@ - === templateStringControlCharacterEscapes03.ts === - var x = `\x1F\u001f 1F 1f`; - >x : string -->`\x1F\u001f 1F 1f` : "\u001F\u001F 1F 1f" -+>`\x1F\u001f 1F 1f` : " 1F 1f" diff --git a/testdata/baselines/reference/submodule/conformance/templateStringControlCharacterEscapes03_ES6.types b/testdata/baselines/reference/submodule/conformance/templateStringControlCharacterEscapes03_ES6.types index f1e600e06b..42501f67b6 100644 --- a/testdata/baselines/reference/submodule/conformance/templateStringControlCharacterEscapes03_ES6.types +++ b/testdata/baselines/reference/submodule/conformance/templateStringControlCharacterEscapes03_ES6.types @@ -3,5 +3,5 @@ === templateStringControlCharacterEscapes03_ES6.ts === var x = `\x1F\u001f 1F 1f`; >x : string ->`\x1F\u001f 1F 1f` : " 1F 1f" +>`\x1F\u001f 1F 1f` : "\u001F\u001F 1F 1f" diff --git a/testdata/baselines/reference/submodule/conformance/templateStringControlCharacterEscapes03_ES6.types.diff b/testdata/baselines/reference/submodule/conformance/templateStringControlCharacterEscapes03_ES6.types.diff deleted file mode 100644 index 30a3c9a4e6..0000000000 --- a/testdata/baselines/reference/submodule/conformance/templateStringControlCharacterEscapes03_ES6.types.diff +++ /dev/null @@ -1,8 +0,0 @@ ---- old.templateStringControlCharacterEscapes03_ES6.types -+++ new.templateStringControlCharacterEscapes03_ES6.types -@@= skipped -2, +2 lines =@@ - === templateStringControlCharacterEscapes03_ES6.ts === - var x = `\x1F\u001f 1F 1f`; - >x : string -->`\x1F\u001f 1F 1f` : "\u001F\u001F 1F 1f" -+>`\x1F\u001f 1F 1f` : " 1F 1f"