diff --git a/src/compiler/transformers/taggedTemplate.ts b/src/compiler/transformers/taggedTemplate.ts index ea3e529b752dd..8dc0fe1a96465 100644 --- a/src/compiler/transformers/taggedTemplate.ts +++ b/src/compiler/transformers/taggedTemplate.ts @@ -63,7 +63,7 @@ namespace ts { } function createTemplateCooked(template: TemplateHead | TemplateMiddle | TemplateTail | NoSubstitutionTemplateLiteral) { - return template.templateFlags ? createIdentifier("undefined") : createLiteral(template.text); + return template.templateFlags ? createVoidZero() : createLiteral(template.text); } /** diff --git a/tests/baselines/reference/invalidTaggedTemplateEscapeSequences(target=es2015).js b/tests/baselines/reference/invalidTaggedTemplateEscapeSequences(target=es2015).js index 1ad643d360de1..bed4ca912d8b8 100644 --- a/tests/baselines/reference/invalidTaggedTemplateEscapeSequences(target=es2015).js +++ b/tests/baselines/reference/invalidTaggedTemplateEscapeSequences(target=es2015).js @@ -35,20 +35,20 @@ function tag(str, ...args) { } const a = tag `123`; const b = tag `123 ${100}`; -const x = tag(__makeTemplateObject([undefined, undefined, " wonderful ", undefined], ["\\u{hello} ", " \\xtraordinary ", " wonderful ", " \\uworld"]), 100, 200, 300); +const x = tag(__makeTemplateObject([void 0, void 0, " wonderful ", void 0], ["\\u{hello} ", " \\xtraordinary ", " wonderful ", " \\uworld"]), 100, 200, 300); const y = `\u{hello} ${100} \xtraordinary ${200} wonderful ${300} \uworld`; // should error with NoSubstitutionTemplate -const z = tag(__makeTemplateObject([undefined], ["\\u{hello} \\xtraordinary wonderful \\uworld"])); // should work with Tagged NoSubstitutionTemplate +const z = tag(__makeTemplateObject([void 0], ["\\u{hello} \\xtraordinary wonderful \\uworld"])); // should work with Tagged NoSubstitutionTemplate const a1 = tag `${100}\0`; // \0 -const a2 = tag(__makeTemplateObject(["", undefined], ["", "\\00"]), 100); // \\00 -const a3 = tag(__makeTemplateObject(["", undefined], ["", "\\u"]), 100); // \\u -const a4 = tag(__makeTemplateObject(["", undefined], ["", "\\u0"]), 100); // \\u0 -const a5 = tag(__makeTemplateObject(["", undefined], ["", "\\u00"]), 100); // \\u00 -const a6 = tag(__makeTemplateObject(["", undefined], ["", "\\u000"]), 100); // \\u000 +const a2 = tag(__makeTemplateObject(["", void 0], ["", "\\00"]), 100); // \\00 +const a3 = tag(__makeTemplateObject(["", void 0], ["", "\\u"]), 100); // \\u +const a4 = tag(__makeTemplateObject(["", void 0], ["", "\\u0"]), 100); // \\u0 +const a5 = tag(__makeTemplateObject(["", void 0], ["", "\\u00"]), 100); // \\u00 +const a6 = tag(__makeTemplateObject(["", void 0], ["", "\\u000"]), 100); // \\u000 const a7 = tag `${100}\u0000`; // \u0000 -const a8 = tag(__makeTemplateObject(["", undefined], ["", "\\u{"]), 100); // \\u{ +const a8 = tag(__makeTemplateObject(["", void 0], ["", "\\u{"]), 100); // \\u{ const a9 = tag `${100}\u{10FFFF}`; // \\u{10FFFF -const a10 = tag(__makeTemplateObject(["", undefined], ["", "\\u{1f622"]), 100); // \\u{1f622 +const a10 = tag(__makeTemplateObject(["", void 0], ["", "\\u{1f622"]), 100); // \\u{1f622 const a11 = tag `${100}\u{1f622}`; // \u{1f622} -const a12 = tag(__makeTemplateObject(["", undefined], ["", "\\x"]), 100); // \\x -const a13 = tag(__makeTemplateObject(["", undefined], ["", "\\x0"]), 100); // \\x0 +const a12 = tag(__makeTemplateObject(["", void 0], ["", "\\x"]), 100); // \\x +const a13 = tag(__makeTemplateObject(["", void 0], ["", "\\x0"]), 100); // \\x0 const a14 = tag `${100}\x00`; // \x00 diff --git a/tests/baselines/reference/invalidTaggedTemplateEscapeSequences(target=es5).js b/tests/baselines/reference/invalidTaggedTemplateEscapeSequences(target=es5).js index 362e2cf175cfc..6e0c375edb21a 100644 --- a/tests/baselines/reference/invalidTaggedTemplateEscapeSequences(target=es5).js +++ b/tests/baselines/reference/invalidTaggedTemplateEscapeSequences(target=es5).js @@ -39,20 +39,20 @@ function tag(str) { } var a = tag(__makeTemplateObject(["123"], ["123"])); var b = tag(__makeTemplateObject(["123 ", ""], ["123 ", ""]), 100); -var x = tag(__makeTemplateObject([undefined, undefined, " wonderful ", undefined], ["\\u{hello} ", " \\xtraordinary ", " wonderful ", " \\uworld"]), 100, 200, 300); +var x = tag(__makeTemplateObject([void 0, void 0, " wonderful ", void 0], ["\\u{hello} ", " \\xtraordinary ", " wonderful ", " \\uworld"]), 100, 200, 300); var y = "hello} " + 100 + " traordinary " + 200 + " wonderful " + 300 + " world"; // should error with NoSubstitutionTemplate -var z = tag(__makeTemplateObject([undefined], ["\\u{hello} \\xtraordinary wonderful \\uworld"])); // should work with Tagged NoSubstitutionTemplate +var z = tag(__makeTemplateObject([void 0], ["\\u{hello} \\xtraordinary wonderful \\uworld"])); // should work with Tagged NoSubstitutionTemplate var a1 = tag(__makeTemplateObject(["", "\0"], ["", "\\0"]), 100); // \0 -var a2 = tag(__makeTemplateObject(["", undefined], ["", "\\00"]), 100); // \\00 -var a3 = tag(__makeTemplateObject(["", undefined], ["", "\\u"]), 100); // \\u -var a4 = tag(__makeTemplateObject(["", undefined], ["", "\\u0"]), 100); // \\u0 -var a5 = tag(__makeTemplateObject(["", undefined], ["", "\\u00"]), 100); // \\u00 -var a6 = tag(__makeTemplateObject(["", undefined], ["", "\\u000"]), 100); // \\u000 +var a2 = tag(__makeTemplateObject(["", void 0], ["", "\\00"]), 100); // \\00 +var a3 = tag(__makeTemplateObject(["", void 0], ["", "\\u"]), 100); // \\u +var a4 = tag(__makeTemplateObject(["", void 0], ["", "\\u0"]), 100); // \\u0 +var a5 = tag(__makeTemplateObject(["", void 0], ["", "\\u00"]), 100); // \\u00 +var a6 = tag(__makeTemplateObject(["", void 0], ["", "\\u000"]), 100); // \\u000 var a7 = tag(__makeTemplateObject(["", "\0"], ["", "\\u0000"]), 100); // \u0000 -var a8 = tag(__makeTemplateObject(["", undefined], ["", "\\u{"]), 100); // \\u{ +var a8 = tag(__makeTemplateObject(["", void 0], ["", "\\u{"]), 100); // \\u{ var a9 = tag(__makeTemplateObject(["", "\uDBFF\uDFFF"], ["", "\\u{10FFFF}"]), 100); // \\u{10FFFF -var a10 = tag(__makeTemplateObject(["", undefined], ["", "\\u{1f622"]), 100); // \\u{1f622 +var a10 = tag(__makeTemplateObject(["", void 0], ["", "\\u{1f622"]), 100); // \\u{1f622 var a11 = tag(__makeTemplateObject(["", "\uD83D\uDE22"], ["", "\\u{1f622}"]), 100); // \u{1f622} -var a12 = tag(__makeTemplateObject(["", undefined], ["", "\\x"]), 100); // \\x -var a13 = tag(__makeTemplateObject(["", undefined], ["", "\\x0"]), 100); // \\x0 +var a12 = tag(__makeTemplateObject(["", void 0], ["", "\\x"]), 100); // \\x +var a13 = tag(__makeTemplateObject(["", void 0], ["", "\\x0"]), 100); // \\x0 var a14 = tag(__makeTemplateObject(["", "\0"], ["", "\\x00"]), 100); // \x00 diff --git a/tests/baselines/reference/invalidTaggedTemplateEscapeSequences.js b/tests/baselines/reference/invalidTaggedTemplateEscapeSequences.js index 362e2cf175cfc..58984b3018c66 100644 --- a/tests/baselines/reference/invalidTaggedTemplateEscapeSequences.js +++ b/tests/baselines/reference/invalidTaggedTemplateEscapeSequences.js @@ -1,28 +1,28 @@ //// [invalidTaggedTemplateEscapeSequences.ts] -function tag (str: any, ...args: any[]): any { - return str -} - -const a = tag`123` -const b = tag`123 ${100}` -const x = tag`\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld`; -const y = `\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld`; // should error with NoSubstitutionTemplate -const z = tag`\u{hello} \xtraordinary wonderful \uworld` // should work with Tagged NoSubstitutionTemplate - -const a1 = tag`${ 100 }\0` // \0 -const a2 = tag`${ 100 }\00` // \\00 -const a3 = tag`${ 100 }\u` // \\u -const a4 = tag`${ 100 }\u0` // \\u0 -const a5 = tag`${ 100 }\u00` // \\u00 -const a6 = tag`${ 100 }\u000` // \\u000 -const a7 = tag`${ 100 }\u0000` // \u0000 -const a8 = tag`${ 100 }\u{` // \\u{ -const a9 = tag`${ 100 }\u{10FFFF}` // \\u{10FFFF -const a10 = tag`${ 100 }\u{1f622` // \\u{1f622 -const a11 = tag`${ 100 }\u{1f622}` // \u{1f622} -const a12 = tag`${ 100 }\x` // \\x -const a13 = tag`${ 100 }\x0` // \\x0 -const a14 = tag`${ 100 }\x00` // \x00 +function tag (str: any, ...args: any[]): any { + return str +} + +const a = tag`123` +const b = tag`123 ${100}` +const x = tag`\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld`; +const y = `\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld`; // should error with NoSubstitutionTemplate +const z = tag`\u{hello} \xtraordinary wonderful \uworld` // should work with Tagged NoSubstitutionTemplate + +const a1 = tag`${ 100 }\0` // \0 +const a2 = tag`${ 100 }\00` // \\00 +const a3 = tag`${ 100 }\u` // \\u +const a4 = tag`${ 100 }\u0` // \\u0 +const a5 = tag`${ 100 }\u00` // \\u00 +const a6 = tag`${ 100 }\u000` // \\u000 +const a7 = tag`${ 100 }\u0000` // \u0000 +const a8 = tag`${ 100 }\u{` // \\u{ +const a9 = tag`${ 100 }\u{10FFFF}` // \\u{10FFFF +const a10 = tag`${ 100 }\u{1f622` // \\u{1f622 +const a11 = tag`${ 100 }\u{1f622}` // \u{1f622} +const a12 = tag`${ 100 }\x` // \\x +const a13 = tag`${ 100 }\x0` // \\x0 +const a14 = tag`${ 100 }\x00` // \x00 //// [invalidTaggedTemplateEscapeSequences.js] @@ -39,20 +39,20 @@ function tag(str) { } var a = tag(__makeTemplateObject(["123"], ["123"])); var b = tag(__makeTemplateObject(["123 ", ""], ["123 ", ""]), 100); -var x = tag(__makeTemplateObject([undefined, undefined, " wonderful ", undefined], ["\\u{hello} ", " \\xtraordinary ", " wonderful ", " \\uworld"]), 100, 200, 300); +var x = tag(__makeTemplateObject([void 0, void 0, " wonderful ", void 0], ["\\u{hello} ", " \\xtraordinary ", " wonderful ", " \\uworld"]), 100, 200, 300); var y = "hello} " + 100 + " traordinary " + 200 + " wonderful " + 300 + " world"; // should error with NoSubstitutionTemplate -var z = tag(__makeTemplateObject([undefined], ["\\u{hello} \\xtraordinary wonderful \\uworld"])); // should work with Tagged NoSubstitutionTemplate +var z = tag(__makeTemplateObject([void 0], ["\\u{hello} \\xtraordinary wonderful \\uworld"])); // should work with Tagged NoSubstitutionTemplate var a1 = tag(__makeTemplateObject(["", "\0"], ["", "\\0"]), 100); // \0 -var a2 = tag(__makeTemplateObject(["", undefined], ["", "\\00"]), 100); // \\00 -var a3 = tag(__makeTemplateObject(["", undefined], ["", "\\u"]), 100); // \\u -var a4 = tag(__makeTemplateObject(["", undefined], ["", "\\u0"]), 100); // \\u0 -var a5 = tag(__makeTemplateObject(["", undefined], ["", "\\u00"]), 100); // \\u00 -var a6 = tag(__makeTemplateObject(["", undefined], ["", "\\u000"]), 100); // \\u000 +var a2 = tag(__makeTemplateObject(["", void 0], ["", "\\00"]), 100); // \\00 +var a3 = tag(__makeTemplateObject(["", void 0], ["", "\\u"]), 100); // \\u +var a4 = tag(__makeTemplateObject(["", void 0], ["", "\\u0"]), 100); // \\u0 +var a5 = tag(__makeTemplateObject(["", void 0], ["", "\\u00"]), 100); // \\u00 +var a6 = tag(__makeTemplateObject(["", void 0], ["", "\\u000"]), 100); // \\u000 var a7 = tag(__makeTemplateObject(["", "\0"], ["", "\\u0000"]), 100); // \u0000 -var a8 = tag(__makeTemplateObject(["", undefined], ["", "\\u{"]), 100); // \\u{ +var a8 = tag(__makeTemplateObject(["", void 0], ["", "\\u{"]), 100); // \\u{ var a9 = tag(__makeTemplateObject(["", "\uDBFF\uDFFF"], ["", "\\u{10FFFF}"]), 100); // \\u{10FFFF -var a10 = tag(__makeTemplateObject(["", undefined], ["", "\\u{1f622"]), 100); // \\u{1f622 +var a10 = tag(__makeTemplateObject(["", void 0], ["", "\\u{1f622"]), 100); // \\u{1f622 var a11 = tag(__makeTemplateObject(["", "\uD83D\uDE22"], ["", "\\u{1f622}"]), 100); // \u{1f622} -var a12 = tag(__makeTemplateObject(["", undefined], ["", "\\x"]), 100); // \\x -var a13 = tag(__makeTemplateObject(["", undefined], ["", "\\x0"]), 100); // \\x0 +var a12 = tag(__makeTemplateObject(["", void 0], ["", "\\x"]), 100); // \\x +var a13 = tag(__makeTemplateObject(["", void 0], ["", "\\x0"]), 100); // \\x0 var a14 = tag(__makeTemplateObject(["", "\0"], ["", "\\x00"]), 100); // \x00