From c4b1a9d94fa8006c4c41eb76d768500b2322432d Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Wed, 6 Sep 2017 20:18:13 -0700 Subject: [PATCH 01/26] Update emit for tagged templates to use a per-site cached template objects. --- src/compiler/checker.ts | 4 ++ src/compiler/transformers/es2015.ts | 67 +++++++++++++++++++++++------ src/compiler/types.ts | 33 +++++++------- 3 files changed, 76 insertions(+), 28 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 9174aa3c0232f..e8c47a468d846 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -16587,6 +16587,9 @@ namespace ts { } function checkTaggedTemplateExpression(node: TaggedTemplateExpression): Type { + if (languageVersion < ScriptTarget.ES2015) { + checkExternalEmitHelpers(node, ExternalEmitHelpers.GetTemplateObject); + } return getReturnTypeOfSignature(getResolvedSignature(node)); } @@ -23919,6 +23922,7 @@ namespace ts { case ExternalEmitHelpers.AsyncDelegator: return "__asyncDelegator"; case ExternalEmitHelpers.AsyncValues: return "__asyncValues"; case ExternalEmitHelpers.ExportStar: return "__exportStar"; + case ExternalEmitHelpers.GetTemplateObject: return "__getTemplateObject"; default: Debug.fail("Unrecognized helper"); } } diff --git a/src/compiler/transformers/es2015.ts b/src/compiler/transformers/es2015.ts index e9c84be51766a..3a21e1fc94f7a 100644 --- a/src/compiler/transformers/es2015.ts +++ b/src/compiler/transformers/es2015.ts @@ -279,6 +279,16 @@ namespace ts { let currentSourceFile: SourceFile; let currentText: string; let hierarchyFacts: HierarchyFacts; + let taggedTemplateStringDeclarations: VariableDeclaration[]; + function recordTaggedTemplateString(temp: Identifier) { + const decl = createVariableDeclaration(temp); + if (!taggedTemplateStringDeclarations) { + taggedTemplateStringDeclarations = [decl]; + } + else { + taggedTemplateStringDeclarations.push(decl); + } + } /** * Used to track if we are emitting body of the converted loop @@ -307,6 +317,7 @@ namespace ts { currentSourceFile = undefined; currentText = undefined; + taggedTemplateStringDeclarations = undefined; hierarchyFacts = HierarchyFacts.None; return visited; } @@ -520,6 +531,11 @@ namespace ts { addCaptureThisForNodeIfNeeded(statements, node); statementOffset = addCustomPrologue(statements, node.statements, statementOffset, visitor); addRange(statements, visitNodes(node.statements, visitor, isStatement, statementOffset)); + if (taggedTemplateStringDeclarations) { + statements.push( + createVariableStatement(/*modifiers*/ undefined, + createVariableDeclarationList(taggedTemplateStringDeclarations))); + } addRange(statements, endLexicalEnvironment()); exitSubtree(ancestorFacts, HierarchyFacts.None, HierarchyFacts.None); return updateSourceFileNode( @@ -3637,10 +3653,12 @@ namespace ts { const tag = visitNode(node.tag, visitor, isExpression); // Allocate storage for the template site object - const temp = createTempVariable(hoistVariableDeclaration); + const temp = createTempVariable(recordTaggedTemplateString); // Build up the template arguments and the raw and cooked strings for the template. - const templateArguments: Expression[] = [temp]; + // We start out with 'undefined' for the first argument and revisit later + // to avoid walking over the template string twice and shifting all our arguments over after the fact. + const templateArguments: Expression[] = [undefined]; const cookedStrings: Expression[] = []; const rawStrings: Expression[] = []; const template = node.template; @@ -3658,16 +3676,14 @@ namespace ts { } } - // NOTE: The parentheses here is entirely optional as we are now able to auto- - // parenthesize when rebuilding the tree. This should be removed in a - // future version. It is here for now to match our existing emit. - return createParen( - inlineExpressions([ - createAssignment(temp, createArrayLiteral(cookedStrings)), - createAssignment(createPropertyAccess(temp, "raw"), createArrayLiteral(rawStrings)), - createCall(tag, /*typeArguments*/ undefined, templateArguments) - ]) - ); + // Initialize the template object if necessary + templateArguments[0] = createLogicalOr( + temp, + createAssignment( + temp, + createTemplateObjectHelper(context, createArrayLiteral(cookedStrings), createArrayLiteral(rawStrings)))); + + return createCall(tag, /*typeArguments*/ undefined, templateArguments); } /** @@ -4036,6 +4052,18 @@ namespace ts { ); } + function createTemplateObjectHelper(context: TransformationContext, cooked: ArrayLiteralExpression, raw: ArrayLiteralExpression) { + context.requestEmitHelper(templateObjectHelper); + return createCall( + getHelperName("__getTemplateObject"), + /*typeArguments*/ undefined, + [ + cooked, + raw + ] + ); + } + const extendsHelper: EmitHelper = { name: "typescript:extends", scoped: false, @@ -4052,4 +4080,19 @@ namespace ts { }; })();` }; + + const templateObjectHelper: EmitHelper = { + name: "typescript:getTemplateObject", + scoped: false, + priority: 0, + text: ` + var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { + if (Object.freeze && Object.defineProperty) { + return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + } + cooked.raw = raw; + return cooked; + };` + }; + } diff --git a/src/compiler/types.ts b/src/compiler/types.ts index 0d9bb8d50e86f..b22638789c1c2 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -4217,22 +4217,23 @@ namespace ts { */ /* @internal */ export const enum ExternalEmitHelpers { - Extends = 1 << 0, // __extends (used by the ES2015 class transformation) - Assign = 1 << 1, // __assign (used by Jsx and ESNext object spread transformations) - Rest = 1 << 2, // __rest (used by ESNext object rest transformation) - Decorate = 1 << 3, // __decorate (used by TypeScript decorators transformation) - Metadata = 1 << 4, // __metadata (used by TypeScript decorators transformation) - Param = 1 << 5, // __param (used by TypeScript decorators transformation) - Awaiter = 1 << 6, // __awaiter (used by ES2017 async functions transformation) - Generator = 1 << 7, // __generator (used by ES2015 generator transformation) - Values = 1 << 8, // __values (used by ES2015 for..of and yield* transformations) - Read = 1 << 9, // __read (used by ES2015 iterator destructuring transformation) - Spread = 1 << 10, // __spread (used by ES2015 array spread and argument list spread transformations) - Await = 1 << 11, // __await (used by ES2017 async generator transformation) - AsyncGenerator = 1 << 12, // __asyncGenerator (used by ES2017 async generator transformation) - AsyncDelegator = 1 << 13, // __asyncDelegator (used by ES2017 async generator yield* transformation) - AsyncValues = 1 << 14, // __asyncValues (used by ES2017 for..await..of transformation) - ExportStar = 1 << 15, // __exportStar (used by CommonJS/AMD/UMD module transformation) + Extends = 1 << 0, // __extends (used by the ES2015 class transformation) + Assign = 1 << 1, // __assign (used by Jsx and ESNext object spread transformations) + Rest = 1 << 2, // __rest (used by ESNext object rest transformation) + Decorate = 1 << 3, // __decorate (used by TypeScript decorators transformation) + Metadata = 1 << 4, // __metadata (used by TypeScript decorators transformation) + Param = 1 << 5, // __param (used by TypeScript decorators transformation) + Awaiter = 1 << 6, // __awaiter (used by ES2017 async functions transformation) + Generator = 1 << 7, // __generator (used by ES2015 generator transformation) + Values = 1 << 8, // __values (used by ES2015 for..of and yield* transformations) + Read = 1 << 9, // __read (used by ES2015 iterator destructuring transformation) + Spread = 1 << 10, // __spread (used by ES2015 array spread and argument list spread transformations) + Await = 1 << 11, // __await (used by ES2017 async generator transformation) + AsyncGenerator = 1 << 12, // __asyncGenerator (used by ES2017 async generator transformation) + AsyncDelegator = 1 << 13, // __asyncDelegator (used by ES2017 async generator yield* transformation) + AsyncValues = 1 << 14, // __asyncValues (used by ES2017 for..await..of transformation) + ExportStar = 1 << 15, // __exportStar (used by CommonJS/AMD/UMD module transformation) + GetTemplateObject = 1 << 16, // __getTemplateObject (used for constructing template string array objects) // Helpers included by ES2015 for..of ForOfIncludes = Values, From 166af8caf21c8d423cfb1f244d558e438ffac83b Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Wed, 6 Sep 2017 20:18:43 -0700 Subject: [PATCH 02/26] Accepted baselines. --- tests/baselines/reference/asOperator3.js | 11 +++- tests/baselines/reference/asOperatorASI.js | 9 ++- ...taggedTemplateStringsHexadecimalEscapes.js | 9 ++- ...sPlainCharactersThatArePartsOfEscapes01.js | 9 ++- ...gedTemplateStringsTypeArgumentInference.js | 63 ++++++++++--------- ...emplateStringsWithIncompatibleTypedTags.js | 27 +++++--- ...StringsWithManyCallAndMemberExpressions.js | 9 ++- ...gedTemplateStringsWithMultilineTemplate.js | 9 ++- ...dTemplateStringsWithOverloadResolution1.js | 19 ++++-- ...dTemplateStringsWithOverloadResolution2.js | 11 +++- ...dTemplateStringsWithOverloadResolution3.js | 51 ++++++++------- ...aggedTemplateStringsWithTagNamedDeclare.js | 9 ++- ...taggedTemplateStringsWithTagsTypedAsAny.js | 29 +++++---- ...tionExpressionsInSubstitutionExpression.js | 9 ++- .../taggedTemplateStringsWithTypedTags.js | 25 +++++--- ...taggedTemplateStringsWithUnicodeEscapes.js | 9 ++- ...gedTemplateStringsWithWhitespaceEscapes.js | 9 ++- .../taggedTemplateUntypedTagCall01.js | 9 ++- .../taggedTemplateWithConstructableTag01.js | 9 ++- .../taggedTemplateWithConstructableTag02.js | 9 ++- .../reference/templateStringInModuleName.js | 11 +++- .../templateStringInObjectLiteral.js | 11 +++- .../templateStringInPropertyName1.js | 9 ++- .../templateStringInPropertyName2.js | 9 ++- .../templateStringInTaggedTemplate.js | 9 ++- ...emplateStringsArrayTypeDefinedInES5Mode.js | 9 ++- ...mplateStringsArrayTypeNotDefinedES5Mode.js | 9 ++- 27 files changed, 300 insertions(+), 111 deletions(-) diff --git a/tests/baselines/reference/asOperator3.js b/tests/baselines/reference/asOperator3.js index 770a853ad25b8..c1d81bfe17ca2 100644 --- a/tests/baselines/reference/asOperator3.js +++ b/tests/baselines/reference/asOperator3.js @@ -11,12 +11,19 @@ var g = tag `Hello ${123} World` as string; var h = tag `Hello` as string; //// [asOperator3.js] +var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { + if (Object.freeze && Object.defineProperty) { + return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + } + cooked.raw = raw; + return cooked; +}; var a = "" + (123 + 456); var b = "leading " + (123 + 456); var c = 123 + 456 + " trailing"; var d = "Hello " + 123 + " World"; var e = "Hello"; var f = 1 + (1 + " end of string"); -var g = (_a = ["Hello ", " World"], _a.raw = ["Hello ", " World"], tag(_a, 123)); -var h = (_b = ["Hello"], _b.raw = ["Hello"], tag(_b)); +var g = tag(_a || (_a = __getTemplateObject(["Hello ", " World"], ["Hello ", " World"])), 123); +var h = tag(_b || (_b = __getTemplateObject(["Hello"], ["Hello"]))); var _a, _b; diff --git a/tests/baselines/reference/asOperatorASI.js b/tests/baselines/reference/asOperatorASI.js index 342dc03d2ef90..1205824c670af 100644 --- a/tests/baselines/reference/asOperatorASI.js +++ b/tests/baselines/reference/asOperatorASI.js @@ -12,6 +12,13 @@ as(Foo); // should emit //// [asOperatorASI.js] +var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { + if (Object.freeze && Object.defineProperty) { + return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + } + cooked.raw = raw; + return cooked; +}; var Foo = /** @class */ (function () { function Foo() { } @@ -19,7 +26,7 @@ var Foo = /** @class */ (function () { }()); // Example 1 var x = 10; -(_a = ["Hello world"], _a.raw = ["Hello world"], as(_a)); // should not error +as(_a || (_a = __getTemplateObject(["Hello world"], ["Hello world"]))); // should not error // Example 2 var y = 20; as(Foo); // should emit diff --git a/tests/baselines/reference/taggedTemplateStringsHexadecimalEscapes.js b/tests/baselines/reference/taggedTemplateStringsHexadecimalEscapes.js index 3df09abb2db8d..a0aeae561e03c 100644 --- a/tests/baselines/reference/taggedTemplateStringsHexadecimalEscapes.js +++ b/tests/baselines/reference/taggedTemplateStringsHexadecimalEscapes.js @@ -5,11 +5,18 @@ function f(...args: any[]) { f `\x0D${ "Interrupted CRLF" }\x0A`; //// [taggedTemplateStringsHexadecimalEscapes.js] +var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { + if (Object.freeze && Object.defineProperty) { + return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + } + cooked.raw = raw; + return cooked; +}; function f() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } } -(_a = ["\r", "\n"], _a.raw = ["\\x0D", "\\x0A"], f(_a, "Interrupted CRLF")); +f(_a || (_a = __getTemplateObject(["\r", "\n"], ["\\x0D", "\\x0A"])), "Interrupted CRLF"); var _a; diff --git a/tests/baselines/reference/taggedTemplateStringsPlainCharactersThatArePartsOfEscapes01.js b/tests/baselines/reference/taggedTemplateStringsPlainCharactersThatArePartsOfEscapes01.js index 10610fb28a970..a74d112ee3d18 100644 --- a/tests/baselines/reference/taggedTemplateStringsPlainCharactersThatArePartsOfEscapes01.js +++ b/tests/baselines/reference/taggedTemplateStringsPlainCharactersThatArePartsOfEscapes01.js @@ -6,11 +6,18 @@ function f(...x: any[]) { f `0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2028 2029 0085 t v f b r n` //// [taggedTemplateStringsPlainCharactersThatArePartsOfEscapes01.js] +var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { + if (Object.freeze && Object.defineProperty) { + return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + } + cooked.raw = raw; + return cooked; +}; function f() { var x = []; for (var _i = 0; _i < arguments.length; _i++) { x[_i] = arguments[_i]; } } -(_a = ["0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2028 2029 0085 t v f b r n"], _a.raw = ["0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2028 2029 0085 t v f b r n"], f(_a)); +f(_a || (_a = __getTemplateObject(["0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2028 2029 0085 t v f b r n"], ["0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2028 2029 0085 t v f b r n"]))); var _a; diff --git a/tests/baselines/reference/taggedTemplateStringsTypeArgumentInference.js b/tests/baselines/reference/taggedTemplateStringsTypeArgumentInference.js index e0427c28b87e8..262eee663cd2a 100644 --- a/tests/baselines/reference/taggedTemplateStringsTypeArgumentInference.js +++ b/tests/baselines/reference/taggedTemplateStringsTypeArgumentInference.js @@ -92,67 +92,74 @@ var arr: any[]; //// [taggedTemplateStringsTypeArgumentInference.js] +var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { + if (Object.freeze && Object.defineProperty) { + return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + } + cooked.raw = raw; + return cooked; +}; // Generic tag with one parameter function noParams(n) { } -(_a = [""], _a.raw = [""], noParams(_a)); +noParams(_a || (_a = __getTemplateObject([""], [""]))); // Generic tag with parameter which does not use type parameter function noGenericParams(n) { } -(_b = [""], _b.raw = [""], noGenericParams(_b)); +noGenericParams(_b || (_b = __getTemplateObject([""], [""]))); // Generic tag with multiple type parameters and only one used in parameter type annotation function someGenerics1a(n, m) { } -(_c = ["", ""], _c.raw = ["", ""], someGenerics1a(_c, 3)); +someGenerics1a(_c || (_c = __getTemplateObject(["", ""], ["", ""])), 3); function someGenerics1b(n, m) { } -(_d = ["", ""], _d.raw = ["", ""], someGenerics1b(_d, 3)); +someGenerics1b(_d || (_d = __getTemplateObject(["", ""], ["", ""])), 3); // Generic tag with argument of function type whose parameter is of type parameter type function someGenerics2a(strs, n) { } -(_e = ["", ""], _e.raw = ["", ""], someGenerics2a(_e, function (n) { return n; })); +someGenerics2a(_e || (_e = __getTemplateObject(["", ""], ["", ""])), function (n) { return n; }); function someGenerics2b(strs, n) { } -(_f = ["", ""], _f.raw = ["", ""], someGenerics2b(_f, function (n, x) { return n; })); +someGenerics2b(_f || (_f = __getTemplateObject(["", ""], ["", ""])), function (n, x) { return n; }); // Generic tag with argument of function type whose parameter is not of type parameter type but body/return type uses type parameter function someGenerics3(strs, producer) { } -(_g = ["", ""], _g.raw = ["", ""], someGenerics3(_g, function () { return ''; })); -(_h = ["", ""], _h.raw = ["", ""], someGenerics3(_h, function () { return undefined; })); -(_j = ["", ""], _j.raw = ["", ""], someGenerics3(_j, function () { return 3; })); +someGenerics3(_g || (_g = __getTemplateObject(["", ""], ["", ""])), function () { return ''; }); +someGenerics3(_h || (_h = __getTemplateObject(["", ""], ["", ""])), function () { return undefined; }); +someGenerics3(_j || (_j = __getTemplateObject(["", ""], ["", ""])), function () { return 3; }); // 2 parameter generic tag with argument 1 of type parameter type and argument 2 of function type whose parameter is of type parameter type function someGenerics4(strs, n, f) { } -(_k = ["", "", ""], _k.raw = ["", "", ""], someGenerics4(_k, 4, function () { return null; })); -(_l = ["", "", ""], _l.raw = ["", "", ""], someGenerics4(_l, '', function () { return 3; })); -(_m = ["", "", ""], _m.raw = ["", "", ""], someGenerics4(_m, null, null)); +someGenerics4(_k || (_k = __getTemplateObject(["", "", ""], ["", "", ""])), 4, function () { return null; }); +someGenerics4(_l || (_l = __getTemplateObject(["", "", ""], ["", "", ""])), '', function () { return 3; }); +someGenerics4(_m || (_m = __getTemplateObject(["", "", ""], ["", "", ""])), null, null); // 2 parameter generic tag with argument 2 of type parameter type and argument 1 of function type whose parameter is of type parameter type function someGenerics5(strs, n, f) { } -(_o = ["", " ", ""], _o.raw = ["", " ", ""], someGenerics5(_o, 4, function () { return null; })); -(_p = ["", "", ""], _p.raw = ["", "", ""], someGenerics5(_p, '', function () { return 3; })); -(_q = ["", "", ""], _q.raw = ["", "", ""], someGenerics5(_q, null, null)); +someGenerics5(_o || (_o = __getTemplateObject(["", " ", ""], ["", " ", ""])), 4, function () { return null; }); +someGenerics5(_p || (_p = __getTemplateObject(["", "", ""], ["", "", ""])), '', function () { return 3; }); +someGenerics5(_q || (_q = __getTemplateObject(["", "", ""], ["", "", ""])), null, null); // Generic tag with multiple arguments of function types that each have parameters of the same generic type function someGenerics6(strs, a, b, c) { } -(_r = ["", "", "", ""], _r.raw = ["", "", "", ""], someGenerics6(_r, function (n) { return n; }, function (n) { return n; }, function (n) { return n; })); -(_s = ["", "", "", ""], _s.raw = ["", "", "", ""], someGenerics6(_s, function (n) { return n; }, function (n) { return n; }, function (n) { return n; })); -(_t = ["", "", "", ""], _t.raw = ["", "", "", ""], someGenerics6(_t, function (n) { return n; }, function (n) { return n; }, function (n) { return n; })); +someGenerics6(_r || (_r = __getTemplateObject(["", "", "", ""], ["", "", "", ""])), function (n) { return n; }, function (n) { return n; }, function (n) { return n; }); +someGenerics6(_s || (_s = __getTemplateObject(["", "", "", ""], ["", "", "", ""])), function (n) { return n; }, function (n) { return n; }, function (n) { return n; }); +someGenerics6(_t || (_t = __getTemplateObject(["", "", "", ""], ["", "", "", ""])), function (n) { return n; }, function (n) { return n; }, function (n) { return n; }); // Generic tag with multiple arguments of function types that each have parameters of different generic type function someGenerics7(strs, a, b, c) { } -(_u = ["", "", "", ""], _u.raw = ["", "", "", ""], someGenerics7(_u, function (n) { return n; }, function (n) { return n; }, function (n) { return n; })); -(_v = ["", "", "", ""], _v.raw = ["", "", "", ""], someGenerics7(_v, function (n) { return n; }, function (n) { return n; }, function (n) { return n; })); -(_w = ["", "", "", ""], _w.raw = ["", "", "", ""], someGenerics7(_w, function (n) { return n; }, function (n) { return n; }, function (n) { return n; })); +someGenerics7(_u || (_u = __getTemplateObject(["", "", "", ""], ["", "", "", ""])), function (n) { return n; }, function (n) { return n; }, function (n) { return n; }); +someGenerics7(_v || (_v = __getTemplateObject(["", "", "", ""], ["", "", "", ""])), function (n) { return n; }, function (n) { return n; }, function (n) { return n; }); +someGenerics7(_w || (_w = __getTemplateObject(["", "", "", ""], ["", "", "", ""])), function (n) { return n; }, function (n) { return n; }, function (n) { return n; }); // Generic tag with argument of generic function type function someGenerics8(strs, n) { return n; } -var x = (_x = ["", ""], _x.raw = ["", ""], someGenerics8(_x, someGenerics7)); -(_y = ["", "", "", ""], _y.raw = ["", "", "", ""], x(_y, null, null, null)); +var x = someGenerics8(_x || (_x = __getTemplateObject(["", ""], ["", ""])), someGenerics7); +x(_y || (_y = __getTemplateObject(["", "", "", ""], ["", "", "", ""])), null, null, null); // Generic tag with multiple parameters of generic type passed arguments with no best common type function someGenerics9(strs, a, b, c) { return null; } -var a9a = (_z = ["", "", "", ""], _z.raw = ["", "", "", ""], someGenerics9(_z, '', 0, [])); +var a9a = someGenerics9(_z || (_z = __getTemplateObject(["", "", "", ""], ["", "", "", ""])), '', 0, []); var a9a; -var a9e = (_0 = ["", "", "", ""], _0.raw = ["", "", "", ""], someGenerics9(_0, undefined, { x: 6, z: new Date() }, { x: 6, y: '' })); +var a9e = someGenerics9(_0 || (_0 = __getTemplateObject(["", "", "", ""], ["", "", "", ""])), undefined, { x: 6, z: new Date() }, { x: 6, y: '' }); var a9e; // Generic tag with multiple parameters of generic type passed arguments with a single best common type -var a9d = (_1 = ["", "", "", ""], _1.raw = ["", "", "", ""], someGenerics9(_1, { x: 3 }, { x: 6 }, { x: 6 })); +var a9d = someGenerics9(_1 || (_1 = __getTemplateObject(["", "", "", ""], ["", "", "", ""])), { x: 3 }, { x: 6 }, { x: 6 }); var a9d; // Generic tag with multiple parameters of generic type where one argument is of type 'any' var anyVar; -var a = (_2 = ["", "", "", ""], _2.raw = ["", "", "", ""], someGenerics9(_2, 7, anyVar, 4)); +var a = someGenerics9(_2 || (_2 = __getTemplateObject(["", "", "", ""], ["", "", "", ""])), 7, anyVar, 4); var a; // Generic tag with multiple parameters of generic type where one argument is [] and the other is not 'any' -var arr = (_3 = ["", "", "", ""], _3.raw = ["", "", "", ""], someGenerics9(_3, [], null, undefined)); +var arr = someGenerics9(_3 || (_3 = __getTemplateObject(["", "", "", ""], ["", "", "", ""])), [], null, undefined); var arr; var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3; diff --git a/tests/baselines/reference/taggedTemplateStringsWithIncompatibleTypedTags.js b/tests/baselines/reference/taggedTemplateStringsWithIncompatibleTypedTags.js index 16f1a3faea0a7..69c828fae3db3 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithIncompatibleTypedTags.js +++ b/tests/baselines/reference/taggedTemplateStringsWithIncompatibleTypedTags.js @@ -34,16 +34,23 @@ f.thisIsNotATag(`abc${1}def${2}ghi`); //// [taggedTemplateStringsWithIncompatibleTypedTags.js] +var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { + if (Object.freeze && Object.defineProperty) { + return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + } + cooked.raw = raw; + return cooked; +}; var f; -(_a = ["abc"], _a.raw = ["abc"], f(_a)); -(_b = ["abc", "def", "ghi"], _b.raw = ["abc", "def", "ghi"], f(_b, 1, 2)); -(_c = ["abc"], _c.raw = ["abc"], f(_c)).member; -(_d = ["abc", "def", "ghi"], _d.raw = ["abc", "def", "ghi"], f(_d, 1, 2)).member; -(_e = ["abc"], _e.raw = ["abc"], f(_e))["member"]; -(_f = ["abc", "def", "ghi"], _f.raw = ["abc", "def", "ghi"], f(_f, 1, 2))["member"]; -(_g = ["abc", "def", "ghi"], _g.raw = ["abc", "def", "ghi"], (_h = ["abc"], _h.raw = ["abc"], f(_h))[0].member(_g, 1, 2)); -(_j = ["abc", "def", "ghi"], _j.raw = ["abc", "def", "ghi"], (_k = ["abc", "def", "ghi"], _k.raw = ["abc", "def", "ghi"], f(_k, 1, 2))["member"].member(_j, 1, 2)); -(_l = ["abc", "def", "ghi"], _l.raw = ["abc", "def", "ghi"], (_m = ["abc", "def", "ghi"], _m.raw = ["abc", "def", "ghi"], f(_m, true, true))["member"].member(_l, 1, 2)); +f(_a || (_a = __getTemplateObject(["abc"], ["abc"]))); +f(_b || (_b = __getTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2); +f(_c || (_c = __getTemplateObject(["abc"], ["abc"]))).member; +f(_d || (_d = __getTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2).member; +f(_e || (_e = __getTemplateObject(["abc"], ["abc"])))["member"]; +f(_f || (_f = __getTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2)["member"]; +f(_g || (_g = __getTemplateObject(["abc"], ["abc"])))[0].member(_h || (_h = __getTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2); +f(_j || (_j = __getTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2)["member"].member(_k || (_k = __getTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2); +f(_l || (_l = __getTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), true, true)["member"].member(_m || (_m = __getTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2); f.thisIsNotATag("abc"); f.thisIsNotATag("abc" + 1 + "def" + 2 + "ghi"); -var _a, _b, _c, _d, _e, _f, _h, _g, _k, _j, _m, _l; +var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m; diff --git a/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressions.js b/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressions.js index a896a811ffbbe..5ca2043061e5d 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressions.js +++ b/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressions.js @@ -16,6 +16,13 @@ var x = new new new f `abc${ 0 }def`.member("hello")(42) === true; //// [taggedTemplateStringsWithManyCallAndMemberExpressions.js] +var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { + if (Object.freeze && Object.defineProperty) { + return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + } + cooked.raw = raw; + return cooked; +}; var f; -var x = new new new (_a = ["abc", "def"], _a.raw = ["abc", "def"], f(_a, 0)).member("hello")(42) === true; +var x = new new new f(_a || (_a = __getTemplateObject(["abc", "def"], ["abc", "def"])), 0).member("hello")(42) === true; var _a; diff --git a/tests/baselines/reference/taggedTemplateStringsWithMultilineTemplate.js b/tests/baselines/reference/taggedTemplateStringsWithMultilineTemplate.js index 9ffc0cadfef09..aba46d003a087 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithMultilineTemplate.js +++ b/tests/baselines/reference/taggedTemplateStringsWithMultilineTemplate.js @@ -8,11 +8,18 @@ f ` `; //// [taggedTemplateStringsWithMultilineTemplate.js] +var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { + if (Object.freeze && Object.defineProperty) { + return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + } + cooked.raw = raw; + return cooked; +}; function f() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } } -(_a = ["\n\n"], _a.raw = ["\n\\\n\n"], f(_a)); +f(_a || (_a = __getTemplateObject(["\n\n"], ["\n\\\n\n"]))); var _a; diff --git a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution1.js b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution1.js index 19211c2fa8a3b..fe44bf2f743c5 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution1.js +++ b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution1.js @@ -23,6 +23,13 @@ var z = foo `${1}${2}${3}`; // any (with error) //// [taggedTemplateStringsWithOverloadResolution1.js] +var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { + if (Object.freeze && Object.defineProperty) { + return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + } + cooked.raw = raw; + return cooked; +}; function foo() { var stuff = []; for (var _i = 0; _i < arguments.length; _i++) { @@ -36,10 +43,10 @@ var c = foo([], 1, 2); // boolean var d = foo([], 1, true); // boolean (with error) var e = foo([], 1, "2"); // {} var f = foo([], 1, 2, 3); // any (with error) -var u = (_a = [""], _a.raw = [""], foo(_a)); // number -var v = (_b = ["", ""], _b.raw = ["", ""], foo(_b, 1)); // string -var w = (_c = ["", "", ""], _c.raw = ["", "", ""], foo(_c, 1, 2)); // boolean -var x = (_d = ["", "", ""], _d.raw = ["", "", ""], foo(_d, 1, true)); // boolean (with error) -var y = (_e = ["", "", ""], _e.raw = ["", "", ""], foo(_e, 1, "2")); // {} -var z = (_f = ["", "", "", ""], _f.raw = ["", "", "", ""], foo(_f, 1, 2, 3)); // any (with error) +var u = foo(_a || (_a = __getTemplateObject([""], [""]))); // number +var v = foo(_b || (_b = __getTemplateObject(["", ""], ["", ""])), 1); // string +var w = foo(_c || (_c = __getTemplateObject(["", "", ""], ["", "", ""])), 1, 2); // boolean +var x = foo(_d || (_d = __getTemplateObject(["", "", ""], ["", "", ""])), 1, true); // boolean (with error) +var y = foo(_e || (_e = __getTemplateObject(["", "", ""], ["", "", ""])), 1, "2"); // {} +var z = foo(_f || (_f = __getTemplateObject(["", "", "", ""], ["", "", "", ""])), 1, 2, 3); // any (with error) var _a, _b, _c, _d, _e, _f; diff --git a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2.js b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2.js index 779585ac264d8..35cc1f14c348b 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2.js +++ b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2.js @@ -18,6 +18,13 @@ var c = foo2 `${1}`; var d = foo2([], 1); //// [taggedTemplateStringsWithOverloadResolution2.js] +var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { + if (Object.freeze && Object.defineProperty) { + return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + } + cooked.raw = raw; + return cooked; +}; function foo1() { var stuff = []; for (var _i = 0; _i < arguments.length; _i++) { @@ -25,7 +32,7 @@ function foo1() { } return undefined; } -var a = (_a = ["", ""], _a.raw = ["", ""], foo1(_a, 1)); +var a = foo1(_a || (_a = __getTemplateObject(["", ""], ["", ""])), 1); var b = foo1([], 1); function foo2() { var stuff = []; @@ -34,6 +41,6 @@ function foo2() { } return undefined; } -var c = (_b = ["", ""], _b.raw = ["", ""], foo2(_b, 1)); +var c = foo2(_b || (_b = __getTemplateObject(["", ""], ["", ""])), 1); var d = foo2([], 1); var _a, _b; diff --git a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution3.js b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution3.js index df89f2aeea791..6e5bacfa3705d 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution3.js +++ b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution3.js @@ -73,42 +73,49 @@ fn5 `${ (n) => n.substr(0) }`; //// [taggedTemplateStringsWithOverloadResolution3.js] +var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { + if (Object.freeze && Object.defineProperty) { + return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + } + cooked.raw = raw; + return cooked; +}; function fn1() { return null; } -var s = (_a = ["", ""], _a.raw = ["", ""], fn1(_a, undefined)); +var s = fn1(_a || (_a = __getTemplateObject(["", ""], ["", ""])), undefined); // No candidate overloads found -(_b = ["", ""], _b.raw = ["", ""], fn1(_b, {})); // Error +fn1(_b || (_b = __getTemplateObject(["", ""], ["", ""])), {}); // Error function fn2() { return undefined; } -var d1 = (_c = ["", "", ""], _c.raw = ["", "", ""], fn2(_c, 0, undefined)); // contextually typed -var d2 = (_d = ["", "", ""], _d.raw = ["", "", ""], fn2(_d, 0, undefined)); // any +var d1 = fn2(_c || (_c = __getTemplateObject(["", "", ""], ["", "", ""])), 0, undefined); // contextually typed +var d2 = fn2(_d || (_d = __getTemplateObject(["", "", ""], ["", "", ""])), 0, undefined); // any d1.foo(); // error d2(); // no error (typed as any) // Generic and non-generic overload where generic overload is the only candidate -(_e = ["", "", ""], _e.raw = ["", "", ""], fn2(_e, 0, '')); // OK +fn2(_e || (_e = __getTemplateObject(["", "", ""], ["", "", ""])), 0, ''); // OK // Generic and non-generic overload where non-generic overload is the only candidate -(_f = ["", "", ""], _f.raw = ["", "", ""], fn2(_f, '', 0)); // OK +fn2(_f || (_f = __getTemplateObject(["", "", ""], ["", "", ""])), '', 0); // OK function fn3() { return null; } -var s = (_g = ["", ""], _g.raw = ["", ""], fn3(_g, 3)); -var s = (_h = ["", "", "", ""], _h.raw = ["", "", "", ""], fn3(_h, '', 3, '')); -var n = (_j = ["", "", "", ""], _j.raw = ["", "", "", ""], fn3(_j, 5, 5, 5)); +var s = fn3(_g || (_g = __getTemplateObject(["", ""], ["", ""])), 3); +var s = fn3(_h || (_h = __getTemplateObject(["", "", "", ""], ["", "", "", ""])), '', 3, ''); +var n = fn3(_j || (_j = __getTemplateObject(["", "", "", ""], ["", "", "", ""])), 5, 5, 5); var n; // Generic overloads with differing arity tagging with arguments matching each overload type parameter count -var s = (_k = ["", ""], _k.raw = ["", ""], fn3(_k, 4)); -var s = (_l = ["", "", "", ""], _l.raw = ["", "", "", ""], fn3(_l, '', '', '')); -var n = (_m = ["", "", "", ""], _m.raw = ["", "", "", ""], fn3(_m, '', '', 3)); +var s = fn3(_k || (_k = __getTemplateObject(["", ""], ["", ""])), 4); +var s = fn3(_l || (_l = __getTemplateObject(["", "", "", ""], ["", "", "", ""])), '', '', ''); +var n = fn3(_m || (_m = __getTemplateObject(["", "", "", ""], ["", "", "", ""])), '', '', 3); // Generic overloads with differing arity tagging with argument count that doesn't match any overload -(_o = [""], _o.raw = [""], fn3(_o)); // Error +fn3(_o || (_o = __getTemplateObject([""], [""]))); // Error function fn4() { } // Generic overloads with constraints tagged with types that satisfy the constraints -(_p = ["", "", ""], _p.raw = ["", "", ""], fn4(_p, '', 3)); -(_q = ["", "", ""], _q.raw = ["", "", ""], fn4(_q, 3, '')); -(_r = ["", "", ""], _r.raw = ["", "", ""], fn4(_r, 3, undefined)); -(_s = ["", "", ""], _s.raw = ["", "", ""], fn4(_s, '', null)); +fn4(_p || (_p = __getTemplateObject(["", "", ""], ["", "", ""])), '', 3); +fn4(_q || (_q = __getTemplateObject(["", "", ""], ["", "", ""])), 3, ''); +fn4(_r || (_r = __getTemplateObject(["", "", ""], ["", "", ""])), 3, undefined); +fn4(_s || (_s = __getTemplateObject(["", "", ""], ["", "", ""])), '', null); // Generic overloads with constraints called with type arguments that do not satisfy the constraints -(_t = ["", "", ""], _t.raw = ["", "", ""], fn4(_t, null, null)); // Error +fn4(_t || (_t = __getTemplateObject(["", "", ""], ["", "", ""])), null, null); // Error // Generic overloads with constraints called without type arguments but with types that do not satisfy the constraints -(_u = ["", "", ""], _u.raw = ["", "", ""], fn4(_u, true, null)); -(_v = ["", "", ""], _v.raw = ["", "", ""], fn4(_v, null, true)); +fn4(_u || (_u = __getTemplateObject(["", "", ""], ["", "", ""])), true, null); +fn4(_v || (_v = __getTemplateObject(["", "", ""], ["", "", ""])), null, true); function fn5() { return undefined; } -(_w = ["", ""], _w.raw = ["", ""], fn5(_w, function (n) { return n.toFixed(); })); // will error; 'n' should have type 'string'. -(_x = ["", ""], _x.raw = ["", ""], fn5(_x, function (n) { return n.substr(0); })); +fn5(_w || (_w = __getTemplateObject(["", ""], ["", ""])), function (n) { return n.toFixed(); }); // will error; 'n' should have type 'string'. +fn5(_x || (_x = __getTemplateObject(["", ""], ["", ""])), function (n) { return n.substr(0); }); var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x; diff --git a/tests/baselines/reference/taggedTemplateStringsWithTagNamedDeclare.js b/tests/baselines/reference/taggedTemplateStringsWithTagNamedDeclare.js index 7a96d4b5e4d86..47803b78a1d3c 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithTagNamedDeclare.js +++ b/tests/baselines/reference/taggedTemplateStringsWithTagNamedDeclare.js @@ -5,11 +5,18 @@ function declare(x: any, ...ys: any[]) { declare `Hello ${0} world!`; //// [taggedTemplateStringsWithTagNamedDeclare.js] +var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { + if (Object.freeze && Object.defineProperty) { + return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + } + cooked.raw = raw; + return cooked; +}; function declare(x) { var ys = []; for (var _i = 1; _i < arguments.length; _i++) { ys[_i - 1] = arguments[_i]; } } -(_a = ["Hello ", " world!"], _a.raw = ["Hello ", " world!"], declare(_a, 0)); +declare(_a || (_a = __getTemplateObject(["Hello ", " world!"], ["Hello ", " world!"])), 0); var _a; diff --git a/tests/baselines/reference/taggedTemplateStringsWithTagsTypedAsAny.js b/tests/baselines/reference/taggedTemplateStringsWithTagsTypedAsAny.js index cd3d8ba6701ff..e404fbfd10321 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithTagsTypedAsAny.js +++ b/tests/baselines/reference/taggedTemplateStringsWithTagsTypedAsAny.js @@ -26,17 +26,24 @@ f.thisIsNotATag(`abc`); f.thisIsNotATag(`abc${1}def${2}ghi`); //// [taggedTemplateStringsWithTagsTypedAsAny.js] +var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { + if (Object.freeze && Object.defineProperty) { + return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + } + cooked.raw = raw; + return cooked; +}; var f; -(_a = ["abc"], _a.raw = ["abc"], f(_a)); -(_b = ["abc", "def", "ghi"], _b.raw = ["abc", "def", "ghi"], f(_b, 1, 2)); -(_c = ["abc"], _c.raw = ["abc"], f.g.h(_c)); -(_d = ["abc", "def", "ghi"], _d.raw = ["abc", "def", "ghi"], f.g.h(_d, 1, 2)); -(_e = ["abc"], _e.raw = ["abc"], f(_e)).member; -(_f = ["abc", "def", "ghi"], _f.raw = ["abc", "def", "ghi"], f(_f, 1, 2)).member; -(_g = ["abc"], _g.raw = ["abc"], f(_g))["member"]; -(_h = ["abc", "def", "ghi"], _h.raw = ["abc", "def", "ghi"], f(_h, 1, 2))["member"]; -(_j = ["abc", "def", "ghi"], _j.raw = ["abc", "def", "ghi"], (_k = ["abc"], _k.raw = ["abc"], f(_k))["member"].someOtherTag(_j, 1, 2)); -(_l = ["abc", "def", "ghi"], _l.raw = ["abc", "def", "ghi"], (_m = ["abc", "def", "ghi"], _m.raw = ["abc", "def", "ghi"], f(_m, 1, 2))["member"].someOtherTag(_l, 1, 2)); +f(_a || (_a = __getTemplateObject(["abc"], ["abc"]))); +f(_b || (_b = __getTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2); +f.g.h(_c || (_c = __getTemplateObject(["abc"], ["abc"]))); +f.g.h(_d || (_d = __getTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2); +f(_e || (_e = __getTemplateObject(["abc"], ["abc"]))).member; +f(_f || (_f = __getTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2).member; +f(_g || (_g = __getTemplateObject(["abc"], ["abc"])))["member"]; +f(_h || (_h = __getTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2)["member"]; +f(_j || (_j = __getTemplateObject(["abc"], ["abc"])))["member"].someOtherTag(_k || (_k = __getTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2); +f(_l || (_l = __getTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2)["member"].someOtherTag(_m || (_m = __getTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2); f.thisIsNotATag("abc"); f.thisIsNotATag("abc" + 1 + "def" + 2 + "ghi"); -var _a, _b, _c, _d, _e, _f, _g, _h, _k, _j, _m, _l; +var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m; diff --git a/tests/baselines/reference/taggedTemplateStringsWithTypeErrorInFunctionExpressionsInSubstitutionExpression.js b/tests/baselines/reference/taggedTemplateStringsWithTypeErrorInFunctionExpressionsInSubstitutionExpression.js index 3e2889ce1f35e..2da3093dbf7e5 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithTypeErrorInFunctionExpressionsInSubstitutionExpression.js +++ b/tests/baselines/reference/taggedTemplateStringsWithTypeErrorInFunctionExpressionsInSubstitutionExpression.js @@ -5,11 +5,18 @@ function foo(...rest: any[]) { foo `${function (x: number) { x = "bad"; } }`; //// [taggedTemplateStringsWithTypeErrorInFunctionExpressionsInSubstitutionExpression.js] +var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { + if (Object.freeze && Object.defineProperty) { + return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + } + cooked.raw = raw; + return cooked; +}; function foo() { var rest = []; for (var _i = 0; _i < arguments.length; _i++) { rest[_i] = arguments[_i]; } } -(_a = ["", ""], _a.raw = ["", ""], foo(_a, function (x) { x = "bad"; })); +foo(_a || (_a = __getTemplateObject(["", ""], ["", ""])), function (x) { x = "bad"; }); var _a; diff --git a/tests/baselines/reference/taggedTemplateStringsWithTypedTags.js b/tests/baselines/reference/taggedTemplateStringsWithTypedTags.js index 5f3409a1e5878..32a646c4749fb 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithTypedTags.js +++ b/tests/baselines/reference/taggedTemplateStringsWithTypedTags.js @@ -32,15 +32,22 @@ f.thisIsNotATag(`abc${1}def${2}ghi`); //// [taggedTemplateStringsWithTypedTags.js] +var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { + if (Object.freeze && Object.defineProperty) { + return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + } + cooked.raw = raw; + return cooked; +}; var f; -(_a = ["abc"], _a.raw = ["abc"], f(_a)); -(_b = ["abc", "def", "ghi"], _b.raw = ["abc", "def", "ghi"], f(_b, 1, 2)); -(_c = ["abc"], _c.raw = ["abc"], f(_c)).member; -(_d = ["abc", "def", "ghi"], _d.raw = ["abc", "def", "ghi"], f(_d, 1, 2)).member; -(_e = ["abc"], _e.raw = ["abc"], f(_e))["member"]; -(_f = ["abc", "def", "ghi"], _f.raw = ["abc", "def", "ghi"], f(_f, 1, 2))["member"]; -(_g = ["abc", "def", "ghi"], _g.raw = ["abc", "def", "ghi"], (_h = ["abc"], _h.raw = ["abc"], f(_h))[0].member(_g, 1, 2)); -(_j = ["abc", "def", "ghi"], _j.raw = ["abc", "def", "ghi"], (_k = ["abc", "def", "ghi"], _k.raw = ["abc", "def", "ghi"], f(_k, 1, 2))["member"].member(_j, 1, 2)); +f(_a || (_a = __getTemplateObject(["abc"], ["abc"]))); +f(_b || (_b = __getTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2); +f(_c || (_c = __getTemplateObject(["abc"], ["abc"]))).member; +f(_d || (_d = __getTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2).member; +f(_e || (_e = __getTemplateObject(["abc"], ["abc"])))["member"]; +f(_f || (_f = __getTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2)["member"]; +f(_g || (_g = __getTemplateObject(["abc"], ["abc"])))[0].member(_h || (_h = __getTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2); +f(_j || (_j = __getTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2)["member"].member(_k || (_k = __getTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2); f.thisIsNotATag("abc"); f.thisIsNotATag("abc" + 1 + "def" + 2 + "ghi"); -var _a, _b, _c, _d, _e, _f, _h, _g, _k, _j; +var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k; diff --git a/tests/baselines/reference/taggedTemplateStringsWithUnicodeEscapes.js b/tests/baselines/reference/taggedTemplateStringsWithUnicodeEscapes.js index 6a04b082e1f08..58f3aecfce3d4 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithUnicodeEscapes.js +++ b/tests/baselines/reference/taggedTemplateStringsWithUnicodeEscapes.js @@ -5,11 +5,18 @@ function f(...args: any[]) { f `'\u{1f4a9}'${ " should be converted to " }'\uD83D\uDCA9'`; //// [taggedTemplateStringsWithUnicodeEscapes.js] +var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { + if (Object.freeze && Object.defineProperty) { + return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + } + cooked.raw = raw; + return cooked; +}; function f() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } } -(_a = ["'\uD83D\uDCA9'", "'\uD83D\uDCA9'"], _a.raw = ["'\\u{1f4a9}'", "'\\uD83D\\uDCA9'"], f(_a, " should be converted to ")); +f(_a || (_a = __getTemplateObject(["'\uD83D\uDCA9'", "'\uD83D\uDCA9'"], ["'\\u{1f4a9}'", "'\\uD83D\\uDCA9'"])), " should be converted to "); var _a; diff --git a/tests/baselines/reference/taggedTemplateStringsWithWhitespaceEscapes.js b/tests/baselines/reference/taggedTemplateStringsWithWhitespaceEscapes.js index e8f219fd12582..01c75a2c5856c 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithWhitespaceEscapes.js +++ b/tests/baselines/reference/taggedTemplateStringsWithWhitespaceEscapes.js @@ -5,11 +5,18 @@ function f(...args: any[]) { f `\t\n\v\f\r\\`; //// [taggedTemplateStringsWithWhitespaceEscapes.js] +var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { + if (Object.freeze && Object.defineProperty) { + return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + } + cooked.raw = raw; + return cooked; +}; function f() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } } -(_a = ["\t\n\v\f\r\\"], _a.raw = ["\\t\\n\\v\\f\\r\\\\"], f(_a)); +f(_a || (_a = __getTemplateObject(["\t\n\v\f\r\\"], ["\\t\\n\\v\\f\\r\\\\"]))); var _a; diff --git a/tests/baselines/reference/taggedTemplateUntypedTagCall01.js b/tests/baselines/reference/taggedTemplateUntypedTagCall01.js index e0d16eec39db9..78ea6b5536da1 100644 --- a/tests/baselines/reference/taggedTemplateUntypedTagCall01.js +++ b/tests/baselines/reference/taggedTemplateUntypedTagCall01.js @@ -3,6 +3,13 @@ var tag: Function; tag `Hello world!`; //// [taggedTemplateUntypedTagCall01.js] +var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { + if (Object.freeze && Object.defineProperty) { + return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + } + cooked.raw = raw; + return cooked; +}; var tag; -(_a = ["Hello world!"], _a.raw = ["Hello world!"], tag(_a)); +tag(_a || (_a = __getTemplateObject(["Hello world!"], ["Hello world!"]))); var _a; diff --git a/tests/baselines/reference/taggedTemplateWithConstructableTag01.js b/tests/baselines/reference/taggedTemplateWithConstructableTag01.js index dacae2f529e15..89c6a92d7922c 100644 --- a/tests/baselines/reference/taggedTemplateWithConstructableTag01.js +++ b/tests/baselines/reference/taggedTemplateWithConstructableTag01.js @@ -4,10 +4,17 @@ class CtorTag { } CtorTag `Hello world!`; //// [taggedTemplateWithConstructableTag01.js] +var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { + if (Object.freeze && Object.defineProperty) { + return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + } + cooked.raw = raw; + return cooked; +}; var CtorTag = /** @class */ (function () { function CtorTag() { } return CtorTag; }()); -(_a = ["Hello world!"], _a.raw = ["Hello world!"], CtorTag(_a)); +CtorTag(_a || (_a = __getTemplateObject(["Hello world!"], ["Hello world!"]))); var _a; diff --git a/tests/baselines/reference/taggedTemplateWithConstructableTag02.js b/tests/baselines/reference/taggedTemplateWithConstructableTag02.js index 6c38d508bd2c9..4b7af2a53f446 100644 --- a/tests/baselines/reference/taggedTemplateWithConstructableTag02.js +++ b/tests/baselines/reference/taggedTemplateWithConstructableTag02.js @@ -7,6 +7,13 @@ var tag: I; tag `Hello world!`; //// [taggedTemplateWithConstructableTag02.js] +var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { + if (Object.freeze && Object.defineProperty) { + return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + } + cooked.raw = raw; + return cooked; +}; var tag; -(_a = ["Hello world!"], _a.raw = ["Hello world!"], tag(_a)); +tag(_a || (_a = __getTemplateObject(["Hello world!"], ["Hello world!"]))); var _a; diff --git a/tests/baselines/reference/templateStringInModuleName.js b/tests/baselines/reference/templateStringInModuleName.js index 36f619176e435..5c76f8dd91010 100644 --- a/tests/baselines/reference/templateStringInModuleName.js +++ b/tests/baselines/reference/templateStringInModuleName.js @@ -6,12 +6,19 @@ declare module `M${2}` { } //// [templateStringInModuleName.js] +var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { + if (Object.freeze && Object.defineProperty) { + return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + } + cooked.raw = raw; + return cooked; +}; declare; -(_a = ["M1"], _a.raw = ["M1"], module(_a)); +module(_a || (_a = __getTemplateObject(["M1"], ["M1"]))); { } declare; -(_b = ["M", ""], _b.raw = ["M", ""], module(_b, 2)); +module(_b || (_b = __getTemplateObject(["M", ""], ["M", ""])), 2); { } var _a, _b; diff --git a/tests/baselines/reference/templateStringInObjectLiteral.js b/tests/baselines/reference/templateStringInObjectLiteral.js index 0381e9a95e7c9..f0990622a7285 100644 --- a/tests/baselines/reference/templateStringInObjectLiteral.js +++ b/tests/baselines/reference/templateStringInObjectLiteral.js @@ -5,8 +5,15 @@ var x = { } //// [templateStringInObjectLiteral.js] -var x = (_a = ["b"], _a.raw = ["b"], { +var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { + if (Object.freeze && Object.defineProperty) { + return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + } + cooked.raw = raw; + return cooked; +}; +var x = { a: "abc" + 123 + "def" -}(_a)); +}(_a || (_a = __getTemplateObject(["b"], ["b"]))); 321; var _a; diff --git a/tests/baselines/reference/templateStringInPropertyName1.js b/tests/baselines/reference/templateStringInPropertyName1.js index 239ba78d82739..9fb45840ce2bb 100644 --- a/tests/baselines/reference/templateStringInPropertyName1.js +++ b/tests/baselines/reference/templateStringInPropertyName1.js @@ -4,6 +4,13 @@ var x = { } //// [templateStringInPropertyName1.js] -var x = (_a = ["a"], _a.raw = ["a"], {}(_a)); +var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { + if (Object.freeze && Object.defineProperty) { + return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + } + cooked.raw = raw; + return cooked; +}; +var x = {}(_a || (_a = __getTemplateObject(["a"], ["a"]))); 321; var _a; diff --git a/tests/baselines/reference/templateStringInPropertyName2.js b/tests/baselines/reference/templateStringInPropertyName2.js index 8a71a6e30be5c..952c2472fd01e 100644 --- a/tests/baselines/reference/templateStringInPropertyName2.js +++ b/tests/baselines/reference/templateStringInPropertyName2.js @@ -4,6 +4,13 @@ var x = { } //// [templateStringInPropertyName2.js] -var x = (_a = ["abc", "def", "ghi"], _a.raw = ["abc", "def", "ghi"], {}(_a, 123, 456)); +var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { + if (Object.freeze && Object.defineProperty) { + return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + } + cooked.raw = raw; + return cooked; +}; +var x = {}(_a || (_a = __getTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 123, 456); 321; var _a; diff --git a/tests/baselines/reference/templateStringInTaggedTemplate.js b/tests/baselines/reference/templateStringInTaggedTemplate.js index 3ba70ba84b637..a4f6e265cfa3f 100644 --- a/tests/baselines/reference/templateStringInTaggedTemplate.js +++ b/tests/baselines/reference/templateStringInTaggedTemplate.js @@ -2,5 +2,12 @@ `I AM THE ${ `${ `TAG` } ` } PORTION` `I ${ "AM" } THE TEMPLATE PORTION` //// [templateStringInTaggedTemplate.js] -(_a = ["I ", " THE TEMPLATE PORTION"], _a.raw = ["I ", " THE TEMPLATE PORTION"], ("I AM THE " + "TAG" + " " + " PORTION")(_a, "AM")); +var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { + if (Object.freeze && Object.defineProperty) { + return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + } + cooked.raw = raw; + return cooked; +}; +("I AM THE " + "TAG" + " " + " PORTION")(_a || (_a = __getTemplateObject(["I ", " THE TEMPLATE PORTION"], ["I ", " THE TEMPLATE PORTION"])), "AM"); var _a; diff --git a/tests/baselines/reference/templateStringsArrayTypeDefinedInES5Mode.js b/tests/baselines/reference/templateStringsArrayTypeDefinedInES5Mode.js index 517383f6f2906..e93cf3fc78df2 100644 --- a/tests/baselines/reference/templateStringsArrayTypeDefinedInES5Mode.js +++ b/tests/baselines/reference/templateStringsArrayTypeDefinedInES5Mode.js @@ -10,6 +10,13 @@ f({}, 10, 10); f `abcdef${ 1234 }${ 5678 }ghijkl`; //// [templateStringsArrayTypeDefinedInES5Mode.js] +var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { + if (Object.freeze && Object.defineProperty) { + return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + } + cooked.raw = raw; + return cooked; +}; var TemplateStringsArray = /** @class */ (function () { function TemplateStringsArray() { } @@ -18,5 +25,5 @@ var TemplateStringsArray = /** @class */ (function () { function f(x, y, z) { } f({}, 10, 10); -(_a = ["abcdef", "", "ghijkl"], _a.raw = ["abcdef", "", "ghijkl"], f(_a, 1234, 5678)); +f(_a || (_a = __getTemplateObject(["abcdef", "", "ghijkl"], ["abcdef", "", "ghijkl"])), 1234, 5678); var _a; diff --git a/tests/baselines/reference/templateStringsArrayTypeNotDefinedES5Mode.js b/tests/baselines/reference/templateStringsArrayTypeNotDefinedES5Mode.js index 6daa46d037b5c..5842ba96eb49e 100644 --- a/tests/baselines/reference/templateStringsArrayTypeNotDefinedES5Mode.js +++ b/tests/baselines/reference/templateStringsArrayTypeNotDefinedES5Mode.js @@ -7,8 +7,15 @@ f({}, 10, 10); f `abcdef${ 1234 }${ 5678 }ghijkl`; //// [templateStringsArrayTypeNotDefinedES5Mode.js] +var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { + if (Object.freeze && Object.defineProperty) { + return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + } + cooked.raw = raw; + return cooked; +}; function f(x, y, z) { } f({}, 10, 10); -(_a = ["abcdef", "", "ghijkl"], _a.raw = ["abcdef", "", "ghijkl"], f(_a, 1234, 5678)); +f(_a || (_a = __getTemplateObject(["abcdef", "", "ghijkl"], ["abcdef", "", "ghijkl"])), 1234, 5678); var _a; From aa634ba7c0309b0ee5ae42c475f70a510ac68aae Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Thu, 14 Sep 2017 14:00:12 -0700 Subject: [PATCH 03/26] Added printer test for 'new (f().x)'. --- src/harness/unittests/printer.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/harness/unittests/printer.ts b/src/harness/unittests/printer.ts index 825bfddbb4a46..0cc691716b55c 100644 --- a/src/harness/unittests/printer.ts +++ b/src/harness/unittests/printer.ts @@ -110,6 +110,19 @@ namespace ts { createSourceFile("source.ts", "", ScriptTarget.ES2015) )); + printsCorrectly("newExpressionWithPropertyAccessOnCallExpression", {}, printer => printer.printNode( + EmitHint.Unspecified, + createNew( + createPropertyAccess( + createCall( + createIdentifier("f"), /*typeArguments*/ undefined, /*argumentsArray*/ undefined), + "x"), + /*typeArguments*/ undefined, + /*argumentsArray*/ undefined + ), + createSourceFile("source.ts", "", ScriptTarget.ESNext)) + ); + // https://github.com/Microsoft/TypeScript/issues/15971 printsCorrectly("classWithOptionalMethodAndProperty", {}, printer => printer.printNode( EmitHint.Unspecified, From 4beb9b09645c4a8c152632c0668cea18b0882d8e Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Thu, 14 Sep 2017 14:00:33 -0700 Subject: [PATCH 04/26] Accepted (incorrect) baselines. --- ...eCorrectly.newExpressionWithPropertyAccessOnCallExpression.js | 1 + 1 file changed, 1 insertion(+) create mode 100644 tests/baselines/reference/printerApi/printsNodeCorrectly.newExpressionWithPropertyAccessOnCallExpression.js diff --git a/tests/baselines/reference/printerApi/printsNodeCorrectly.newExpressionWithPropertyAccessOnCallExpression.js b/tests/baselines/reference/printerApi/printsNodeCorrectly.newExpressionWithPropertyAccessOnCallExpression.js new file mode 100644 index 0000000000000..ffc51549bb1cd --- /dev/null +++ b/tests/baselines/reference/printerApi/printsNodeCorrectly.newExpressionWithPropertyAccessOnCallExpression.js @@ -0,0 +1 @@ +new f().x \ No newline at end of file From 6a9fa839e6342e4ead060e1f898114a732b5a5c9 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Thu, 14 Sep 2017 14:02:03 -0700 Subject: [PATCH 05/26] Parenthesize new'd expressions based on the leftmost node (or the first node that is a call expression). --- src/compiler/factory.ts | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/compiler/factory.ts b/src/compiler/factory.ts index 4492c3ed47426..01e67105a56ab 100644 --- a/src/compiler/factory.ts +++ b/src/compiler/factory.ts @@ -3803,15 +3803,15 @@ namespace ts { * @param expression The Expression node. */ export function parenthesizeForNew(expression: Expression): LeftHandSideExpression { - const emittedExpression = skipPartiallyEmittedExpressions(expression); - switch (emittedExpression.kind) { + const leftmostExpr = getLeftmostExpression(expression, /*stopAtCallExpressions*/ true); + switch (leftmostExpr.kind) { case SyntaxKind.CallExpression: return createParen(expression); case SyntaxKind.NewExpression: - return (emittedExpression).arguments - ? expression - : createParen(expression); + return !(leftmostExpr as NewExpression).arguments + ? createParen(expression) + : expression; } return parenthesizeForAccess(expression); @@ -3892,7 +3892,7 @@ namespace ts { } } else { - const leftmostExpressionKind = getLeftmostExpression(emittedExpression).kind; + const leftmostExpressionKind = getLeftmostExpression(emittedExpression, /*stopAtCallExpressions*/ false).kind; if (leftmostExpressionKind === SyntaxKind.ObjectLiteralExpression || leftmostExpressionKind === SyntaxKind.FunctionExpression) { return setTextRange(createParen(expression), expression); } @@ -3939,7 +3939,7 @@ namespace ts { } } - function getLeftmostExpression(node: Expression): Expression { + function getLeftmostExpression(node: Expression, stopAtCallExpressions: boolean) { while (true) { switch (node.kind) { case SyntaxKind.PostfixUnaryExpression: @@ -3955,6 +3955,9 @@ namespace ts { continue; case SyntaxKind.CallExpression: + if (stopAtCallExpressions) { + return node; + } case SyntaxKind.ElementAccessExpression: case SyntaxKind.PropertyAccessExpression: node = (node).expression; @@ -3967,10 +3970,11 @@ namespace ts { return node; } + } export function parenthesizeConciseBody(body: ConciseBody): ConciseBody { - if (!isBlock(body) && getLeftmostExpression(body).kind === SyntaxKind.ObjectLiteralExpression) { + if (!isBlock(body) && getLeftmostExpression(body, /*stopAtCallExpressions*/ false).kind === SyntaxKind.ObjectLiteralExpression) { return setTextRange(createParen(body), body); } From c966059de144e342b3726cfc3b4cc14fc892fe5f Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Thu, 14 Sep 2017 14:07:06 -0700 Subject: [PATCH 06/26] Accepted baselines. --- ...Correctly.newExpressionWithPropertyAccessOnCallExpression.js | 2 +- .../taggedTemplateStringsWithManyCallAndMemberExpressions.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/baselines/reference/printerApi/printsNodeCorrectly.newExpressionWithPropertyAccessOnCallExpression.js b/tests/baselines/reference/printerApi/printsNodeCorrectly.newExpressionWithPropertyAccessOnCallExpression.js index ffc51549bb1cd..e3d961ca702f8 100644 --- a/tests/baselines/reference/printerApi/printsNodeCorrectly.newExpressionWithPropertyAccessOnCallExpression.js +++ b/tests/baselines/reference/printerApi/printsNodeCorrectly.newExpressionWithPropertyAccessOnCallExpression.js @@ -1 +1 @@ -new f().x \ No newline at end of file +new (f().x) \ No newline at end of file diff --git a/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressions.js b/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressions.js index 5ca2043061e5d..481be98c6f50b 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressions.js +++ b/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressions.js @@ -24,5 +24,5 @@ var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked return cooked; }; var f; -var x = new new new f(_a || (_a = __getTemplateObject(["abc", "def"], ["abc", "def"])), 0).member("hello")(42) === true; +var x = new new new (f(_a || (_a = __getTemplateObject(["abc", "def"], ["abc", "def"])), 0).member)("hello")(42) === true; var _a; From 8fbb30453f695a35f6f4a48e2a75a4b5ff220751 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Thu, 14 Sep 2017 14:26:47 -0700 Subject: [PATCH 07/26] Add a test case for conditional expressions just in case. --- src/harness/unittests/printer.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/harness/unittests/printer.ts b/src/harness/unittests/printer.ts index 0cc691716b55c..6443199bd11b8 100644 --- a/src/harness/unittests/printer.ts +++ b/src/harness/unittests/printer.ts @@ -123,6 +123,19 @@ namespace ts { createSourceFile("source.ts", "", ScriptTarget.ESNext)) ); + printsCorrectly("newExpressionOnConditionalExpression", {}, printer => printer.printNode( + EmitHint.Unspecified, + createNew( + createConditional( + createIdentifier("x"), createToken(SyntaxKind.QuestionToken), + createIdentifier("y"), createToken(SyntaxKind.ColonToken), + createIdentifier("z")), + /*typeArguments*/ undefined, + /*argumentsArray*/ undefined + ), + createSourceFile("source.ts", "", ScriptTarget.ESNext)) + ); + // https://github.com/Microsoft/TypeScript/issues/15971 printsCorrectly("classWithOptionalMethodAndProperty", {}, printer => printer.printNode( EmitHint.Unspecified, From 7871e08502ea45a4864669d76585134be00e8995 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Thu, 14 Sep 2017 14:27:08 -0700 Subject: [PATCH 08/26] Accepted baselines. --- .../printsNodeCorrectly.newExpressionOnConditionalExpression.js | 1 + 1 file changed, 1 insertion(+) create mode 100644 tests/baselines/reference/printerApi/printsNodeCorrectly.newExpressionOnConditionalExpression.js diff --git a/tests/baselines/reference/printerApi/printsNodeCorrectly.newExpressionOnConditionalExpression.js b/tests/baselines/reference/printerApi/printsNodeCorrectly.newExpressionOnConditionalExpression.js new file mode 100644 index 0000000000000..fe8f852f26fcd --- /dev/null +++ b/tests/baselines/reference/printerApi/printsNodeCorrectly.newExpressionOnConditionalExpression.js @@ -0,0 +1 @@ +new (x ? y : z) \ No newline at end of file From 9f669d007409b00026e39ac5e8b64e4d417a5ca2 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Thu, 14 Sep 2017 14:55:58 -0700 Subject: [PATCH 09/26] Explicit fall-through. --- src/compiler/factory.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/compiler/factory.ts b/src/compiler/factory.ts index 01e67105a56ab..cbca0d3fdf425 100644 --- a/src/compiler/factory.ts +++ b/src/compiler/factory.ts @@ -3958,6 +3958,7 @@ namespace ts { if (stopAtCallExpressions) { return node; } + // falls through case SyntaxKind.ElementAccessExpression: case SyntaxKind.PropertyAccessExpression: node = (node).expression; From e9c6dfe7b5ef086e6ed2f4fc41091806486321f6 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Thu, 14 Sep 2017 17:30:10 -0700 Subject: [PATCH 10/26] Remove freezing behavior from tagged template helper. --- src/compiler/transformers/es2015.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/compiler/transformers/es2015.ts b/src/compiler/transformers/es2015.ts index 3a21e1fc94f7a..5b90ac51073d9 100644 --- a/src/compiler/transformers/es2015.ts +++ b/src/compiler/transformers/es2015.ts @@ -4087,8 +4087,8 @@ namespace ts { priority: 0, text: ` var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { - if (Object.freeze && Object.defineProperty) { - return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + if (Object.defineProperty) { + return Object.defineProperty(cooked, "raw", { value: raw }); } cooked.raw = raw; return cooked; From 16567907492985dddc021ae8f14ebb9679dcc699 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Thu, 14 Sep 2017 17:44:06 -0700 Subject: [PATCH 11/26] Accepted baselines. --- tests/baselines/reference/asOperator3.js | 4 ++-- tests/baselines/reference/asOperatorASI.js | 4 ++-- .../reference/taggedTemplateStringsHexadecimalEscapes.js | 4 ++-- ...edTemplateStringsPlainCharactersThatArePartsOfEscapes01.js | 4 ++-- .../reference/taggedTemplateStringsTypeArgumentInference.js | 4 ++-- .../taggedTemplateStringsWithIncompatibleTypedTags.js | 4 ++-- .../taggedTemplateStringsWithManyCallAndMemberExpressions.js | 4 ++-- .../reference/taggedTemplateStringsWithMultilineTemplate.js | 4 ++-- .../reference/taggedTemplateStringsWithOverloadResolution1.js | 4 ++-- .../reference/taggedTemplateStringsWithOverloadResolution2.js | 4 ++-- .../reference/taggedTemplateStringsWithOverloadResolution3.js | 4 ++-- .../reference/taggedTemplateStringsWithTagNamedDeclare.js | 4 ++-- .../reference/taggedTemplateStringsWithTagsTypedAsAny.js | 4 ++-- ...hTypeErrorInFunctionExpressionsInSubstitutionExpression.js | 4 ++-- .../baselines/reference/taggedTemplateStringsWithTypedTags.js | 4 ++-- .../reference/taggedTemplateStringsWithUnicodeEscapes.js | 4 ++-- .../reference/taggedTemplateStringsWithWhitespaceEscapes.js | 4 ++-- tests/baselines/reference/taggedTemplateUntypedTagCall01.js | 4 ++-- .../reference/taggedTemplateWithConstructableTag01.js | 4 ++-- .../reference/taggedTemplateWithConstructableTag02.js | 4 ++-- tests/baselines/reference/templateStringInModuleName.js | 4 ++-- tests/baselines/reference/templateStringInObjectLiteral.js | 4 ++-- tests/baselines/reference/templateStringInPropertyName1.js | 4 ++-- tests/baselines/reference/templateStringInPropertyName2.js | 4 ++-- tests/baselines/reference/templateStringInTaggedTemplate.js | 4 ++-- .../reference/templateStringsArrayTypeDefinedInES5Mode.js | 4 ++-- .../reference/templateStringsArrayTypeNotDefinedES5Mode.js | 4 ++-- 27 files changed, 54 insertions(+), 54 deletions(-) diff --git a/tests/baselines/reference/asOperator3.js b/tests/baselines/reference/asOperator3.js index c1d81bfe17ca2..24aea8a835e95 100644 --- a/tests/baselines/reference/asOperator3.js +++ b/tests/baselines/reference/asOperator3.js @@ -12,8 +12,8 @@ var h = tag `Hello` as string; //// [asOperator3.js] var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { - if (Object.freeze && Object.defineProperty) { - return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + if (Object.defineProperty) { + return Object.defineProperty(cooked, "raw", { value: raw }); } cooked.raw = raw; return cooked; diff --git a/tests/baselines/reference/asOperatorASI.js b/tests/baselines/reference/asOperatorASI.js index 1205824c670af..d43c3373568d1 100644 --- a/tests/baselines/reference/asOperatorASI.js +++ b/tests/baselines/reference/asOperatorASI.js @@ -13,8 +13,8 @@ as(Foo); // should emit //// [asOperatorASI.js] var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { - if (Object.freeze && Object.defineProperty) { - return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + if (Object.defineProperty) { + return Object.defineProperty(cooked, "raw", { value: raw }); } cooked.raw = raw; return cooked; diff --git a/tests/baselines/reference/taggedTemplateStringsHexadecimalEscapes.js b/tests/baselines/reference/taggedTemplateStringsHexadecimalEscapes.js index a0aeae561e03c..a88a1db2f11de 100644 --- a/tests/baselines/reference/taggedTemplateStringsHexadecimalEscapes.js +++ b/tests/baselines/reference/taggedTemplateStringsHexadecimalEscapes.js @@ -6,8 +6,8 @@ f `\x0D${ "Interrupted CRLF" }\x0A`; //// [taggedTemplateStringsHexadecimalEscapes.js] var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { - if (Object.freeze && Object.defineProperty) { - return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + if (Object.defineProperty) { + return Object.defineProperty(cooked, "raw", { value: raw }); } cooked.raw = raw; return cooked; diff --git a/tests/baselines/reference/taggedTemplateStringsPlainCharactersThatArePartsOfEscapes01.js b/tests/baselines/reference/taggedTemplateStringsPlainCharactersThatArePartsOfEscapes01.js index a74d112ee3d18..1aa46577c55db 100644 --- a/tests/baselines/reference/taggedTemplateStringsPlainCharactersThatArePartsOfEscapes01.js +++ b/tests/baselines/reference/taggedTemplateStringsPlainCharactersThatArePartsOfEscapes01.js @@ -7,8 +7,8 @@ f `0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2028 2029 0085 t v f b r //// [taggedTemplateStringsPlainCharactersThatArePartsOfEscapes01.js] var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { - if (Object.freeze && Object.defineProperty) { - return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + if (Object.defineProperty) { + return Object.defineProperty(cooked, "raw", { value: raw }); } cooked.raw = raw; return cooked; diff --git a/tests/baselines/reference/taggedTemplateStringsTypeArgumentInference.js b/tests/baselines/reference/taggedTemplateStringsTypeArgumentInference.js index 262eee663cd2a..ba59a66c53a95 100644 --- a/tests/baselines/reference/taggedTemplateStringsTypeArgumentInference.js +++ b/tests/baselines/reference/taggedTemplateStringsTypeArgumentInference.js @@ -93,8 +93,8 @@ var arr: any[]; //// [taggedTemplateStringsTypeArgumentInference.js] var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { - if (Object.freeze && Object.defineProperty) { - return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + if (Object.defineProperty) { + return Object.defineProperty(cooked, "raw", { value: raw }); } cooked.raw = raw; return cooked; diff --git a/tests/baselines/reference/taggedTemplateStringsWithIncompatibleTypedTags.js b/tests/baselines/reference/taggedTemplateStringsWithIncompatibleTypedTags.js index 69c828fae3db3..ab7bdc247ae93 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithIncompatibleTypedTags.js +++ b/tests/baselines/reference/taggedTemplateStringsWithIncompatibleTypedTags.js @@ -35,8 +35,8 @@ f.thisIsNotATag(`abc${1}def${2}ghi`); //// [taggedTemplateStringsWithIncompatibleTypedTags.js] var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { - if (Object.freeze && Object.defineProperty) { - return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + if (Object.defineProperty) { + return Object.defineProperty(cooked, "raw", { value: raw }); } cooked.raw = raw; return cooked; diff --git a/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressions.js b/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressions.js index 481be98c6f50b..5d681ec45847d 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressions.js +++ b/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressions.js @@ -17,8 +17,8 @@ var x = new new new f `abc${ 0 }def`.member("hello")(42) === true; //// [taggedTemplateStringsWithManyCallAndMemberExpressions.js] var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { - if (Object.freeze && Object.defineProperty) { - return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + if (Object.defineProperty) { + return Object.defineProperty(cooked, "raw", { value: raw }); } cooked.raw = raw; return cooked; diff --git a/tests/baselines/reference/taggedTemplateStringsWithMultilineTemplate.js b/tests/baselines/reference/taggedTemplateStringsWithMultilineTemplate.js index aba46d003a087..9e1bb3e53fe72 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithMultilineTemplate.js +++ b/tests/baselines/reference/taggedTemplateStringsWithMultilineTemplate.js @@ -9,8 +9,8 @@ f ` //// [taggedTemplateStringsWithMultilineTemplate.js] var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { - if (Object.freeze && Object.defineProperty) { - return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + if (Object.defineProperty) { + return Object.defineProperty(cooked, "raw", { value: raw }); } cooked.raw = raw; return cooked; diff --git a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution1.js b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution1.js index fe44bf2f743c5..09c1d770161e6 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution1.js +++ b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution1.js @@ -24,8 +24,8 @@ var z = foo `${1}${2}${3}`; // any (with error) //// [taggedTemplateStringsWithOverloadResolution1.js] var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { - if (Object.freeze && Object.defineProperty) { - return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + if (Object.defineProperty) { + return Object.defineProperty(cooked, "raw", { value: raw }); } cooked.raw = raw; return cooked; diff --git a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2.js b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2.js index 35cc1f14c348b..16693ad9ecc01 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2.js +++ b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2.js @@ -19,8 +19,8 @@ var d = foo2([], 1); //// [taggedTemplateStringsWithOverloadResolution2.js] var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { - if (Object.freeze && Object.defineProperty) { - return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + if (Object.defineProperty) { + return Object.defineProperty(cooked, "raw", { value: raw }); } cooked.raw = raw; return cooked; diff --git a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution3.js b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution3.js index 6e5bacfa3705d..b3309ca2be52b 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution3.js +++ b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution3.js @@ -74,8 +74,8 @@ fn5 `${ (n) => n.substr(0) }`; //// [taggedTemplateStringsWithOverloadResolution3.js] var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { - if (Object.freeze && Object.defineProperty) { - return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + if (Object.defineProperty) { + return Object.defineProperty(cooked, "raw", { value: raw }); } cooked.raw = raw; return cooked; diff --git a/tests/baselines/reference/taggedTemplateStringsWithTagNamedDeclare.js b/tests/baselines/reference/taggedTemplateStringsWithTagNamedDeclare.js index 47803b78a1d3c..98457802ffc47 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithTagNamedDeclare.js +++ b/tests/baselines/reference/taggedTemplateStringsWithTagNamedDeclare.js @@ -6,8 +6,8 @@ declare `Hello ${0} world!`; //// [taggedTemplateStringsWithTagNamedDeclare.js] var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { - if (Object.freeze && Object.defineProperty) { - return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + if (Object.defineProperty) { + return Object.defineProperty(cooked, "raw", { value: raw }); } cooked.raw = raw; return cooked; diff --git a/tests/baselines/reference/taggedTemplateStringsWithTagsTypedAsAny.js b/tests/baselines/reference/taggedTemplateStringsWithTagsTypedAsAny.js index e404fbfd10321..4308ba6fa29eb 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithTagsTypedAsAny.js +++ b/tests/baselines/reference/taggedTemplateStringsWithTagsTypedAsAny.js @@ -27,8 +27,8 @@ f.thisIsNotATag(`abc${1}def${2}ghi`); //// [taggedTemplateStringsWithTagsTypedAsAny.js] var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { - if (Object.freeze && Object.defineProperty) { - return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + if (Object.defineProperty) { + return Object.defineProperty(cooked, "raw", { value: raw }); } cooked.raw = raw; return cooked; diff --git a/tests/baselines/reference/taggedTemplateStringsWithTypeErrorInFunctionExpressionsInSubstitutionExpression.js b/tests/baselines/reference/taggedTemplateStringsWithTypeErrorInFunctionExpressionsInSubstitutionExpression.js index 2da3093dbf7e5..5707ea9fc2941 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithTypeErrorInFunctionExpressionsInSubstitutionExpression.js +++ b/tests/baselines/reference/taggedTemplateStringsWithTypeErrorInFunctionExpressionsInSubstitutionExpression.js @@ -6,8 +6,8 @@ foo `${function (x: number) { x = "bad"; } }`; //// [taggedTemplateStringsWithTypeErrorInFunctionExpressionsInSubstitutionExpression.js] var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { - if (Object.freeze && Object.defineProperty) { - return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + if (Object.defineProperty) { + return Object.defineProperty(cooked, "raw", { value: raw }); } cooked.raw = raw; return cooked; diff --git a/tests/baselines/reference/taggedTemplateStringsWithTypedTags.js b/tests/baselines/reference/taggedTemplateStringsWithTypedTags.js index 32a646c4749fb..d666248b1c99c 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithTypedTags.js +++ b/tests/baselines/reference/taggedTemplateStringsWithTypedTags.js @@ -33,8 +33,8 @@ f.thisIsNotATag(`abc${1}def${2}ghi`); //// [taggedTemplateStringsWithTypedTags.js] var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { - if (Object.freeze && Object.defineProperty) { - return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + if (Object.defineProperty) { + return Object.defineProperty(cooked, "raw", { value: raw }); } cooked.raw = raw; return cooked; diff --git a/tests/baselines/reference/taggedTemplateStringsWithUnicodeEscapes.js b/tests/baselines/reference/taggedTemplateStringsWithUnicodeEscapes.js index 58f3aecfce3d4..b116661d162da 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithUnicodeEscapes.js +++ b/tests/baselines/reference/taggedTemplateStringsWithUnicodeEscapes.js @@ -6,8 +6,8 @@ f `'\u{1f4a9}'${ " should be converted to " }'\uD83D\uDCA9'`; //// [taggedTemplateStringsWithUnicodeEscapes.js] var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { - if (Object.freeze && Object.defineProperty) { - return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + if (Object.defineProperty) { + return Object.defineProperty(cooked, "raw", { value: raw }); } cooked.raw = raw; return cooked; diff --git a/tests/baselines/reference/taggedTemplateStringsWithWhitespaceEscapes.js b/tests/baselines/reference/taggedTemplateStringsWithWhitespaceEscapes.js index 01c75a2c5856c..f3dcdf341a999 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithWhitespaceEscapes.js +++ b/tests/baselines/reference/taggedTemplateStringsWithWhitespaceEscapes.js @@ -6,8 +6,8 @@ f `\t\n\v\f\r\\`; //// [taggedTemplateStringsWithWhitespaceEscapes.js] var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { - if (Object.freeze && Object.defineProperty) { - return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + if (Object.defineProperty) { + return Object.defineProperty(cooked, "raw", { value: raw }); } cooked.raw = raw; return cooked; diff --git a/tests/baselines/reference/taggedTemplateUntypedTagCall01.js b/tests/baselines/reference/taggedTemplateUntypedTagCall01.js index 78ea6b5536da1..bd2fa9038a8c4 100644 --- a/tests/baselines/reference/taggedTemplateUntypedTagCall01.js +++ b/tests/baselines/reference/taggedTemplateUntypedTagCall01.js @@ -4,8 +4,8 @@ tag `Hello world!`; //// [taggedTemplateUntypedTagCall01.js] var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { - if (Object.freeze && Object.defineProperty) { - return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + if (Object.defineProperty) { + return Object.defineProperty(cooked, "raw", { value: raw }); } cooked.raw = raw; return cooked; diff --git a/tests/baselines/reference/taggedTemplateWithConstructableTag01.js b/tests/baselines/reference/taggedTemplateWithConstructableTag01.js index 89c6a92d7922c..efdbedfb431b9 100644 --- a/tests/baselines/reference/taggedTemplateWithConstructableTag01.js +++ b/tests/baselines/reference/taggedTemplateWithConstructableTag01.js @@ -5,8 +5,8 @@ CtorTag `Hello world!`; //// [taggedTemplateWithConstructableTag01.js] var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { - if (Object.freeze && Object.defineProperty) { - return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + if (Object.defineProperty) { + return Object.defineProperty(cooked, "raw", { value: raw }); } cooked.raw = raw; return cooked; diff --git a/tests/baselines/reference/taggedTemplateWithConstructableTag02.js b/tests/baselines/reference/taggedTemplateWithConstructableTag02.js index 4b7af2a53f446..da7b49e6da5ce 100644 --- a/tests/baselines/reference/taggedTemplateWithConstructableTag02.js +++ b/tests/baselines/reference/taggedTemplateWithConstructableTag02.js @@ -8,8 +8,8 @@ tag `Hello world!`; //// [taggedTemplateWithConstructableTag02.js] var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { - if (Object.freeze && Object.defineProperty) { - return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + if (Object.defineProperty) { + return Object.defineProperty(cooked, "raw", { value: raw }); } cooked.raw = raw; return cooked; diff --git a/tests/baselines/reference/templateStringInModuleName.js b/tests/baselines/reference/templateStringInModuleName.js index 5c76f8dd91010..6496da510919d 100644 --- a/tests/baselines/reference/templateStringInModuleName.js +++ b/tests/baselines/reference/templateStringInModuleName.js @@ -7,8 +7,8 @@ declare module `M${2}` { //// [templateStringInModuleName.js] var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { - if (Object.freeze && Object.defineProperty) { - return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + if (Object.defineProperty) { + return Object.defineProperty(cooked, "raw", { value: raw }); } cooked.raw = raw; return cooked; diff --git a/tests/baselines/reference/templateStringInObjectLiteral.js b/tests/baselines/reference/templateStringInObjectLiteral.js index f0990622a7285..0341a9ddb68cc 100644 --- a/tests/baselines/reference/templateStringInObjectLiteral.js +++ b/tests/baselines/reference/templateStringInObjectLiteral.js @@ -6,8 +6,8 @@ var x = { //// [templateStringInObjectLiteral.js] var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { - if (Object.freeze && Object.defineProperty) { - return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + if (Object.defineProperty) { + return Object.defineProperty(cooked, "raw", { value: raw }); } cooked.raw = raw; return cooked; diff --git a/tests/baselines/reference/templateStringInPropertyName1.js b/tests/baselines/reference/templateStringInPropertyName1.js index 9fb45840ce2bb..fcefb5b8de7ba 100644 --- a/tests/baselines/reference/templateStringInPropertyName1.js +++ b/tests/baselines/reference/templateStringInPropertyName1.js @@ -5,8 +5,8 @@ var x = { //// [templateStringInPropertyName1.js] var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { - if (Object.freeze && Object.defineProperty) { - return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + if (Object.defineProperty) { + return Object.defineProperty(cooked, "raw", { value: raw }); } cooked.raw = raw; return cooked; diff --git a/tests/baselines/reference/templateStringInPropertyName2.js b/tests/baselines/reference/templateStringInPropertyName2.js index 952c2472fd01e..ef3d90ca6dadb 100644 --- a/tests/baselines/reference/templateStringInPropertyName2.js +++ b/tests/baselines/reference/templateStringInPropertyName2.js @@ -5,8 +5,8 @@ var x = { //// [templateStringInPropertyName2.js] var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { - if (Object.freeze && Object.defineProperty) { - return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + if (Object.defineProperty) { + return Object.defineProperty(cooked, "raw", { value: raw }); } cooked.raw = raw; return cooked; diff --git a/tests/baselines/reference/templateStringInTaggedTemplate.js b/tests/baselines/reference/templateStringInTaggedTemplate.js index a4f6e265cfa3f..927aaa442aec1 100644 --- a/tests/baselines/reference/templateStringInTaggedTemplate.js +++ b/tests/baselines/reference/templateStringInTaggedTemplate.js @@ -3,8 +3,8 @@ //// [templateStringInTaggedTemplate.js] var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { - if (Object.freeze && Object.defineProperty) { - return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + if (Object.defineProperty) { + return Object.defineProperty(cooked, "raw", { value: raw }); } cooked.raw = raw; return cooked; diff --git a/tests/baselines/reference/templateStringsArrayTypeDefinedInES5Mode.js b/tests/baselines/reference/templateStringsArrayTypeDefinedInES5Mode.js index e93cf3fc78df2..619ca6d2faaeb 100644 --- a/tests/baselines/reference/templateStringsArrayTypeDefinedInES5Mode.js +++ b/tests/baselines/reference/templateStringsArrayTypeDefinedInES5Mode.js @@ -11,8 +11,8 @@ f `abcdef${ 1234 }${ 5678 }ghijkl`; //// [templateStringsArrayTypeDefinedInES5Mode.js] var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { - if (Object.freeze && Object.defineProperty) { - return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + if (Object.defineProperty) { + return Object.defineProperty(cooked, "raw", { value: raw }); } cooked.raw = raw; return cooked; diff --git a/tests/baselines/reference/templateStringsArrayTypeNotDefinedES5Mode.js b/tests/baselines/reference/templateStringsArrayTypeNotDefinedES5Mode.js index 5842ba96eb49e..512c10ec14d83 100644 --- a/tests/baselines/reference/templateStringsArrayTypeNotDefinedES5Mode.js +++ b/tests/baselines/reference/templateStringsArrayTypeNotDefinedES5Mode.js @@ -8,8 +8,8 @@ f `abcdef${ 1234 }${ 5678 }ghijkl`; //// [templateStringsArrayTypeNotDefinedES5Mode.js] var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { - if (Object.freeze && Object.defineProperty) { - return Object.freeze(Object.defineProperty(cooked, "raw", { value: Object.freeze(raw) })); + if (Object.defineProperty) { + return Object.defineProperty(cooked, "raw", { value: raw }); } cooked.raw = raw; return cooked; From b137f24eb71b97be20feee7d77b465e23bb864e9 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Mon, 18 Sep 2017 13:54:17 -0700 Subject: [PATCH 12/26] %s/getTemplateObject/makeTemplateObject --- src/compiler/transformers/es2015.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/compiler/transformers/es2015.ts b/src/compiler/transformers/es2015.ts index 5b90ac51073d9..9523c61439991 100644 --- a/src/compiler/transformers/es2015.ts +++ b/src/compiler/transformers/es2015.ts @@ -4055,7 +4055,7 @@ namespace ts { function createTemplateObjectHelper(context: TransformationContext, cooked: ArrayLiteralExpression, raw: ArrayLiteralExpression) { context.requestEmitHelper(templateObjectHelper); return createCall( - getHelperName("__getTemplateObject"), + getHelperName("__makeTemplateObject"), /*typeArguments*/ undefined, [ cooked, @@ -4082,11 +4082,11 @@ namespace ts { }; const templateObjectHelper: EmitHelper = { - name: "typescript:getTemplateObject", + name: "typescript:makeTemplateObject", scoped: false, priority: 0, text: ` - var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { + var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { return Object.defineProperty(cooked, "raw", { value: raw }); } From 55657093d3509d8711234b32b95ec2d733c8296b Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Mon, 18 Sep 2017 14:03:36 -0700 Subject: [PATCH 13/26] Accepted baselines. --- tests/baselines/reference/asOperator3.js | 6 +- tests/baselines/reference/asOperatorASI.js | 4 +- ...taggedTemplateStringsHexadecimalEscapes.js | 4 +- ...sPlainCharactersThatArePartsOfEscapes01.js | 4 +- ...gedTemplateStringsTypeArgumentInference.js | 58 +++++++++---------- ...emplateStringsWithIncompatibleTypedTags.js | 20 +++---- ...StringsWithManyCallAndMemberExpressions.js | 4 +- ...gedTemplateStringsWithMultilineTemplate.js | 4 +- ...dTemplateStringsWithOverloadResolution1.js | 14 ++--- ...dTemplateStringsWithOverloadResolution2.js | 6 +- ...dTemplateStringsWithOverloadResolution3.js | 46 +++++++-------- ...aggedTemplateStringsWithTagNamedDeclare.js | 4 +- ...taggedTemplateStringsWithTagsTypedAsAny.js | 22 +++---- ...tionExpressionsInSubstitutionExpression.js | 4 +- .../taggedTemplateStringsWithTypedTags.js | 18 +++--- ...taggedTemplateStringsWithUnicodeEscapes.js | 4 +- ...gedTemplateStringsWithWhitespaceEscapes.js | 4 +- .../taggedTemplateUntypedTagCall01.js | 4 +- .../taggedTemplateWithConstructableTag01.js | 4 +- .../taggedTemplateWithConstructableTag02.js | 4 +- .../reference/templateStringInModuleName.js | 6 +- .../templateStringInObjectLiteral.js | 4 +- .../templateStringInPropertyName1.js | 4 +- .../templateStringInPropertyName2.js | 4 +- .../templateStringInTaggedTemplate.js | 4 +- ...emplateStringsArrayTypeDefinedInES5Mode.js | 4 +- ...mplateStringsArrayTypeNotDefinedES5Mode.js | 4 +- 27 files changed, 134 insertions(+), 134 deletions(-) diff --git a/tests/baselines/reference/asOperator3.js b/tests/baselines/reference/asOperator3.js index 24aea8a835e95..c38d5502f8051 100644 --- a/tests/baselines/reference/asOperator3.js +++ b/tests/baselines/reference/asOperator3.js @@ -11,7 +11,7 @@ var g = tag `Hello ${123} World` as string; var h = tag `Hello` as string; //// [asOperator3.js] -var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { +var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { return Object.defineProperty(cooked, "raw", { value: raw }); } @@ -24,6 +24,6 @@ var c = 123 + 456 + " trailing"; var d = "Hello " + 123 + " World"; var e = "Hello"; var f = 1 + (1 + " end of string"); -var g = tag(_a || (_a = __getTemplateObject(["Hello ", " World"], ["Hello ", " World"])), 123); -var h = tag(_b || (_b = __getTemplateObject(["Hello"], ["Hello"]))); +var g = tag(_a || (_a = __makeTemplateObject(["Hello ", " World"], ["Hello ", " World"])), 123); +var h = tag(_b || (_b = __makeTemplateObject(["Hello"], ["Hello"]))); var _a, _b; diff --git a/tests/baselines/reference/asOperatorASI.js b/tests/baselines/reference/asOperatorASI.js index d43c3373568d1..2a454823a2481 100644 --- a/tests/baselines/reference/asOperatorASI.js +++ b/tests/baselines/reference/asOperatorASI.js @@ -12,7 +12,7 @@ as(Foo); // should emit //// [asOperatorASI.js] -var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { +var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { return Object.defineProperty(cooked, "raw", { value: raw }); } @@ -26,7 +26,7 @@ var Foo = /** @class */ (function () { }()); // Example 1 var x = 10; -as(_a || (_a = __getTemplateObject(["Hello world"], ["Hello world"]))); // should not error +as(_a || (_a = __makeTemplateObject(["Hello world"], ["Hello world"]))); // should not error // Example 2 var y = 20; as(Foo); // should emit diff --git a/tests/baselines/reference/taggedTemplateStringsHexadecimalEscapes.js b/tests/baselines/reference/taggedTemplateStringsHexadecimalEscapes.js index a88a1db2f11de..88828fa770901 100644 --- a/tests/baselines/reference/taggedTemplateStringsHexadecimalEscapes.js +++ b/tests/baselines/reference/taggedTemplateStringsHexadecimalEscapes.js @@ -5,7 +5,7 @@ function f(...args: any[]) { f `\x0D${ "Interrupted CRLF" }\x0A`; //// [taggedTemplateStringsHexadecimalEscapes.js] -var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { +var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { return Object.defineProperty(cooked, "raw", { value: raw }); } @@ -18,5 +18,5 @@ function f() { args[_i] = arguments[_i]; } } -f(_a || (_a = __getTemplateObject(["\r", "\n"], ["\\x0D", "\\x0A"])), "Interrupted CRLF"); +f(_a || (_a = __makeTemplateObject(["\r", "\n"], ["\\x0D", "\\x0A"])), "Interrupted CRLF"); var _a; diff --git a/tests/baselines/reference/taggedTemplateStringsPlainCharactersThatArePartsOfEscapes01.js b/tests/baselines/reference/taggedTemplateStringsPlainCharactersThatArePartsOfEscapes01.js index 1aa46577c55db..3fbfc326dc6aa 100644 --- a/tests/baselines/reference/taggedTemplateStringsPlainCharactersThatArePartsOfEscapes01.js +++ b/tests/baselines/reference/taggedTemplateStringsPlainCharactersThatArePartsOfEscapes01.js @@ -6,7 +6,7 @@ function f(...x: any[]) { f `0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2028 2029 0085 t v f b r n` //// [taggedTemplateStringsPlainCharactersThatArePartsOfEscapes01.js] -var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { +var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { return Object.defineProperty(cooked, "raw", { value: raw }); } @@ -19,5 +19,5 @@ function f() { x[_i] = arguments[_i]; } } -f(_a || (_a = __getTemplateObject(["0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2028 2029 0085 t v f b r n"], ["0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2028 2029 0085 t v f b r n"]))); +f(_a || (_a = __makeTemplateObject(["0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2028 2029 0085 t v f b r n"], ["0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2028 2029 0085 t v f b r n"]))); var _a; diff --git a/tests/baselines/reference/taggedTemplateStringsTypeArgumentInference.js b/tests/baselines/reference/taggedTemplateStringsTypeArgumentInference.js index ba59a66c53a95..4d2c157d9d1a9 100644 --- a/tests/baselines/reference/taggedTemplateStringsTypeArgumentInference.js +++ b/tests/baselines/reference/taggedTemplateStringsTypeArgumentInference.js @@ -92,7 +92,7 @@ var arr: any[]; //// [taggedTemplateStringsTypeArgumentInference.js] -var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { +var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { return Object.defineProperty(cooked, "raw", { value: raw }); } @@ -101,65 +101,65 @@ var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked }; // Generic tag with one parameter function noParams(n) { } -noParams(_a || (_a = __getTemplateObject([""], [""]))); +noParams(_a || (_a = __makeTemplateObject([""], [""]))); // Generic tag with parameter which does not use type parameter function noGenericParams(n) { } -noGenericParams(_b || (_b = __getTemplateObject([""], [""]))); +noGenericParams(_b || (_b = __makeTemplateObject([""], [""]))); // Generic tag with multiple type parameters and only one used in parameter type annotation function someGenerics1a(n, m) { } -someGenerics1a(_c || (_c = __getTemplateObject(["", ""], ["", ""])), 3); +someGenerics1a(_c || (_c = __makeTemplateObject(["", ""], ["", ""])), 3); function someGenerics1b(n, m) { } -someGenerics1b(_d || (_d = __getTemplateObject(["", ""], ["", ""])), 3); +someGenerics1b(_d || (_d = __makeTemplateObject(["", ""], ["", ""])), 3); // Generic tag with argument of function type whose parameter is of type parameter type function someGenerics2a(strs, n) { } -someGenerics2a(_e || (_e = __getTemplateObject(["", ""], ["", ""])), function (n) { return n; }); +someGenerics2a(_e || (_e = __makeTemplateObject(["", ""], ["", ""])), function (n) { return n; }); function someGenerics2b(strs, n) { } -someGenerics2b(_f || (_f = __getTemplateObject(["", ""], ["", ""])), function (n, x) { return n; }); +someGenerics2b(_f || (_f = __makeTemplateObject(["", ""], ["", ""])), function (n, x) { return n; }); // Generic tag with argument of function type whose parameter is not of type parameter type but body/return type uses type parameter function someGenerics3(strs, producer) { } -someGenerics3(_g || (_g = __getTemplateObject(["", ""], ["", ""])), function () { return ''; }); -someGenerics3(_h || (_h = __getTemplateObject(["", ""], ["", ""])), function () { return undefined; }); -someGenerics3(_j || (_j = __getTemplateObject(["", ""], ["", ""])), function () { return 3; }); +someGenerics3(_g || (_g = __makeTemplateObject(["", ""], ["", ""])), function () { return ''; }); +someGenerics3(_h || (_h = __makeTemplateObject(["", ""], ["", ""])), function () { return undefined; }); +someGenerics3(_j || (_j = __makeTemplateObject(["", ""], ["", ""])), function () { return 3; }); // 2 parameter generic tag with argument 1 of type parameter type and argument 2 of function type whose parameter is of type parameter type function someGenerics4(strs, n, f) { } -someGenerics4(_k || (_k = __getTemplateObject(["", "", ""], ["", "", ""])), 4, function () { return null; }); -someGenerics4(_l || (_l = __getTemplateObject(["", "", ""], ["", "", ""])), '', function () { return 3; }); -someGenerics4(_m || (_m = __getTemplateObject(["", "", ""], ["", "", ""])), null, null); +someGenerics4(_k || (_k = __makeTemplateObject(["", "", ""], ["", "", ""])), 4, function () { return null; }); +someGenerics4(_l || (_l = __makeTemplateObject(["", "", ""], ["", "", ""])), '', function () { return 3; }); +someGenerics4(_m || (_m = __makeTemplateObject(["", "", ""], ["", "", ""])), null, null); // 2 parameter generic tag with argument 2 of type parameter type and argument 1 of function type whose parameter is of type parameter type function someGenerics5(strs, n, f) { } -someGenerics5(_o || (_o = __getTemplateObject(["", " ", ""], ["", " ", ""])), 4, function () { return null; }); -someGenerics5(_p || (_p = __getTemplateObject(["", "", ""], ["", "", ""])), '', function () { return 3; }); -someGenerics5(_q || (_q = __getTemplateObject(["", "", ""], ["", "", ""])), null, null); +someGenerics5(_o || (_o = __makeTemplateObject(["", " ", ""], ["", " ", ""])), 4, function () { return null; }); +someGenerics5(_p || (_p = __makeTemplateObject(["", "", ""], ["", "", ""])), '', function () { return 3; }); +someGenerics5(_q || (_q = __makeTemplateObject(["", "", ""], ["", "", ""])), null, null); // Generic tag with multiple arguments of function types that each have parameters of the same generic type function someGenerics6(strs, a, b, c) { } -someGenerics6(_r || (_r = __getTemplateObject(["", "", "", ""], ["", "", "", ""])), function (n) { return n; }, function (n) { return n; }, function (n) { return n; }); -someGenerics6(_s || (_s = __getTemplateObject(["", "", "", ""], ["", "", "", ""])), function (n) { return n; }, function (n) { return n; }, function (n) { return n; }); -someGenerics6(_t || (_t = __getTemplateObject(["", "", "", ""], ["", "", "", ""])), function (n) { return n; }, function (n) { return n; }, function (n) { return n; }); +someGenerics6(_r || (_r = __makeTemplateObject(["", "", "", ""], ["", "", "", ""])), function (n) { return n; }, function (n) { return n; }, function (n) { return n; }); +someGenerics6(_s || (_s = __makeTemplateObject(["", "", "", ""], ["", "", "", ""])), function (n) { return n; }, function (n) { return n; }, function (n) { return n; }); +someGenerics6(_t || (_t = __makeTemplateObject(["", "", "", ""], ["", "", "", ""])), function (n) { return n; }, function (n) { return n; }, function (n) { return n; }); // Generic tag with multiple arguments of function types that each have parameters of different generic type function someGenerics7(strs, a, b, c) { } -someGenerics7(_u || (_u = __getTemplateObject(["", "", "", ""], ["", "", "", ""])), function (n) { return n; }, function (n) { return n; }, function (n) { return n; }); -someGenerics7(_v || (_v = __getTemplateObject(["", "", "", ""], ["", "", "", ""])), function (n) { return n; }, function (n) { return n; }, function (n) { return n; }); -someGenerics7(_w || (_w = __getTemplateObject(["", "", "", ""], ["", "", "", ""])), function (n) { return n; }, function (n) { return n; }, function (n) { return n; }); +someGenerics7(_u || (_u = __makeTemplateObject(["", "", "", ""], ["", "", "", ""])), function (n) { return n; }, function (n) { return n; }, function (n) { return n; }); +someGenerics7(_v || (_v = __makeTemplateObject(["", "", "", ""], ["", "", "", ""])), function (n) { return n; }, function (n) { return n; }, function (n) { return n; }); +someGenerics7(_w || (_w = __makeTemplateObject(["", "", "", ""], ["", "", "", ""])), function (n) { return n; }, function (n) { return n; }, function (n) { return n; }); // Generic tag with argument of generic function type function someGenerics8(strs, n) { return n; } -var x = someGenerics8(_x || (_x = __getTemplateObject(["", ""], ["", ""])), someGenerics7); -x(_y || (_y = __getTemplateObject(["", "", "", ""], ["", "", "", ""])), null, null, null); +var x = someGenerics8(_x || (_x = __makeTemplateObject(["", ""], ["", ""])), someGenerics7); +x(_y || (_y = __makeTemplateObject(["", "", "", ""], ["", "", "", ""])), null, null, null); // Generic tag with multiple parameters of generic type passed arguments with no best common type function someGenerics9(strs, a, b, c) { return null; } -var a9a = someGenerics9(_z || (_z = __getTemplateObject(["", "", "", ""], ["", "", "", ""])), '', 0, []); +var a9a = someGenerics9(_z || (_z = __makeTemplateObject(["", "", "", ""], ["", "", "", ""])), '', 0, []); var a9a; -var a9e = someGenerics9(_0 || (_0 = __getTemplateObject(["", "", "", ""], ["", "", "", ""])), undefined, { x: 6, z: new Date() }, { x: 6, y: '' }); +var a9e = someGenerics9(_0 || (_0 = __makeTemplateObject(["", "", "", ""], ["", "", "", ""])), undefined, { x: 6, z: new Date() }, { x: 6, y: '' }); var a9e; // Generic tag with multiple parameters of generic type passed arguments with a single best common type -var a9d = someGenerics9(_1 || (_1 = __getTemplateObject(["", "", "", ""], ["", "", "", ""])), { x: 3 }, { x: 6 }, { x: 6 }); +var a9d = someGenerics9(_1 || (_1 = __makeTemplateObject(["", "", "", ""], ["", "", "", ""])), { x: 3 }, { x: 6 }, { x: 6 }); var a9d; // Generic tag with multiple parameters of generic type where one argument is of type 'any' var anyVar; -var a = someGenerics9(_2 || (_2 = __getTemplateObject(["", "", "", ""], ["", "", "", ""])), 7, anyVar, 4); +var a = someGenerics9(_2 || (_2 = __makeTemplateObject(["", "", "", ""], ["", "", "", ""])), 7, anyVar, 4); var a; // Generic tag with multiple parameters of generic type where one argument is [] and the other is not 'any' -var arr = someGenerics9(_3 || (_3 = __getTemplateObject(["", "", "", ""], ["", "", "", ""])), [], null, undefined); +var arr = someGenerics9(_3 || (_3 = __makeTemplateObject(["", "", "", ""], ["", "", "", ""])), [], null, undefined); var arr; var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3; diff --git a/tests/baselines/reference/taggedTemplateStringsWithIncompatibleTypedTags.js b/tests/baselines/reference/taggedTemplateStringsWithIncompatibleTypedTags.js index ab7bdc247ae93..eb7288ad1ed12 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithIncompatibleTypedTags.js +++ b/tests/baselines/reference/taggedTemplateStringsWithIncompatibleTypedTags.js @@ -34,7 +34,7 @@ f.thisIsNotATag(`abc${1}def${2}ghi`); //// [taggedTemplateStringsWithIncompatibleTypedTags.js] -var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { +var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { return Object.defineProperty(cooked, "raw", { value: raw }); } @@ -42,15 +42,15 @@ var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked return cooked; }; var f; -f(_a || (_a = __getTemplateObject(["abc"], ["abc"]))); -f(_b || (_b = __getTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2); -f(_c || (_c = __getTemplateObject(["abc"], ["abc"]))).member; -f(_d || (_d = __getTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2).member; -f(_e || (_e = __getTemplateObject(["abc"], ["abc"])))["member"]; -f(_f || (_f = __getTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2)["member"]; -f(_g || (_g = __getTemplateObject(["abc"], ["abc"])))[0].member(_h || (_h = __getTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2); -f(_j || (_j = __getTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2)["member"].member(_k || (_k = __getTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2); -f(_l || (_l = __getTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), true, true)["member"].member(_m || (_m = __getTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2); +f(_a || (_a = __makeTemplateObject(["abc"], ["abc"]))); +f(_b || (_b = __makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2); +f(_c || (_c = __makeTemplateObject(["abc"], ["abc"]))).member; +f(_d || (_d = __makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2).member; +f(_e || (_e = __makeTemplateObject(["abc"], ["abc"])))["member"]; +f(_f || (_f = __makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2)["member"]; +f(_g || (_g = __makeTemplateObject(["abc"], ["abc"])))[0].member(_h || (_h = __makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2); +f(_j || (_j = __makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2)["member"].member(_k || (_k = __makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2); +f(_l || (_l = __makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), true, true)["member"].member(_m || (_m = __makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2); f.thisIsNotATag("abc"); f.thisIsNotATag("abc" + 1 + "def" + 2 + "ghi"); var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m; diff --git a/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressions.js b/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressions.js index 5d681ec45847d..7442993b7778b 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressions.js +++ b/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressions.js @@ -16,7 +16,7 @@ var x = new new new f `abc${ 0 }def`.member("hello")(42) === true; //// [taggedTemplateStringsWithManyCallAndMemberExpressions.js] -var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { +var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { return Object.defineProperty(cooked, "raw", { value: raw }); } @@ -24,5 +24,5 @@ var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked return cooked; }; var f; -var x = new new new (f(_a || (_a = __getTemplateObject(["abc", "def"], ["abc", "def"])), 0).member)("hello")(42) === true; +var x = new new new (f(_a || (_a = __makeTemplateObject(["abc", "def"], ["abc", "def"])), 0).member)("hello")(42) === true; var _a; diff --git a/tests/baselines/reference/taggedTemplateStringsWithMultilineTemplate.js b/tests/baselines/reference/taggedTemplateStringsWithMultilineTemplate.js index 9e1bb3e53fe72..25861be7dceeb 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithMultilineTemplate.js +++ b/tests/baselines/reference/taggedTemplateStringsWithMultilineTemplate.js @@ -8,7 +8,7 @@ f ` `; //// [taggedTemplateStringsWithMultilineTemplate.js] -var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { +var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { return Object.defineProperty(cooked, "raw", { value: raw }); } @@ -21,5 +21,5 @@ function f() { args[_i] = arguments[_i]; } } -f(_a || (_a = __getTemplateObject(["\n\n"], ["\n\\\n\n"]))); +f(_a || (_a = __makeTemplateObject(["\n\n"], ["\n\\\n\n"]))); var _a; diff --git a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution1.js b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution1.js index 09c1d770161e6..03fbe35fd80e2 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution1.js +++ b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution1.js @@ -23,7 +23,7 @@ var z = foo `${1}${2}${3}`; // any (with error) //// [taggedTemplateStringsWithOverloadResolution1.js] -var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { +var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { return Object.defineProperty(cooked, "raw", { value: raw }); } @@ -43,10 +43,10 @@ var c = foo([], 1, 2); // boolean var d = foo([], 1, true); // boolean (with error) var e = foo([], 1, "2"); // {} var f = foo([], 1, 2, 3); // any (with error) -var u = foo(_a || (_a = __getTemplateObject([""], [""]))); // number -var v = foo(_b || (_b = __getTemplateObject(["", ""], ["", ""])), 1); // string -var w = foo(_c || (_c = __getTemplateObject(["", "", ""], ["", "", ""])), 1, 2); // boolean -var x = foo(_d || (_d = __getTemplateObject(["", "", ""], ["", "", ""])), 1, true); // boolean (with error) -var y = foo(_e || (_e = __getTemplateObject(["", "", ""], ["", "", ""])), 1, "2"); // {} -var z = foo(_f || (_f = __getTemplateObject(["", "", "", ""], ["", "", "", ""])), 1, 2, 3); // any (with error) +var u = foo(_a || (_a = __makeTemplateObject([""], [""]))); // number +var v = foo(_b || (_b = __makeTemplateObject(["", ""], ["", ""])), 1); // string +var w = foo(_c || (_c = __makeTemplateObject(["", "", ""], ["", "", ""])), 1, 2); // boolean +var x = foo(_d || (_d = __makeTemplateObject(["", "", ""], ["", "", ""])), 1, true); // boolean (with error) +var y = foo(_e || (_e = __makeTemplateObject(["", "", ""], ["", "", ""])), 1, "2"); // {} +var z = foo(_f || (_f = __makeTemplateObject(["", "", "", ""], ["", "", "", ""])), 1, 2, 3); // any (with error) var _a, _b, _c, _d, _e, _f; diff --git a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2.js b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2.js index 16693ad9ecc01..aa0046f99ad20 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2.js +++ b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2.js @@ -18,7 +18,7 @@ var c = foo2 `${1}`; var d = foo2([], 1); //// [taggedTemplateStringsWithOverloadResolution2.js] -var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { +var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { return Object.defineProperty(cooked, "raw", { value: raw }); } @@ -32,7 +32,7 @@ function foo1() { } return undefined; } -var a = foo1(_a || (_a = __getTemplateObject(["", ""], ["", ""])), 1); +var a = foo1(_a || (_a = __makeTemplateObject(["", ""], ["", ""])), 1); var b = foo1([], 1); function foo2() { var stuff = []; @@ -41,6 +41,6 @@ function foo2() { } return undefined; } -var c = foo2(_b || (_b = __getTemplateObject(["", ""], ["", ""])), 1); +var c = foo2(_b || (_b = __makeTemplateObject(["", ""], ["", ""])), 1); var d = foo2([], 1); var _a, _b; diff --git a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution3.js b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution3.js index b3309ca2be52b..4ec10b11e73f6 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution3.js +++ b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution3.js @@ -73,7 +73,7 @@ fn5 `${ (n) => n.substr(0) }`; //// [taggedTemplateStringsWithOverloadResolution3.js] -var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { +var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { return Object.defineProperty(cooked, "raw", { value: raw }); } @@ -81,41 +81,41 @@ var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked return cooked; }; function fn1() { return null; } -var s = fn1(_a || (_a = __getTemplateObject(["", ""], ["", ""])), undefined); +var s = fn1(_a || (_a = __makeTemplateObject(["", ""], ["", ""])), undefined); // No candidate overloads found -fn1(_b || (_b = __getTemplateObject(["", ""], ["", ""])), {}); // Error +fn1(_b || (_b = __makeTemplateObject(["", ""], ["", ""])), {}); // Error function fn2() { return undefined; } -var d1 = fn2(_c || (_c = __getTemplateObject(["", "", ""], ["", "", ""])), 0, undefined); // contextually typed -var d2 = fn2(_d || (_d = __getTemplateObject(["", "", ""], ["", "", ""])), 0, undefined); // any +var d1 = fn2(_c || (_c = __makeTemplateObject(["", "", ""], ["", "", ""])), 0, undefined); // contextually typed +var d2 = fn2(_d || (_d = __makeTemplateObject(["", "", ""], ["", "", ""])), 0, undefined); // any d1.foo(); // error d2(); // no error (typed as any) // Generic and non-generic overload where generic overload is the only candidate -fn2(_e || (_e = __getTemplateObject(["", "", ""], ["", "", ""])), 0, ''); // OK +fn2(_e || (_e = __makeTemplateObject(["", "", ""], ["", "", ""])), 0, ''); // OK // Generic and non-generic overload where non-generic overload is the only candidate -fn2(_f || (_f = __getTemplateObject(["", "", ""], ["", "", ""])), '', 0); // OK +fn2(_f || (_f = __makeTemplateObject(["", "", ""], ["", "", ""])), '', 0); // OK function fn3() { return null; } -var s = fn3(_g || (_g = __getTemplateObject(["", ""], ["", ""])), 3); -var s = fn3(_h || (_h = __getTemplateObject(["", "", "", ""], ["", "", "", ""])), '', 3, ''); -var n = fn3(_j || (_j = __getTemplateObject(["", "", "", ""], ["", "", "", ""])), 5, 5, 5); +var s = fn3(_g || (_g = __makeTemplateObject(["", ""], ["", ""])), 3); +var s = fn3(_h || (_h = __makeTemplateObject(["", "", "", ""], ["", "", "", ""])), '', 3, ''); +var n = fn3(_j || (_j = __makeTemplateObject(["", "", "", ""], ["", "", "", ""])), 5, 5, 5); var n; // Generic overloads with differing arity tagging with arguments matching each overload type parameter count -var s = fn3(_k || (_k = __getTemplateObject(["", ""], ["", ""])), 4); -var s = fn3(_l || (_l = __getTemplateObject(["", "", "", ""], ["", "", "", ""])), '', '', ''); -var n = fn3(_m || (_m = __getTemplateObject(["", "", "", ""], ["", "", "", ""])), '', '', 3); +var s = fn3(_k || (_k = __makeTemplateObject(["", ""], ["", ""])), 4); +var s = fn3(_l || (_l = __makeTemplateObject(["", "", "", ""], ["", "", "", ""])), '', '', ''); +var n = fn3(_m || (_m = __makeTemplateObject(["", "", "", ""], ["", "", "", ""])), '', '', 3); // Generic overloads with differing arity tagging with argument count that doesn't match any overload -fn3(_o || (_o = __getTemplateObject([""], [""]))); // Error +fn3(_o || (_o = __makeTemplateObject([""], [""]))); // Error function fn4() { } // Generic overloads with constraints tagged with types that satisfy the constraints -fn4(_p || (_p = __getTemplateObject(["", "", ""], ["", "", ""])), '', 3); -fn4(_q || (_q = __getTemplateObject(["", "", ""], ["", "", ""])), 3, ''); -fn4(_r || (_r = __getTemplateObject(["", "", ""], ["", "", ""])), 3, undefined); -fn4(_s || (_s = __getTemplateObject(["", "", ""], ["", "", ""])), '', null); +fn4(_p || (_p = __makeTemplateObject(["", "", ""], ["", "", ""])), '', 3); +fn4(_q || (_q = __makeTemplateObject(["", "", ""], ["", "", ""])), 3, ''); +fn4(_r || (_r = __makeTemplateObject(["", "", ""], ["", "", ""])), 3, undefined); +fn4(_s || (_s = __makeTemplateObject(["", "", ""], ["", "", ""])), '', null); // Generic overloads with constraints called with type arguments that do not satisfy the constraints -fn4(_t || (_t = __getTemplateObject(["", "", ""], ["", "", ""])), null, null); // Error +fn4(_t || (_t = __makeTemplateObject(["", "", ""], ["", "", ""])), null, null); // Error // Generic overloads with constraints called without type arguments but with types that do not satisfy the constraints -fn4(_u || (_u = __getTemplateObject(["", "", ""], ["", "", ""])), true, null); -fn4(_v || (_v = __getTemplateObject(["", "", ""], ["", "", ""])), null, true); +fn4(_u || (_u = __makeTemplateObject(["", "", ""], ["", "", ""])), true, null); +fn4(_v || (_v = __makeTemplateObject(["", "", ""], ["", "", ""])), null, true); function fn5() { return undefined; } -fn5(_w || (_w = __getTemplateObject(["", ""], ["", ""])), function (n) { return n.toFixed(); }); // will error; 'n' should have type 'string'. -fn5(_x || (_x = __getTemplateObject(["", ""], ["", ""])), function (n) { return n.substr(0); }); +fn5(_w || (_w = __makeTemplateObject(["", ""], ["", ""])), function (n) { return n.toFixed(); }); // will error; 'n' should have type 'string'. +fn5(_x || (_x = __makeTemplateObject(["", ""], ["", ""])), function (n) { return n.substr(0); }); var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x; diff --git a/tests/baselines/reference/taggedTemplateStringsWithTagNamedDeclare.js b/tests/baselines/reference/taggedTemplateStringsWithTagNamedDeclare.js index 98457802ffc47..da4a46af903eb 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithTagNamedDeclare.js +++ b/tests/baselines/reference/taggedTemplateStringsWithTagNamedDeclare.js @@ -5,7 +5,7 @@ function declare(x: any, ...ys: any[]) { declare `Hello ${0} world!`; //// [taggedTemplateStringsWithTagNamedDeclare.js] -var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { +var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { return Object.defineProperty(cooked, "raw", { value: raw }); } @@ -18,5 +18,5 @@ function declare(x) { ys[_i - 1] = arguments[_i]; } } -declare(_a || (_a = __getTemplateObject(["Hello ", " world!"], ["Hello ", " world!"])), 0); +declare(_a || (_a = __makeTemplateObject(["Hello ", " world!"], ["Hello ", " world!"])), 0); var _a; diff --git a/tests/baselines/reference/taggedTemplateStringsWithTagsTypedAsAny.js b/tests/baselines/reference/taggedTemplateStringsWithTagsTypedAsAny.js index 4308ba6fa29eb..564de1cecd522 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithTagsTypedAsAny.js +++ b/tests/baselines/reference/taggedTemplateStringsWithTagsTypedAsAny.js @@ -26,7 +26,7 @@ f.thisIsNotATag(`abc`); f.thisIsNotATag(`abc${1}def${2}ghi`); //// [taggedTemplateStringsWithTagsTypedAsAny.js] -var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { +var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { return Object.defineProperty(cooked, "raw", { value: raw }); } @@ -34,16 +34,16 @@ var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked return cooked; }; var f; -f(_a || (_a = __getTemplateObject(["abc"], ["abc"]))); -f(_b || (_b = __getTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2); -f.g.h(_c || (_c = __getTemplateObject(["abc"], ["abc"]))); -f.g.h(_d || (_d = __getTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2); -f(_e || (_e = __getTemplateObject(["abc"], ["abc"]))).member; -f(_f || (_f = __getTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2).member; -f(_g || (_g = __getTemplateObject(["abc"], ["abc"])))["member"]; -f(_h || (_h = __getTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2)["member"]; -f(_j || (_j = __getTemplateObject(["abc"], ["abc"])))["member"].someOtherTag(_k || (_k = __getTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2); -f(_l || (_l = __getTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2)["member"].someOtherTag(_m || (_m = __getTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2); +f(_a || (_a = __makeTemplateObject(["abc"], ["abc"]))); +f(_b || (_b = __makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2); +f.g.h(_c || (_c = __makeTemplateObject(["abc"], ["abc"]))); +f.g.h(_d || (_d = __makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2); +f(_e || (_e = __makeTemplateObject(["abc"], ["abc"]))).member; +f(_f || (_f = __makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2).member; +f(_g || (_g = __makeTemplateObject(["abc"], ["abc"])))["member"]; +f(_h || (_h = __makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2)["member"]; +f(_j || (_j = __makeTemplateObject(["abc"], ["abc"])))["member"].someOtherTag(_k || (_k = __makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2); +f(_l || (_l = __makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2)["member"].someOtherTag(_m || (_m = __makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2); f.thisIsNotATag("abc"); f.thisIsNotATag("abc" + 1 + "def" + 2 + "ghi"); var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m; diff --git a/tests/baselines/reference/taggedTemplateStringsWithTypeErrorInFunctionExpressionsInSubstitutionExpression.js b/tests/baselines/reference/taggedTemplateStringsWithTypeErrorInFunctionExpressionsInSubstitutionExpression.js index 5707ea9fc2941..35e98524973c0 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithTypeErrorInFunctionExpressionsInSubstitutionExpression.js +++ b/tests/baselines/reference/taggedTemplateStringsWithTypeErrorInFunctionExpressionsInSubstitutionExpression.js @@ -5,7 +5,7 @@ function foo(...rest: any[]) { foo `${function (x: number) { x = "bad"; } }`; //// [taggedTemplateStringsWithTypeErrorInFunctionExpressionsInSubstitutionExpression.js] -var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { +var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { return Object.defineProperty(cooked, "raw", { value: raw }); } @@ -18,5 +18,5 @@ function foo() { rest[_i] = arguments[_i]; } } -foo(_a || (_a = __getTemplateObject(["", ""], ["", ""])), function (x) { x = "bad"; }); +foo(_a || (_a = __makeTemplateObject(["", ""], ["", ""])), function (x) { x = "bad"; }); var _a; diff --git a/tests/baselines/reference/taggedTemplateStringsWithTypedTags.js b/tests/baselines/reference/taggedTemplateStringsWithTypedTags.js index d666248b1c99c..4eec820263a9f 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithTypedTags.js +++ b/tests/baselines/reference/taggedTemplateStringsWithTypedTags.js @@ -32,7 +32,7 @@ f.thisIsNotATag(`abc${1}def${2}ghi`); //// [taggedTemplateStringsWithTypedTags.js] -var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { +var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { return Object.defineProperty(cooked, "raw", { value: raw }); } @@ -40,14 +40,14 @@ var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked return cooked; }; var f; -f(_a || (_a = __getTemplateObject(["abc"], ["abc"]))); -f(_b || (_b = __getTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2); -f(_c || (_c = __getTemplateObject(["abc"], ["abc"]))).member; -f(_d || (_d = __getTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2).member; -f(_e || (_e = __getTemplateObject(["abc"], ["abc"])))["member"]; -f(_f || (_f = __getTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2)["member"]; -f(_g || (_g = __getTemplateObject(["abc"], ["abc"])))[0].member(_h || (_h = __getTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2); -f(_j || (_j = __getTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2)["member"].member(_k || (_k = __getTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2); +f(_a || (_a = __makeTemplateObject(["abc"], ["abc"]))); +f(_b || (_b = __makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2); +f(_c || (_c = __makeTemplateObject(["abc"], ["abc"]))).member; +f(_d || (_d = __makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2).member; +f(_e || (_e = __makeTemplateObject(["abc"], ["abc"])))["member"]; +f(_f || (_f = __makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2)["member"]; +f(_g || (_g = __makeTemplateObject(["abc"], ["abc"])))[0].member(_h || (_h = __makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2); +f(_j || (_j = __makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2)["member"].member(_k || (_k = __makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2); f.thisIsNotATag("abc"); f.thisIsNotATag("abc" + 1 + "def" + 2 + "ghi"); var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k; diff --git a/tests/baselines/reference/taggedTemplateStringsWithUnicodeEscapes.js b/tests/baselines/reference/taggedTemplateStringsWithUnicodeEscapes.js index b116661d162da..4b6cd135e017e 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithUnicodeEscapes.js +++ b/tests/baselines/reference/taggedTemplateStringsWithUnicodeEscapes.js @@ -5,7 +5,7 @@ function f(...args: any[]) { f `'\u{1f4a9}'${ " should be converted to " }'\uD83D\uDCA9'`; //// [taggedTemplateStringsWithUnicodeEscapes.js] -var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { +var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { return Object.defineProperty(cooked, "raw", { value: raw }); } @@ -18,5 +18,5 @@ function f() { args[_i] = arguments[_i]; } } -f(_a || (_a = __getTemplateObject(["'\uD83D\uDCA9'", "'\uD83D\uDCA9'"], ["'\\u{1f4a9}'", "'\\uD83D\\uDCA9'"])), " should be converted to "); +f(_a || (_a = __makeTemplateObject(["'\uD83D\uDCA9'", "'\uD83D\uDCA9'"], ["'\\u{1f4a9}'", "'\\uD83D\\uDCA9'"])), " should be converted to "); var _a; diff --git a/tests/baselines/reference/taggedTemplateStringsWithWhitespaceEscapes.js b/tests/baselines/reference/taggedTemplateStringsWithWhitespaceEscapes.js index f3dcdf341a999..fdaa26b2a491b 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithWhitespaceEscapes.js +++ b/tests/baselines/reference/taggedTemplateStringsWithWhitespaceEscapes.js @@ -5,7 +5,7 @@ function f(...args: any[]) { f `\t\n\v\f\r\\`; //// [taggedTemplateStringsWithWhitespaceEscapes.js] -var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { +var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { return Object.defineProperty(cooked, "raw", { value: raw }); } @@ -18,5 +18,5 @@ function f() { args[_i] = arguments[_i]; } } -f(_a || (_a = __getTemplateObject(["\t\n\v\f\r\\"], ["\\t\\n\\v\\f\\r\\\\"]))); +f(_a || (_a = __makeTemplateObject(["\t\n\v\f\r\\"], ["\\t\\n\\v\\f\\r\\\\"]))); var _a; diff --git a/tests/baselines/reference/taggedTemplateUntypedTagCall01.js b/tests/baselines/reference/taggedTemplateUntypedTagCall01.js index bd2fa9038a8c4..8ae2b97c7c2a5 100644 --- a/tests/baselines/reference/taggedTemplateUntypedTagCall01.js +++ b/tests/baselines/reference/taggedTemplateUntypedTagCall01.js @@ -3,7 +3,7 @@ var tag: Function; tag `Hello world!`; //// [taggedTemplateUntypedTagCall01.js] -var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { +var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { return Object.defineProperty(cooked, "raw", { value: raw }); } @@ -11,5 +11,5 @@ var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked return cooked; }; var tag; -tag(_a || (_a = __getTemplateObject(["Hello world!"], ["Hello world!"]))); +tag(_a || (_a = __makeTemplateObject(["Hello world!"], ["Hello world!"]))); var _a; diff --git a/tests/baselines/reference/taggedTemplateWithConstructableTag01.js b/tests/baselines/reference/taggedTemplateWithConstructableTag01.js index efdbedfb431b9..271c5a2ae6661 100644 --- a/tests/baselines/reference/taggedTemplateWithConstructableTag01.js +++ b/tests/baselines/reference/taggedTemplateWithConstructableTag01.js @@ -4,7 +4,7 @@ class CtorTag { } CtorTag `Hello world!`; //// [taggedTemplateWithConstructableTag01.js] -var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { +var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { return Object.defineProperty(cooked, "raw", { value: raw }); } @@ -16,5 +16,5 @@ var CtorTag = /** @class */ (function () { } return CtorTag; }()); -CtorTag(_a || (_a = __getTemplateObject(["Hello world!"], ["Hello world!"]))); +CtorTag(_a || (_a = __makeTemplateObject(["Hello world!"], ["Hello world!"]))); var _a; diff --git a/tests/baselines/reference/taggedTemplateWithConstructableTag02.js b/tests/baselines/reference/taggedTemplateWithConstructableTag02.js index da7b49e6da5ce..72b33dcb6314b 100644 --- a/tests/baselines/reference/taggedTemplateWithConstructableTag02.js +++ b/tests/baselines/reference/taggedTemplateWithConstructableTag02.js @@ -7,7 +7,7 @@ var tag: I; tag `Hello world!`; //// [taggedTemplateWithConstructableTag02.js] -var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { +var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { return Object.defineProperty(cooked, "raw", { value: raw }); } @@ -15,5 +15,5 @@ var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked return cooked; }; var tag; -tag(_a || (_a = __getTemplateObject(["Hello world!"], ["Hello world!"]))); +tag(_a || (_a = __makeTemplateObject(["Hello world!"], ["Hello world!"]))); var _a; diff --git a/tests/baselines/reference/templateStringInModuleName.js b/tests/baselines/reference/templateStringInModuleName.js index 6496da510919d..e493778d57585 100644 --- a/tests/baselines/reference/templateStringInModuleName.js +++ b/tests/baselines/reference/templateStringInModuleName.js @@ -6,7 +6,7 @@ declare module `M${2}` { } //// [templateStringInModuleName.js] -var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { +var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { return Object.defineProperty(cooked, "raw", { value: raw }); } @@ -14,11 +14,11 @@ var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked return cooked; }; declare; -module(_a || (_a = __getTemplateObject(["M1"], ["M1"]))); +module(_a || (_a = __makeTemplateObject(["M1"], ["M1"]))); { } declare; -module(_b || (_b = __getTemplateObject(["M", ""], ["M", ""])), 2); +module(_b || (_b = __makeTemplateObject(["M", ""], ["M", ""])), 2); { } var _a, _b; diff --git a/tests/baselines/reference/templateStringInObjectLiteral.js b/tests/baselines/reference/templateStringInObjectLiteral.js index 0341a9ddb68cc..03add5df19fd7 100644 --- a/tests/baselines/reference/templateStringInObjectLiteral.js +++ b/tests/baselines/reference/templateStringInObjectLiteral.js @@ -5,7 +5,7 @@ var x = { } //// [templateStringInObjectLiteral.js] -var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { +var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { return Object.defineProperty(cooked, "raw", { value: raw }); } @@ -14,6 +14,6 @@ var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked }; var x = { a: "abc" + 123 + "def" -}(_a || (_a = __getTemplateObject(["b"], ["b"]))); +}(_a || (_a = __makeTemplateObject(["b"], ["b"]))); 321; var _a; diff --git a/tests/baselines/reference/templateStringInPropertyName1.js b/tests/baselines/reference/templateStringInPropertyName1.js index fcefb5b8de7ba..4c8e0083a2798 100644 --- a/tests/baselines/reference/templateStringInPropertyName1.js +++ b/tests/baselines/reference/templateStringInPropertyName1.js @@ -4,13 +4,13 @@ var x = { } //// [templateStringInPropertyName1.js] -var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { +var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { return Object.defineProperty(cooked, "raw", { value: raw }); } cooked.raw = raw; return cooked; }; -var x = {}(_a || (_a = __getTemplateObject(["a"], ["a"]))); +var x = {}(_a || (_a = __makeTemplateObject(["a"], ["a"]))); 321; var _a; diff --git a/tests/baselines/reference/templateStringInPropertyName2.js b/tests/baselines/reference/templateStringInPropertyName2.js index ef3d90ca6dadb..09f9bb0dd5fd9 100644 --- a/tests/baselines/reference/templateStringInPropertyName2.js +++ b/tests/baselines/reference/templateStringInPropertyName2.js @@ -4,13 +4,13 @@ var x = { } //// [templateStringInPropertyName2.js] -var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { +var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { return Object.defineProperty(cooked, "raw", { value: raw }); } cooked.raw = raw; return cooked; }; -var x = {}(_a || (_a = __getTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 123, 456); +var x = {}(_a || (_a = __makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 123, 456); 321; var _a; diff --git a/tests/baselines/reference/templateStringInTaggedTemplate.js b/tests/baselines/reference/templateStringInTaggedTemplate.js index 927aaa442aec1..c2b8759cee640 100644 --- a/tests/baselines/reference/templateStringInTaggedTemplate.js +++ b/tests/baselines/reference/templateStringInTaggedTemplate.js @@ -2,12 +2,12 @@ `I AM THE ${ `${ `TAG` } ` } PORTION` `I ${ "AM" } THE TEMPLATE PORTION` //// [templateStringInTaggedTemplate.js] -var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { +var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { return Object.defineProperty(cooked, "raw", { value: raw }); } cooked.raw = raw; return cooked; }; -("I AM THE " + "TAG" + " " + " PORTION")(_a || (_a = __getTemplateObject(["I ", " THE TEMPLATE PORTION"], ["I ", " THE TEMPLATE PORTION"])), "AM"); +("I AM THE " + "TAG" + " " + " PORTION")(_a || (_a = __makeTemplateObject(["I ", " THE TEMPLATE PORTION"], ["I ", " THE TEMPLATE PORTION"])), "AM"); var _a; diff --git a/tests/baselines/reference/templateStringsArrayTypeDefinedInES5Mode.js b/tests/baselines/reference/templateStringsArrayTypeDefinedInES5Mode.js index 619ca6d2faaeb..bc691a4cd4583 100644 --- a/tests/baselines/reference/templateStringsArrayTypeDefinedInES5Mode.js +++ b/tests/baselines/reference/templateStringsArrayTypeDefinedInES5Mode.js @@ -10,7 +10,7 @@ f({}, 10, 10); f `abcdef${ 1234 }${ 5678 }ghijkl`; //// [templateStringsArrayTypeDefinedInES5Mode.js] -var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { +var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { return Object.defineProperty(cooked, "raw", { value: raw }); } @@ -25,5 +25,5 @@ var TemplateStringsArray = /** @class */ (function () { function f(x, y, z) { } f({}, 10, 10); -f(_a || (_a = __getTemplateObject(["abcdef", "", "ghijkl"], ["abcdef", "", "ghijkl"])), 1234, 5678); +f(_a || (_a = __makeTemplateObject(["abcdef", "", "ghijkl"], ["abcdef", "", "ghijkl"])), 1234, 5678); var _a; diff --git a/tests/baselines/reference/templateStringsArrayTypeNotDefinedES5Mode.js b/tests/baselines/reference/templateStringsArrayTypeNotDefinedES5Mode.js index 512c10ec14d83..6da640b88f6f4 100644 --- a/tests/baselines/reference/templateStringsArrayTypeNotDefinedES5Mode.js +++ b/tests/baselines/reference/templateStringsArrayTypeNotDefinedES5Mode.js @@ -7,7 +7,7 @@ f({}, 10, 10); f `abcdef${ 1234 }${ 5678 }ghijkl`; //// [templateStringsArrayTypeNotDefinedES5Mode.js] -var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked, raw) { +var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { return Object.defineProperty(cooked, "raw", { value: raw }); } @@ -17,5 +17,5 @@ var __getTemplateObject = (this && this.__getTemplateObject) || function (cooked function f(x, y, z) { } f({}, 10, 10); -f(_a || (_a = __getTemplateObject(["abcdef", "", "ghijkl"], ["abcdef", "", "ghijkl"])), 1234, 5678); +f(_a || (_a = __makeTemplateObject(["abcdef", "", "ghijkl"], ["abcdef", "", "ghijkl"])), 1234, 5678); var _a; From 886a29b5126518d9bb131313d2ff78b01645d639 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Mon, 25 Sep 2017 18:36:07 -0700 Subject: [PATCH 14/26] Added tests for import helpers with & without a declared template object creator. --- tests/cases/compiler/importHelpers.ts | 13 +++++++++++++ .../taggedTemplateWithoutDeclaredHelper.ts | 14 ++++++++++++++ 2 files changed, 27 insertions(+) mode change 100644 => 100755 tests/cases/compiler/importHelpers.ts create mode 100755 tests/cases/compiler/taggedTemplateWithoutDeclaredHelper.ts diff --git a/tests/cases/compiler/importHelpers.ts b/tests/cases/compiler/importHelpers.ts old mode 100644 new mode 100755 index 2e15eb6352b88..becbc2eb715d0 --- a/tests/cases/compiler/importHelpers.ts +++ b/tests/cases/compiler/importHelpers.ts @@ -16,6 +16,12 @@ class C { } } +function id(x: T) { + return x; +} + +export const result = id`hello world`; + // @filename: script.ts class A { } class B extends A { } @@ -28,6 +34,12 @@ class C { } } +function id(x: T) { + return x; +} + +const result = id`hello world`; + // @filename: tslib.d.ts export declare function __extends(d: Function, b: Function): void; export declare function __assign(t: any, ...sources: any[]): any; @@ -35,3 +47,4 @@ export declare function __decorate(decorators: Function[], target: any, key?: st export declare function __param(paramIndex: number, decorator: Function): Function; export declare function __metadata(metadataKey: any, metadataValue: any): Function; export declare function __awaiter(thisArg: any, _arguments: any, P: Function, generator: Function): any; +export declare function __makeTemplateObject(cooked: string[], raw: string[]): TemplateStringsArray; diff --git a/tests/cases/compiler/taggedTemplateWithoutDeclaredHelper.ts b/tests/cases/compiler/taggedTemplateWithoutDeclaredHelper.ts new file mode 100755 index 0000000000000..5e5bea3fd6a9a --- /dev/null +++ b/tests/cases/compiler/taggedTemplateWithoutDeclaredHelper.ts @@ -0,0 +1,14 @@ +// @target: es5 +// @module: commonjs +// @importHelpers: true +// @strict: true + +// @filename: foo.ts +function id(x: T) { + return x; +} + +export const result = id `hello world`; + +// @filename: ./node_modules/tslib/index.d.ts +export { }; From 1841afeaa2254ee32d50ac49d2f27e6ad8e3ccb8 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Wed, 27 Sep 2017 17:31:32 -0700 Subject: [PATCH 15/26] Ensure that the import helper is checked for tagged templates, and update its name. --- src/compiler/checker.ts | 4 ++-- src/compiler/types.ts | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) mode change 100644 => 100755 src/compiler/checker.ts mode change 100644 => 100755 src/compiler/types.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts old mode 100644 new mode 100755 index bf01b5fe940ed..0e5b8e2cf8d4c --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -16665,7 +16665,7 @@ namespace ts { function checkTaggedTemplateExpression(node: TaggedTemplateExpression): Type { if (languageVersion < ScriptTarget.ES2015) { - checkExternalEmitHelpers(node, ExternalEmitHelpers.GetTemplateObject); + checkExternalEmitHelpers(node, ExternalEmitHelpers.MakeTemplateObject); } return getReturnTypeOfSignature(getResolvedSignature(node)); } @@ -24032,7 +24032,7 @@ namespace ts { case ExternalEmitHelpers.AsyncDelegator: return "__asyncDelegator"; case ExternalEmitHelpers.AsyncValues: return "__asyncValues"; case ExternalEmitHelpers.ExportStar: return "__exportStar"; - case ExternalEmitHelpers.GetTemplateObject: return "__getTemplateObject"; + case ExternalEmitHelpers.MakeTemplateObject: return "__makeTemplateObject"; default: Debug.fail("Unrecognized helper"); } } diff --git a/src/compiler/types.ts b/src/compiler/types.ts old mode 100644 new mode 100755 index 7de5e955e47ca..5d0b2d66045da --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -4287,7 +4287,8 @@ namespace ts { AsyncDelegator = 1 << 13, // __asyncDelegator (used by ES2017 async generator yield* transformation) AsyncValues = 1 << 14, // __asyncValues (used by ES2017 for..await..of transformation) ExportStar = 1 << 15, // __exportStar (used by CommonJS/AMD/UMD module transformation) - GetTemplateObject = 1 << 16, // __getTemplateObject (used for constructing template string array objects) + MakeTemplateObject = 1 << 16, // __makeTemplateObject (used for constructing template string array objects) + " LastPlusOne", // Helpers included by ES2015 for..of ForOfIncludes = Values, @@ -4305,7 +4306,7 @@ namespace ts { SpreadIncludes = Read | Spread, FirstEmitHelper = Extends, - LastEmitHelper = ExportStar + LastEmitHelper = ExternalEmitHelpers[" LastPlusOne"] - 1 } export const enum EmitHint { From 0b7538d04daf2d3015d23eafa4605a2866be23a0 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Wed, 27 Sep 2017 17:32:14 -0700 Subject: [PATCH 16/26] Accepted baselines. --- tests/baselines/reference/importHelpers.js | 30 +++++++++++++++ .../baselines/reference/importHelpers.symbols | 34 +++++++++++++++++ tests/baselines/reference/importHelpers.types | 38 +++++++++++++++++++ ...edTemplateWithoutDeclaredHelper.errors.txt | 15 ++++++++ .../taggedTemplateWithoutDeclaredHelper.js | 22 +++++++++++ ...aggedTemplateWithoutDeclaredHelper.symbols | 19 ++++++++++ .../taggedTemplateWithoutDeclaredHelper.types | 21 ++++++++++ 7 files changed, 179 insertions(+) mode change 100644 => 100755 tests/baselines/reference/importHelpers.js mode change 100644 => 100755 tests/baselines/reference/importHelpers.symbols mode change 100644 => 100755 tests/baselines/reference/importHelpers.types create mode 100755 tests/baselines/reference/taggedTemplateWithoutDeclaredHelper.errors.txt create mode 100755 tests/baselines/reference/taggedTemplateWithoutDeclaredHelper.js create mode 100755 tests/baselines/reference/taggedTemplateWithoutDeclaredHelper.symbols create mode 100755 tests/baselines/reference/taggedTemplateWithoutDeclaredHelper.types diff --git a/tests/baselines/reference/importHelpers.js b/tests/baselines/reference/importHelpers.js old mode 100644 new mode 100755 index fdf9b12ed521d..8178311769ac1 --- a/tests/baselines/reference/importHelpers.js +++ b/tests/baselines/reference/importHelpers.js @@ -11,6 +11,12 @@ class C { method(@dec x: number) { } } + +function id(x: T) { + return x; +} + +export const result = id`hello world`; //// [script.ts] class A { } @@ -23,6 +29,12 @@ class C { method(@dec x: number) { } } + +function id(x: T) { + return x; +} + +const result = id`hello world`; //// [tslib.d.ts] export declare function __extends(d: Function, b: Function): void; @@ -31,6 +43,7 @@ export declare function __decorate(decorators: Function[], target: any, key?: st export declare function __param(paramIndex: number, decorator: Function): Function; export declare function __metadata(metadataKey: any, metadataValue: any): Function; export declare function __awaiter(thisArg: any, _arguments: any, P: Function, generator: Function): any; +export declare function __makeTemplateObject(cooked: string[], raw: string[]): TemplateStringsArray; //// [external.js] @@ -67,6 +80,11 @@ var C = /** @class */ (function () { ], C); return C; }()); +function id(x) { + return x; +} +exports.result = id(_a || (_a = tslib_1.__makeTemplateObject(["hello world"], ["hello world"]))); +var _a; //// [script.js] var __extends = (this && this.__extends) || (function () { var extendStatics = Object.setPrototypeOf || @@ -78,6 +96,13 @@ var __extends = (this && this.__extends) || (function () { d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); +var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { + if (Object.defineProperty) { + return Object.defineProperty(cooked, "raw", { value: raw }); + } + cooked.raw = raw; + return cooked; +}; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); @@ -118,3 +143,8 @@ var C = /** @class */ (function () { ], C); return C; }()); +function id(x) { + return x; +} +var result = id(_a || (_a = __makeTemplateObject(["hello world"], ["hello world"]))); +var _a; diff --git a/tests/baselines/reference/importHelpers.symbols b/tests/baselines/reference/importHelpers.symbols old mode 100644 new mode 100755 index 55ca5153e32cc..7b2184f93c61f --- a/tests/baselines/reference/importHelpers.symbols +++ b/tests/baselines/reference/importHelpers.symbols @@ -22,6 +22,20 @@ class C { } } +function id(x: T) { +>id : Symbol(id, Decl(external.ts, 9, 1)) +>T : Symbol(T, Decl(external.ts, 11, 12)) +>x : Symbol(x, Decl(external.ts, 11, 15)) +>T : Symbol(T, Decl(external.ts, 11, 12)) + + return x; +>x : Symbol(x, Decl(external.ts, 11, 15)) +} + +export const result = id`hello world`; +>result : Symbol(result, Decl(external.ts, 15, 12)) +>id : Symbol(id, Decl(external.ts, 9, 1)) + === tests/cases/compiler/script.ts === class A { } >A : Symbol(A, Decl(script.ts, 0, 0)) @@ -46,6 +60,20 @@ class C { } } +function id(x: T) { +>id : Symbol(id, Decl(script.ts, 9, 1)) +>T : Symbol(T, Decl(script.ts, 11, 12)) +>x : Symbol(x, Decl(script.ts, 11, 15)) +>T : Symbol(T, Decl(script.ts, 11, 12)) + + return x; +>x : Symbol(x, Decl(script.ts, 11, 15)) +} + +const result = id`hello world`; +>result : Symbol(result, Decl(script.ts, 15, 5)) +>id : Symbol(id, Decl(script.ts, 9, 1)) + === tests/cases/compiler/tslib.d.ts === export declare function __extends(d: Function, b: Function): void; >__extends : Symbol(__extends, Decl(tslib.d.ts, --, --)) @@ -89,3 +117,9 @@ export declare function __awaiter(thisArg: any, _arguments: any, P: Function, ge >generator : Symbol(generator, Decl(tslib.d.ts, --, --)) >Function : Symbol(Function, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +export declare function __makeTemplateObject(cooked: string[], raw: string[]): TemplateStringsArray; +>__makeTemplateObject : Symbol(__makeTemplateObject, Decl(tslib.d.ts, --, --)) +>cooked : Symbol(cooked, Decl(tslib.d.ts, --, --)) +>raw : Symbol(raw, Decl(tslib.d.ts, --, --)) +>TemplateStringsArray : Symbol(TemplateStringsArray, Decl(lib.d.ts, --, --)) + diff --git a/tests/baselines/reference/importHelpers.types b/tests/baselines/reference/importHelpers.types old mode 100644 new mode 100755 index 0ab8d40ee853f..06b851139cfcc --- a/tests/baselines/reference/importHelpers.types +++ b/tests/baselines/reference/importHelpers.types @@ -22,6 +22,22 @@ class C { } } +function id(x: T) { +>id : (x: T) => T +>T : T +>x : T +>T : T + + return x; +>x : T +} + +export const result = id`hello world`; +>result : TemplateStringsArray +>id`hello world` : TemplateStringsArray +>id : (x: T) => T +>`hello world` : "hello world" + === tests/cases/compiler/script.ts === class A { } >A : A @@ -46,6 +62,22 @@ class C { } } +function id(x: T) { +>id : (x: T) => T +>T : T +>x : T +>T : T + + return x; +>x : T +} + +const result = id`hello world`; +>result : TemplateStringsArray +>id`hello world` : TemplateStringsArray +>id : (x: T) => T +>`hello world` : "hello world" + === tests/cases/compiler/tslib.d.ts === export declare function __extends(d: Function, b: Function): void; >__extends : (d: Function, b: Function) => void @@ -89,3 +121,9 @@ export declare function __awaiter(thisArg: any, _arguments: any, P: Function, ge >generator : Function >Function : Function +export declare function __makeTemplateObject(cooked: string[], raw: string[]): TemplateStringsArray; +>__makeTemplateObject : (cooked: string[], raw: string[]) => TemplateStringsArray +>cooked : string[] +>raw : string[] +>TemplateStringsArray : TemplateStringsArray + diff --git a/tests/baselines/reference/taggedTemplateWithoutDeclaredHelper.errors.txt b/tests/baselines/reference/taggedTemplateWithoutDeclaredHelper.errors.txt new file mode 100755 index 0000000000000..c0931c50bb576 --- /dev/null +++ b/tests/baselines/reference/taggedTemplateWithoutDeclaredHelper.errors.txt @@ -0,0 +1,15 @@ +tests/cases/compiler/foo.ts(5,23): error TS2343: This syntax requires an imported helper named '__makeTemplateObject', but module 'tslib' has no exported member '__makeTemplateObject'. + + +==== tests/cases/compiler/foo.ts (1 errors) ==== + function id(x: T) { + return x; + } + + export const result = id `hello world`; + ~~~~~~~~~~~~~~~~ +!!! error TS2343: This syntax requires an imported helper named '__makeTemplateObject', but module 'tslib' has no exported member '__makeTemplateObject'. + +==== tests/cases/compiler/node_modules/tslib/index.d.ts (0 errors) ==== + export { }; + \ No newline at end of file diff --git a/tests/baselines/reference/taggedTemplateWithoutDeclaredHelper.js b/tests/baselines/reference/taggedTemplateWithoutDeclaredHelper.js new file mode 100755 index 0000000000000..453b35d98ba84 --- /dev/null +++ b/tests/baselines/reference/taggedTemplateWithoutDeclaredHelper.js @@ -0,0 +1,22 @@ +//// [tests/cases/compiler/taggedTemplateWithoutDeclaredHelper.ts] //// + +//// [foo.ts] +function id(x: T) { + return x; +} + +export const result = id `hello world`; + +//// [index.d.ts] +export { }; + + +//// [foo.js] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var tslib_1 = require("tslib"); +function id(x) { + return x; +} +exports.result = id(_a || (_a = tslib_1.__makeTemplateObject(["hello world"], ["hello world"]))); +var _a; diff --git a/tests/baselines/reference/taggedTemplateWithoutDeclaredHelper.symbols b/tests/baselines/reference/taggedTemplateWithoutDeclaredHelper.symbols new file mode 100755 index 0000000000000..dcba750c89076 --- /dev/null +++ b/tests/baselines/reference/taggedTemplateWithoutDeclaredHelper.symbols @@ -0,0 +1,19 @@ +=== tests/cases/compiler/foo.ts === +function id(x: T) { +>id : Symbol(id, Decl(foo.ts, 0, 0)) +>T : Symbol(T, Decl(foo.ts, 0, 12)) +>x : Symbol(x, Decl(foo.ts, 0, 15)) +>T : Symbol(T, Decl(foo.ts, 0, 12)) + + return x; +>x : Symbol(x, Decl(foo.ts, 0, 15)) +} + +export const result = id `hello world`; +>result : Symbol(result, Decl(foo.ts, 4, 12)) +>id : Symbol(id, Decl(foo.ts, 0, 0)) + +=== tests/cases/compiler/node_modules/tslib/index.d.ts === +export { }; +No type information for this code. +No type information for this code. \ No newline at end of file diff --git a/tests/baselines/reference/taggedTemplateWithoutDeclaredHelper.types b/tests/baselines/reference/taggedTemplateWithoutDeclaredHelper.types new file mode 100755 index 0000000000000..7e8486e3ecc9f --- /dev/null +++ b/tests/baselines/reference/taggedTemplateWithoutDeclaredHelper.types @@ -0,0 +1,21 @@ +=== tests/cases/compiler/foo.ts === +function id(x: T) { +>id : (x: T) => T +>T : T +>x : T +>T : T + + return x; +>x : T +} + +export const result = id `hello world`; +>result : TemplateStringsArray +>id `hello world` : TemplateStringsArray +>id : (x: T) => T +>`hello world` : "hello world" + +=== tests/cases/compiler/node_modules/tslib/index.d.ts === +export { }; +No type information for this code. +No type information for this code. \ No newline at end of file From 4ec1643ecc56dcf95c7dcc11d7a35c5ebc861dea Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Wed, 27 Sep 2017 18:14:45 -0700 Subject: [PATCH 17/26] Fall back to old behavior for tagged template emit in global files. --- src/compiler/transformers/es2015.ts | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) mode change 100644 => 100755 src/compiler/transformers/es2015.ts diff --git a/src/compiler/transformers/es2015.ts b/src/compiler/transformers/es2015.ts old mode 100644 new mode 100755 index 9523c61439991..00610c6552c75 --- a/src/compiler/transformers/es2015.ts +++ b/src/compiler/transformers/es2015.ts @@ -3652,8 +3652,10 @@ namespace ts { // Visit the tag expression const tag = visitNode(node.tag, visitor, isExpression); - // Allocate storage for the template site object - const temp = createTempVariable(recordTaggedTemplateString); + // Allocate storage for the template site object if we're in a module. + // In the global scope, any variable we currently generate could conflict with + // variables from outside of the current compilation. + const temp = isExternalModule(currentSourceFile) ? createTempVariable(recordTaggedTemplateString) : undefined; // Build up the template arguments and the raw and cooked strings for the template. // We start out with 'undefined' for the first argument and revisit later @@ -3676,12 +3678,19 @@ namespace ts { } } - // Initialize the template object if necessary - templateArguments[0] = createLogicalOr( - temp, - createAssignment( + const helperCall = createTemplateObjectHelper(context, createArrayLiteral(cookedStrings), createArrayLiteral(rawStrings)); + + // If we're in the global scope, we risk having conflicting variables. + // Since we currently lack the infrastructure to create sufficiently unique names, + // we'll fall back to creating the template object on every invocation. + templateArguments[0] = !temp ? + helperCall : + createLogicalOr( temp, - createTemplateObjectHelper(context, createArrayLiteral(cookedStrings), createArrayLiteral(rawStrings)))); + createAssignment( + temp, + helperCall) + ); return createCall(tag, /*typeArguments*/ undefined, templateArguments); } From d039942d9ac76678f23b0aea29be38f505e5576b Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Wed, 27 Sep 2017 18:28:10 -0700 Subject: [PATCH 18/26] Accepted baselines. --- tests/baselines/reference/asOperator3.js | 5 +- tests/baselines/reference/asOperatorASI.js | 3 +- tests/baselines/reference/importHelpers.js | 3 +- .../baselines/reference/importHelpers.symbols | 0 tests/baselines/reference/importHelpers.types | 0 ...taggedTemplateStringsHexadecimalEscapes.js | 3 +- ...sPlainCharactersThatArePartsOfEscapes01.js | 3 +- ...gedTemplateStringsTypeArgumentInference.js | 57 +++++++++---------- ...emplateStringsWithIncompatibleTypedTags.js | 19 +++---- ...StringsWithManyCallAndMemberExpressions.js | 3 +- ...gedTemplateStringsWithMultilineTemplate.js | 3 +- ...dTemplateStringsWithOverloadResolution1.js | 13 ++--- ...dTemplateStringsWithOverloadResolution2.js | 5 +- ...dTemplateStringsWithOverloadResolution3.js | 45 +++++++-------- ...aggedTemplateStringsWithTagNamedDeclare.js | 3 +- ...taggedTemplateStringsWithTagsTypedAsAny.js | 21 ++++--- ...tionExpressionsInSubstitutionExpression.js | 3 +- .../taggedTemplateStringsWithTypedTags.js | 17 +++--- ...taggedTemplateStringsWithUnicodeEscapes.js | 3 +- ...gedTemplateStringsWithWhitespaceEscapes.js | 3 +- .../taggedTemplateUntypedTagCall01.js | 3 +- .../taggedTemplateWithConstructableTag01.js | 3 +- .../taggedTemplateWithConstructableTag02.js | 3 +- .../reference/templateStringInModuleName.js | 5 +- .../templateStringInObjectLiteral.js | 3 +- .../templateStringInPropertyName1.js | 3 +- .../templateStringInPropertyName2.js | 3 +- .../templateStringInTaggedTemplate.js | 3 +- ...emplateStringsArrayTypeDefinedInES5Mode.js | 3 +- ...mplateStringsArrayTypeNotDefinedES5Mode.js | 3 +- 30 files changed, 108 insertions(+), 136 deletions(-) mode change 100755 => 100644 tests/baselines/reference/importHelpers.js mode change 100755 => 100644 tests/baselines/reference/importHelpers.symbols mode change 100755 => 100644 tests/baselines/reference/importHelpers.types diff --git a/tests/baselines/reference/asOperator3.js b/tests/baselines/reference/asOperator3.js index c38d5502f8051..a2cbe53e31cbc 100644 --- a/tests/baselines/reference/asOperator3.js +++ b/tests/baselines/reference/asOperator3.js @@ -24,6 +24,5 @@ var c = 123 + 456 + " trailing"; var d = "Hello " + 123 + " World"; var e = "Hello"; var f = 1 + (1 + " end of string"); -var g = tag(_a || (_a = __makeTemplateObject(["Hello ", " World"], ["Hello ", " World"])), 123); -var h = tag(_b || (_b = __makeTemplateObject(["Hello"], ["Hello"]))); -var _a, _b; +var g = tag(__makeTemplateObject(["Hello ", " World"], ["Hello ", " World"]), 123); +var h = tag(__makeTemplateObject(["Hello"], ["Hello"])); diff --git a/tests/baselines/reference/asOperatorASI.js b/tests/baselines/reference/asOperatorASI.js index 2a454823a2481..273b710dfa4a2 100644 --- a/tests/baselines/reference/asOperatorASI.js +++ b/tests/baselines/reference/asOperatorASI.js @@ -26,8 +26,7 @@ var Foo = /** @class */ (function () { }()); // Example 1 var x = 10; -as(_a || (_a = __makeTemplateObject(["Hello world"], ["Hello world"]))); // should not error +as(__makeTemplateObject(["Hello world"], ["Hello world"])); // should not error // Example 2 var y = 20; as(Foo); // should emit -var _a; diff --git a/tests/baselines/reference/importHelpers.js b/tests/baselines/reference/importHelpers.js old mode 100755 new mode 100644 index 8178311769ac1..d8b502491b806 --- a/tests/baselines/reference/importHelpers.js +++ b/tests/baselines/reference/importHelpers.js @@ -146,5 +146,4 @@ var C = /** @class */ (function () { function id(x) { return x; } -var result = id(_a || (_a = __makeTemplateObject(["hello world"], ["hello world"]))); -var _a; +var result = id(__makeTemplateObject(["hello world"], ["hello world"])); diff --git a/tests/baselines/reference/importHelpers.symbols b/tests/baselines/reference/importHelpers.symbols old mode 100755 new mode 100644 diff --git a/tests/baselines/reference/importHelpers.types b/tests/baselines/reference/importHelpers.types old mode 100755 new mode 100644 diff --git a/tests/baselines/reference/taggedTemplateStringsHexadecimalEscapes.js b/tests/baselines/reference/taggedTemplateStringsHexadecimalEscapes.js index 88828fa770901..5e9e2ef8bf1e6 100644 --- a/tests/baselines/reference/taggedTemplateStringsHexadecimalEscapes.js +++ b/tests/baselines/reference/taggedTemplateStringsHexadecimalEscapes.js @@ -18,5 +18,4 @@ function f() { args[_i] = arguments[_i]; } } -f(_a || (_a = __makeTemplateObject(["\r", "\n"], ["\\x0D", "\\x0A"])), "Interrupted CRLF"); -var _a; +f(__makeTemplateObject(["\r", "\n"], ["\\x0D", "\\x0A"]), "Interrupted CRLF"); diff --git a/tests/baselines/reference/taggedTemplateStringsPlainCharactersThatArePartsOfEscapes01.js b/tests/baselines/reference/taggedTemplateStringsPlainCharactersThatArePartsOfEscapes01.js index 3fbfc326dc6aa..afa1a662ef9fc 100644 --- a/tests/baselines/reference/taggedTemplateStringsPlainCharactersThatArePartsOfEscapes01.js +++ b/tests/baselines/reference/taggedTemplateStringsPlainCharactersThatArePartsOfEscapes01.js @@ -19,5 +19,4 @@ function f() { x[_i] = arguments[_i]; } } -f(_a || (_a = __makeTemplateObject(["0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2028 2029 0085 t v f b r n"], ["0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2028 2029 0085 t v f b r n"]))); -var _a; +f(__makeTemplateObject(["0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2028 2029 0085 t v f b r n"], ["0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2028 2029 0085 t v f b r n"])); diff --git a/tests/baselines/reference/taggedTemplateStringsTypeArgumentInference.js b/tests/baselines/reference/taggedTemplateStringsTypeArgumentInference.js index 4d2c157d9d1a9..9017ceb2571e2 100644 --- a/tests/baselines/reference/taggedTemplateStringsTypeArgumentInference.js +++ b/tests/baselines/reference/taggedTemplateStringsTypeArgumentInference.js @@ -101,65 +101,64 @@ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cook }; // Generic tag with one parameter function noParams(n) { } -noParams(_a || (_a = __makeTemplateObject([""], [""]))); +noParams(__makeTemplateObject([""], [""])); // Generic tag with parameter which does not use type parameter function noGenericParams(n) { } -noGenericParams(_b || (_b = __makeTemplateObject([""], [""]))); +noGenericParams(__makeTemplateObject([""], [""])); // Generic tag with multiple type parameters and only one used in parameter type annotation function someGenerics1a(n, m) { } -someGenerics1a(_c || (_c = __makeTemplateObject(["", ""], ["", ""])), 3); +someGenerics1a(__makeTemplateObject(["", ""], ["", ""]), 3); function someGenerics1b(n, m) { } -someGenerics1b(_d || (_d = __makeTemplateObject(["", ""], ["", ""])), 3); +someGenerics1b(__makeTemplateObject(["", ""], ["", ""]), 3); // Generic tag with argument of function type whose parameter is of type parameter type function someGenerics2a(strs, n) { } -someGenerics2a(_e || (_e = __makeTemplateObject(["", ""], ["", ""])), function (n) { return n; }); +someGenerics2a(__makeTemplateObject(["", ""], ["", ""]), function (n) { return n; }); function someGenerics2b(strs, n) { } -someGenerics2b(_f || (_f = __makeTemplateObject(["", ""], ["", ""])), function (n, x) { return n; }); +someGenerics2b(__makeTemplateObject(["", ""], ["", ""]), function (n, x) { return n; }); // Generic tag with argument of function type whose parameter is not of type parameter type but body/return type uses type parameter function someGenerics3(strs, producer) { } -someGenerics3(_g || (_g = __makeTemplateObject(["", ""], ["", ""])), function () { return ''; }); -someGenerics3(_h || (_h = __makeTemplateObject(["", ""], ["", ""])), function () { return undefined; }); -someGenerics3(_j || (_j = __makeTemplateObject(["", ""], ["", ""])), function () { return 3; }); +someGenerics3(__makeTemplateObject(["", ""], ["", ""]), function () { return ''; }); +someGenerics3(__makeTemplateObject(["", ""], ["", ""]), function () { return undefined; }); +someGenerics3(__makeTemplateObject(["", ""], ["", ""]), function () { return 3; }); // 2 parameter generic tag with argument 1 of type parameter type and argument 2 of function type whose parameter is of type parameter type function someGenerics4(strs, n, f) { } -someGenerics4(_k || (_k = __makeTemplateObject(["", "", ""], ["", "", ""])), 4, function () { return null; }); -someGenerics4(_l || (_l = __makeTemplateObject(["", "", ""], ["", "", ""])), '', function () { return 3; }); -someGenerics4(_m || (_m = __makeTemplateObject(["", "", ""], ["", "", ""])), null, null); +someGenerics4(__makeTemplateObject(["", "", ""], ["", "", ""]), 4, function () { return null; }); +someGenerics4(__makeTemplateObject(["", "", ""], ["", "", ""]), '', function () { return 3; }); +someGenerics4(__makeTemplateObject(["", "", ""], ["", "", ""]), null, null); // 2 parameter generic tag with argument 2 of type parameter type and argument 1 of function type whose parameter is of type parameter type function someGenerics5(strs, n, f) { } -someGenerics5(_o || (_o = __makeTemplateObject(["", " ", ""], ["", " ", ""])), 4, function () { return null; }); -someGenerics5(_p || (_p = __makeTemplateObject(["", "", ""], ["", "", ""])), '', function () { return 3; }); -someGenerics5(_q || (_q = __makeTemplateObject(["", "", ""], ["", "", ""])), null, null); +someGenerics5(__makeTemplateObject(["", " ", ""], ["", " ", ""]), 4, function () { return null; }); +someGenerics5(__makeTemplateObject(["", "", ""], ["", "", ""]), '', function () { return 3; }); +someGenerics5(__makeTemplateObject(["", "", ""], ["", "", ""]), null, null); // Generic tag with multiple arguments of function types that each have parameters of the same generic type function someGenerics6(strs, a, b, c) { } -someGenerics6(_r || (_r = __makeTemplateObject(["", "", "", ""], ["", "", "", ""])), function (n) { return n; }, function (n) { return n; }, function (n) { return n; }); -someGenerics6(_s || (_s = __makeTemplateObject(["", "", "", ""], ["", "", "", ""])), function (n) { return n; }, function (n) { return n; }, function (n) { return n; }); -someGenerics6(_t || (_t = __makeTemplateObject(["", "", "", ""], ["", "", "", ""])), function (n) { return n; }, function (n) { return n; }, function (n) { return n; }); +someGenerics6(__makeTemplateObject(["", "", "", ""], ["", "", "", ""]), function (n) { return n; }, function (n) { return n; }, function (n) { return n; }); +someGenerics6(__makeTemplateObject(["", "", "", ""], ["", "", "", ""]), function (n) { return n; }, function (n) { return n; }, function (n) { return n; }); +someGenerics6(__makeTemplateObject(["", "", "", ""], ["", "", "", ""]), function (n) { return n; }, function (n) { return n; }, function (n) { return n; }); // Generic tag with multiple arguments of function types that each have parameters of different generic type function someGenerics7(strs, a, b, c) { } -someGenerics7(_u || (_u = __makeTemplateObject(["", "", "", ""], ["", "", "", ""])), function (n) { return n; }, function (n) { return n; }, function (n) { return n; }); -someGenerics7(_v || (_v = __makeTemplateObject(["", "", "", ""], ["", "", "", ""])), function (n) { return n; }, function (n) { return n; }, function (n) { return n; }); -someGenerics7(_w || (_w = __makeTemplateObject(["", "", "", ""], ["", "", "", ""])), function (n) { return n; }, function (n) { return n; }, function (n) { return n; }); +someGenerics7(__makeTemplateObject(["", "", "", ""], ["", "", "", ""]), function (n) { return n; }, function (n) { return n; }, function (n) { return n; }); +someGenerics7(__makeTemplateObject(["", "", "", ""], ["", "", "", ""]), function (n) { return n; }, function (n) { return n; }, function (n) { return n; }); +someGenerics7(__makeTemplateObject(["", "", "", ""], ["", "", "", ""]), function (n) { return n; }, function (n) { return n; }, function (n) { return n; }); // Generic tag with argument of generic function type function someGenerics8(strs, n) { return n; } -var x = someGenerics8(_x || (_x = __makeTemplateObject(["", ""], ["", ""])), someGenerics7); -x(_y || (_y = __makeTemplateObject(["", "", "", ""], ["", "", "", ""])), null, null, null); +var x = someGenerics8(__makeTemplateObject(["", ""], ["", ""]), someGenerics7); +x(__makeTemplateObject(["", "", "", ""], ["", "", "", ""]), null, null, null); // Generic tag with multiple parameters of generic type passed arguments with no best common type function someGenerics9(strs, a, b, c) { return null; } -var a9a = someGenerics9(_z || (_z = __makeTemplateObject(["", "", "", ""], ["", "", "", ""])), '', 0, []); +var a9a = someGenerics9(__makeTemplateObject(["", "", "", ""], ["", "", "", ""]), '', 0, []); var a9a; -var a9e = someGenerics9(_0 || (_0 = __makeTemplateObject(["", "", "", ""], ["", "", "", ""])), undefined, { x: 6, z: new Date() }, { x: 6, y: '' }); +var a9e = someGenerics9(__makeTemplateObject(["", "", "", ""], ["", "", "", ""]), undefined, { x: 6, z: new Date() }, { x: 6, y: '' }); var a9e; // Generic tag with multiple parameters of generic type passed arguments with a single best common type -var a9d = someGenerics9(_1 || (_1 = __makeTemplateObject(["", "", "", ""], ["", "", "", ""])), { x: 3 }, { x: 6 }, { x: 6 }); +var a9d = someGenerics9(__makeTemplateObject(["", "", "", ""], ["", "", "", ""]), { x: 3 }, { x: 6 }, { x: 6 }); var a9d; // Generic tag with multiple parameters of generic type where one argument is of type 'any' var anyVar; -var a = someGenerics9(_2 || (_2 = __makeTemplateObject(["", "", "", ""], ["", "", "", ""])), 7, anyVar, 4); +var a = someGenerics9(__makeTemplateObject(["", "", "", ""], ["", "", "", ""]), 7, anyVar, 4); var a; // Generic tag with multiple parameters of generic type where one argument is [] and the other is not 'any' -var arr = someGenerics9(_3 || (_3 = __makeTemplateObject(["", "", "", ""], ["", "", "", ""])), [], null, undefined); +var arr = someGenerics9(__makeTemplateObject(["", "", "", ""], ["", "", "", ""]), [], null, undefined); var arr; -var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3; diff --git a/tests/baselines/reference/taggedTemplateStringsWithIncompatibleTypedTags.js b/tests/baselines/reference/taggedTemplateStringsWithIncompatibleTypedTags.js index eb7288ad1ed12..81b2541e1e774 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithIncompatibleTypedTags.js +++ b/tests/baselines/reference/taggedTemplateStringsWithIncompatibleTypedTags.js @@ -42,15 +42,14 @@ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cook return cooked; }; var f; -f(_a || (_a = __makeTemplateObject(["abc"], ["abc"]))); -f(_b || (_b = __makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2); -f(_c || (_c = __makeTemplateObject(["abc"], ["abc"]))).member; -f(_d || (_d = __makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2).member; -f(_e || (_e = __makeTemplateObject(["abc"], ["abc"])))["member"]; -f(_f || (_f = __makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2)["member"]; -f(_g || (_g = __makeTemplateObject(["abc"], ["abc"])))[0].member(_h || (_h = __makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2); -f(_j || (_j = __makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2)["member"].member(_k || (_k = __makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2); -f(_l || (_l = __makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), true, true)["member"].member(_m || (_m = __makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2); +f(__makeTemplateObject(["abc"], ["abc"])); +f(__makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"]), 1, 2); +f(__makeTemplateObject(["abc"], ["abc"])).member; +f(__makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"]), 1, 2).member; +f(__makeTemplateObject(["abc"], ["abc"]))["member"]; +f(__makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"]), 1, 2)["member"]; +f(__makeTemplateObject(["abc"], ["abc"]))[0].member(__makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"]), 1, 2); +f(__makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"]), 1, 2)["member"].member(__makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"]), 1, 2); +f(__makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"]), true, true)["member"].member(__makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"]), 1, 2); f.thisIsNotATag("abc"); f.thisIsNotATag("abc" + 1 + "def" + 2 + "ghi"); -var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m; diff --git a/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressions.js b/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressions.js index 7442993b7778b..4174cf665c0ae 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressions.js +++ b/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressions.js @@ -24,5 +24,4 @@ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cook return cooked; }; var f; -var x = new new new (f(_a || (_a = __makeTemplateObject(["abc", "def"], ["abc", "def"])), 0).member)("hello")(42) === true; -var _a; +var x = new new new (f(__makeTemplateObject(["abc", "def"], ["abc", "def"]), 0).member)("hello")(42) === true; diff --git a/tests/baselines/reference/taggedTemplateStringsWithMultilineTemplate.js b/tests/baselines/reference/taggedTemplateStringsWithMultilineTemplate.js index 25861be7dceeb..eb4a64db61433 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithMultilineTemplate.js +++ b/tests/baselines/reference/taggedTemplateStringsWithMultilineTemplate.js @@ -21,5 +21,4 @@ function f() { args[_i] = arguments[_i]; } } -f(_a || (_a = __makeTemplateObject(["\n\n"], ["\n\\\n\n"]))); -var _a; +f(__makeTemplateObject(["\n\n"], ["\n\\\n\n"])); diff --git a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution1.js b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution1.js index 03fbe35fd80e2..36302611e265b 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution1.js +++ b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution1.js @@ -43,10 +43,9 @@ var c = foo([], 1, 2); // boolean var d = foo([], 1, true); // boolean (with error) var e = foo([], 1, "2"); // {} var f = foo([], 1, 2, 3); // any (with error) -var u = foo(_a || (_a = __makeTemplateObject([""], [""]))); // number -var v = foo(_b || (_b = __makeTemplateObject(["", ""], ["", ""])), 1); // string -var w = foo(_c || (_c = __makeTemplateObject(["", "", ""], ["", "", ""])), 1, 2); // boolean -var x = foo(_d || (_d = __makeTemplateObject(["", "", ""], ["", "", ""])), 1, true); // boolean (with error) -var y = foo(_e || (_e = __makeTemplateObject(["", "", ""], ["", "", ""])), 1, "2"); // {} -var z = foo(_f || (_f = __makeTemplateObject(["", "", "", ""], ["", "", "", ""])), 1, 2, 3); // any (with error) -var _a, _b, _c, _d, _e, _f; +var u = foo(__makeTemplateObject([""], [""])); // number +var v = foo(__makeTemplateObject(["", ""], ["", ""]), 1); // string +var w = foo(__makeTemplateObject(["", "", ""], ["", "", ""]), 1, 2); // boolean +var x = foo(__makeTemplateObject(["", "", ""], ["", "", ""]), 1, true); // boolean (with error) +var y = foo(__makeTemplateObject(["", "", ""], ["", "", ""]), 1, "2"); // {} +var z = foo(__makeTemplateObject(["", "", "", ""], ["", "", "", ""]), 1, 2, 3); // any (with error) diff --git a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2.js b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2.js index aa0046f99ad20..23f0343667f88 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2.js +++ b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2.js @@ -32,7 +32,7 @@ function foo1() { } return undefined; } -var a = foo1(_a || (_a = __makeTemplateObject(["", ""], ["", ""])), 1); +var a = foo1(__makeTemplateObject(["", ""], ["", ""]), 1); var b = foo1([], 1); function foo2() { var stuff = []; @@ -41,6 +41,5 @@ function foo2() { } return undefined; } -var c = foo2(_b || (_b = __makeTemplateObject(["", ""], ["", ""])), 1); +var c = foo2(__makeTemplateObject(["", ""], ["", ""]), 1); var d = foo2([], 1); -var _a, _b; diff --git a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution3.js b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution3.js index 4ec10b11e73f6..8eb9c93957970 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution3.js +++ b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution3.js @@ -81,41 +81,40 @@ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cook return cooked; }; function fn1() { return null; } -var s = fn1(_a || (_a = __makeTemplateObject(["", ""], ["", ""])), undefined); +var s = fn1(__makeTemplateObject(["", ""], ["", ""]), undefined); // No candidate overloads found -fn1(_b || (_b = __makeTemplateObject(["", ""], ["", ""])), {}); // Error +fn1(__makeTemplateObject(["", ""], ["", ""]), {}); // Error function fn2() { return undefined; } -var d1 = fn2(_c || (_c = __makeTemplateObject(["", "", ""], ["", "", ""])), 0, undefined); // contextually typed -var d2 = fn2(_d || (_d = __makeTemplateObject(["", "", ""], ["", "", ""])), 0, undefined); // any +var d1 = fn2(__makeTemplateObject(["", "", ""], ["", "", ""]), 0, undefined); // contextually typed +var d2 = fn2(__makeTemplateObject(["", "", ""], ["", "", ""]), 0, undefined); // any d1.foo(); // error d2(); // no error (typed as any) // Generic and non-generic overload where generic overload is the only candidate -fn2(_e || (_e = __makeTemplateObject(["", "", ""], ["", "", ""])), 0, ''); // OK +fn2(__makeTemplateObject(["", "", ""], ["", "", ""]), 0, ''); // OK // Generic and non-generic overload where non-generic overload is the only candidate -fn2(_f || (_f = __makeTemplateObject(["", "", ""], ["", "", ""])), '', 0); // OK +fn2(__makeTemplateObject(["", "", ""], ["", "", ""]), '', 0); // OK function fn3() { return null; } -var s = fn3(_g || (_g = __makeTemplateObject(["", ""], ["", ""])), 3); -var s = fn3(_h || (_h = __makeTemplateObject(["", "", "", ""], ["", "", "", ""])), '', 3, ''); -var n = fn3(_j || (_j = __makeTemplateObject(["", "", "", ""], ["", "", "", ""])), 5, 5, 5); +var s = fn3(__makeTemplateObject(["", ""], ["", ""]), 3); +var s = fn3(__makeTemplateObject(["", "", "", ""], ["", "", "", ""]), '', 3, ''); +var n = fn3(__makeTemplateObject(["", "", "", ""], ["", "", "", ""]), 5, 5, 5); var n; // Generic overloads with differing arity tagging with arguments matching each overload type parameter count -var s = fn3(_k || (_k = __makeTemplateObject(["", ""], ["", ""])), 4); -var s = fn3(_l || (_l = __makeTemplateObject(["", "", "", ""], ["", "", "", ""])), '', '', ''); -var n = fn3(_m || (_m = __makeTemplateObject(["", "", "", ""], ["", "", "", ""])), '', '', 3); +var s = fn3(__makeTemplateObject(["", ""], ["", ""]), 4); +var s = fn3(__makeTemplateObject(["", "", "", ""], ["", "", "", ""]), '', '', ''); +var n = fn3(__makeTemplateObject(["", "", "", ""], ["", "", "", ""]), '', '', 3); // Generic overloads with differing arity tagging with argument count that doesn't match any overload -fn3(_o || (_o = __makeTemplateObject([""], [""]))); // Error +fn3(__makeTemplateObject([""], [""])); // Error function fn4() { } // Generic overloads with constraints tagged with types that satisfy the constraints -fn4(_p || (_p = __makeTemplateObject(["", "", ""], ["", "", ""])), '', 3); -fn4(_q || (_q = __makeTemplateObject(["", "", ""], ["", "", ""])), 3, ''); -fn4(_r || (_r = __makeTemplateObject(["", "", ""], ["", "", ""])), 3, undefined); -fn4(_s || (_s = __makeTemplateObject(["", "", ""], ["", "", ""])), '', null); +fn4(__makeTemplateObject(["", "", ""], ["", "", ""]), '', 3); +fn4(__makeTemplateObject(["", "", ""], ["", "", ""]), 3, ''); +fn4(__makeTemplateObject(["", "", ""], ["", "", ""]), 3, undefined); +fn4(__makeTemplateObject(["", "", ""], ["", "", ""]), '', null); // Generic overloads with constraints called with type arguments that do not satisfy the constraints -fn4(_t || (_t = __makeTemplateObject(["", "", ""], ["", "", ""])), null, null); // Error +fn4(__makeTemplateObject(["", "", ""], ["", "", ""]), null, null); // Error // Generic overloads with constraints called without type arguments but with types that do not satisfy the constraints -fn4(_u || (_u = __makeTemplateObject(["", "", ""], ["", "", ""])), true, null); -fn4(_v || (_v = __makeTemplateObject(["", "", ""], ["", "", ""])), null, true); +fn4(__makeTemplateObject(["", "", ""], ["", "", ""]), true, null); +fn4(__makeTemplateObject(["", "", ""], ["", "", ""]), null, true); function fn5() { return undefined; } -fn5(_w || (_w = __makeTemplateObject(["", ""], ["", ""])), function (n) { return n.toFixed(); }); // will error; 'n' should have type 'string'. -fn5(_x || (_x = __makeTemplateObject(["", ""], ["", ""])), function (n) { return n.substr(0); }); -var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x; +fn5(__makeTemplateObject(["", ""], ["", ""]), function (n) { return n.toFixed(); }); // will error; 'n' should have type 'string'. +fn5(__makeTemplateObject(["", ""], ["", ""]), function (n) { return n.substr(0); }); diff --git a/tests/baselines/reference/taggedTemplateStringsWithTagNamedDeclare.js b/tests/baselines/reference/taggedTemplateStringsWithTagNamedDeclare.js index da4a46af903eb..c6c8c5f0fb6cb 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithTagNamedDeclare.js +++ b/tests/baselines/reference/taggedTemplateStringsWithTagNamedDeclare.js @@ -18,5 +18,4 @@ function declare(x) { ys[_i - 1] = arguments[_i]; } } -declare(_a || (_a = __makeTemplateObject(["Hello ", " world!"], ["Hello ", " world!"])), 0); -var _a; +declare(__makeTemplateObject(["Hello ", " world!"], ["Hello ", " world!"]), 0); diff --git a/tests/baselines/reference/taggedTemplateStringsWithTagsTypedAsAny.js b/tests/baselines/reference/taggedTemplateStringsWithTagsTypedAsAny.js index 564de1cecd522..fbe11b7b81462 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithTagsTypedAsAny.js +++ b/tests/baselines/reference/taggedTemplateStringsWithTagsTypedAsAny.js @@ -34,16 +34,15 @@ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cook return cooked; }; var f; -f(_a || (_a = __makeTemplateObject(["abc"], ["abc"]))); -f(_b || (_b = __makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2); -f.g.h(_c || (_c = __makeTemplateObject(["abc"], ["abc"]))); -f.g.h(_d || (_d = __makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2); -f(_e || (_e = __makeTemplateObject(["abc"], ["abc"]))).member; -f(_f || (_f = __makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2).member; -f(_g || (_g = __makeTemplateObject(["abc"], ["abc"])))["member"]; -f(_h || (_h = __makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2)["member"]; -f(_j || (_j = __makeTemplateObject(["abc"], ["abc"])))["member"].someOtherTag(_k || (_k = __makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2); -f(_l || (_l = __makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2)["member"].someOtherTag(_m || (_m = __makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2); +f(__makeTemplateObject(["abc"], ["abc"])); +f(__makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"]), 1, 2); +f.g.h(__makeTemplateObject(["abc"], ["abc"])); +f.g.h(__makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"]), 1, 2); +f(__makeTemplateObject(["abc"], ["abc"])).member; +f(__makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"]), 1, 2).member; +f(__makeTemplateObject(["abc"], ["abc"]))["member"]; +f(__makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"]), 1, 2)["member"]; +f(__makeTemplateObject(["abc"], ["abc"]))["member"].someOtherTag(__makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"]), 1, 2); +f(__makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"]), 1, 2)["member"].someOtherTag(__makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"]), 1, 2); f.thisIsNotATag("abc"); f.thisIsNotATag("abc" + 1 + "def" + 2 + "ghi"); -var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m; diff --git a/tests/baselines/reference/taggedTemplateStringsWithTypeErrorInFunctionExpressionsInSubstitutionExpression.js b/tests/baselines/reference/taggedTemplateStringsWithTypeErrorInFunctionExpressionsInSubstitutionExpression.js index 35e98524973c0..2aa770b504e28 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithTypeErrorInFunctionExpressionsInSubstitutionExpression.js +++ b/tests/baselines/reference/taggedTemplateStringsWithTypeErrorInFunctionExpressionsInSubstitutionExpression.js @@ -18,5 +18,4 @@ function foo() { rest[_i] = arguments[_i]; } } -foo(_a || (_a = __makeTemplateObject(["", ""], ["", ""])), function (x) { x = "bad"; }); -var _a; +foo(__makeTemplateObject(["", ""], ["", ""]), function (x) { x = "bad"; }); diff --git a/tests/baselines/reference/taggedTemplateStringsWithTypedTags.js b/tests/baselines/reference/taggedTemplateStringsWithTypedTags.js index 4eec820263a9f..2689038808d26 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithTypedTags.js +++ b/tests/baselines/reference/taggedTemplateStringsWithTypedTags.js @@ -40,14 +40,13 @@ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cook return cooked; }; var f; -f(_a || (_a = __makeTemplateObject(["abc"], ["abc"]))); -f(_b || (_b = __makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2); -f(_c || (_c = __makeTemplateObject(["abc"], ["abc"]))).member; -f(_d || (_d = __makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2).member; -f(_e || (_e = __makeTemplateObject(["abc"], ["abc"])))["member"]; -f(_f || (_f = __makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2)["member"]; -f(_g || (_g = __makeTemplateObject(["abc"], ["abc"])))[0].member(_h || (_h = __makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2); -f(_j || (_j = __makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2)["member"].member(_k || (_k = __makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 1, 2); +f(__makeTemplateObject(["abc"], ["abc"])); +f(__makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"]), 1, 2); +f(__makeTemplateObject(["abc"], ["abc"])).member; +f(__makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"]), 1, 2).member; +f(__makeTemplateObject(["abc"], ["abc"]))["member"]; +f(__makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"]), 1, 2)["member"]; +f(__makeTemplateObject(["abc"], ["abc"]))[0].member(__makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"]), 1, 2); +f(__makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"]), 1, 2)["member"].member(__makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"]), 1, 2); f.thisIsNotATag("abc"); f.thisIsNotATag("abc" + 1 + "def" + 2 + "ghi"); -var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k; diff --git a/tests/baselines/reference/taggedTemplateStringsWithUnicodeEscapes.js b/tests/baselines/reference/taggedTemplateStringsWithUnicodeEscapes.js index 4b6cd135e017e..9f0b0313af2d3 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithUnicodeEscapes.js +++ b/tests/baselines/reference/taggedTemplateStringsWithUnicodeEscapes.js @@ -18,5 +18,4 @@ function f() { args[_i] = arguments[_i]; } } -f(_a || (_a = __makeTemplateObject(["'\uD83D\uDCA9'", "'\uD83D\uDCA9'"], ["'\\u{1f4a9}'", "'\\uD83D\\uDCA9'"])), " should be converted to "); -var _a; +f(__makeTemplateObject(["'\uD83D\uDCA9'", "'\uD83D\uDCA9'"], ["'\\u{1f4a9}'", "'\\uD83D\\uDCA9'"]), " should be converted to "); diff --git a/tests/baselines/reference/taggedTemplateStringsWithWhitespaceEscapes.js b/tests/baselines/reference/taggedTemplateStringsWithWhitespaceEscapes.js index fdaa26b2a491b..ae0e40b112488 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithWhitespaceEscapes.js +++ b/tests/baselines/reference/taggedTemplateStringsWithWhitespaceEscapes.js @@ -18,5 +18,4 @@ function f() { args[_i] = arguments[_i]; } } -f(_a || (_a = __makeTemplateObject(["\t\n\v\f\r\\"], ["\\t\\n\\v\\f\\r\\\\"]))); -var _a; +f(__makeTemplateObject(["\t\n\v\f\r\\"], ["\\t\\n\\v\\f\\r\\\\"])); diff --git a/tests/baselines/reference/taggedTemplateUntypedTagCall01.js b/tests/baselines/reference/taggedTemplateUntypedTagCall01.js index 8ae2b97c7c2a5..a106276904daf 100644 --- a/tests/baselines/reference/taggedTemplateUntypedTagCall01.js +++ b/tests/baselines/reference/taggedTemplateUntypedTagCall01.js @@ -11,5 +11,4 @@ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cook return cooked; }; var tag; -tag(_a || (_a = __makeTemplateObject(["Hello world!"], ["Hello world!"]))); -var _a; +tag(__makeTemplateObject(["Hello world!"], ["Hello world!"])); diff --git a/tests/baselines/reference/taggedTemplateWithConstructableTag01.js b/tests/baselines/reference/taggedTemplateWithConstructableTag01.js index 271c5a2ae6661..1e3712f515722 100644 --- a/tests/baselines/reference/taggedTemplateWithConstructableTag01.js +++ b/tests/baselines/reference/taggedTemplateWithConstructableTag01.js @@ -16,5 +16,4 @@ var CtorTag = /** @class */ (function () { } return CtorTag; }()); -CtorTag(_a || (_a = __makeTemplateObject(["Hello world!"], ["Hello world!"]))); -var _a; +CtorTag(__makeTemplateObject(["Hello world!"], ["Hello world!"])); diff --git a/tests/baselines/reference/taggedTemplateWithConstructableTag02.js b/tests/baselines/reference/taggedTemplateWithConstructableTag02.js index 72b33dcb6314b..8eae0baab204b 100644 --- a/tests/baselines/reference/taggedTemplateWithConstructableTag02.js +++ b/tests/baselines/reference/taggedTemplateWithConstructableTag02.js @@ -15,5 +15,4 @@ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cook return cooked; }; var tag; -tag(_a || (_a = __makeTemplateObject(["Hello world!"], ["Hello world!"]))); -var _a; +tag(__makeTemplateObject(["Hello world!"], ["Hello world!"])); diff --git a/tests/baselines/reference/templateStringInModuleName.js b/tests/baselines/reference/templateStringInModuleName.js index e493778d57585..36fc45b50f565 100644 --- a/tests/baselines/reference/templateStringInModuleName.js +++ b/tests/baselines/reference/templateStringInModuleName.js @@ -14,11 +14,10 @@ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cook return cooked; }; declare; -module(_a || (_a = __makeTemplateObject(["M1"], ["M1"]))); +module(__makeTemplateObject(["M1"], ["M1"])); { } declare; -module(_b || (_b = __makeTemplateObject(["M", ""], ["M", ""])), 2); +module(__makeTemplateObject(["M", ""], ["M", ""]), 2); { } -var _a, _b; diff --git a/tests/baselines/reference/templateStringInObjectLiteral.js b/tests/baselines/reference/templateStringInObjectLiteral.js index 03add5df19fd7..f2d4f6d1600f1 100644 --- a/tests/baselines/reference/templateStringInObjectLiteral.js +++ b/tests/baselines/reference/templateStringInObjectLiteral.js @@ -14,6 +14,5 @@ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cook }; var x = { a: "abc" + 123 + "def" -}(_a || (_a = __makeTemplateObject(["b"], ["b"]))); +}(__makeTemplateObject(["b"], ["b"])); 321; -var _a; diff --git a/tests/baselines/reference/templateStringInPropertyName1.js b/tests/baselines/reference/templateStringInPropertyName1.js index 4c8e0083a2798..da3ef3a9290b0 100644 --- a/tests/baselines/reference/templateStringInPropertyName1.js +++ b/tests/baselines/reference/templateStringInPropertyName1.js @@ -11,6 +11,5 @@ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cook cooked.raw = raw; return cooked; }; -var x = {}(_a || (_a = __makeTemplateObject(["a"], ["a"]))); +var x = {}(__makeTemplateObject(["a"], ["a"])); 321; -var _a; diff --git a/tests/baselines/reference/templateStringInPropertyName2.js b/tests/baselines/reference/templateStringInPropertyName2.js index 09f9bb0dd5fd9..214c18c491f8f 100644 --- a/tests/baselines/reference/templateStringInPropertyName2.js +++ b/tests/baselines/reference/templateStringInPropertyName2.js @@ -11,6 +11,5 @@ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cook cooked.raw = raw; return cooked; }; -var x = {}(_a || (_a = __makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"])), 123, 456); +var x = {}(__makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"]), 123, 456); 321; -var _a; diff --git a/tests/baselines/reference/templateStringInTaggedTemplate.js b/tests/baselines/reference/templateStringInTaggedTemplate.js index c2b8759cee640..6b2e9b1ebd596 100644 --- a/tests/baselines/reference/templateStringInTaggedTemplate.js +++ b/tests/baselines/reference/templateStringInTaggedTemplate.js @@ -9,5 +9,4 @@ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cook cooked.raw = raw; return cooked; }; -("I AM THE " + "TAG" + " " + " PORTION")(_a || (_a = __makeTemplateObject(["I ", " THE TEMPLATE PORTION"], ["I ", " THE TEMPLATE PORTION"])), "AM"); -var _a; +("I AM THE " + "TAG" + " " + " PORTION")(__makeTemplateObject(["I ", " THE TEMPLATE PORTION"], ["I ", " THE TEMPLATE PORTION"]), "AM"); diff --git a/tests/baselines/reference/templateStringsArrayTypeDefinedInES5Mode.js b/tests/baselines/reference/templateStringsArrayTypeDefinedInES5Mode.js index bc691a4cd4583..e7cb2befe447b 100644 --- a/tests/baselines/reference/templateStringsArrayTypeDefinedInES5Mode.js +++ b/tests/baselines/reference/templateStringsArrayTypeDefinedInES5Mode.js @@ -25,5 +25,4 @@ var TemplateStringsArray = /** @class */ (function () { function f(x, y, z) { } f({}, 10, 10); -f(_a || (_a = __makeTemplateObject(["abcdef", "", "ghijkl"], ["abcdef", "", "ghijkl"])), 1234, 5678); -var _a; +f(__makeTemplateObject(["abcdef", "", "ghijkl"], ["abcdef", "", "ghijkl"]), 1234, 5678); diff --git a/tests/baselines/reference/templateStringsArrayTypeNotDefinedES5Mode.js b/tests/baselines/reference/templateStringsArrayTypeNotDefinedES5Mode.js index 6da640b88f6f4..7796fec726c34 100644 --- a/tests/baselines/reference/templateStringsArrayTypeNotDefinedES5Mode.js +++ b/tests/baselines/reference/templateStringsArrayTypeNotDefinedES5Mode.js @@ -17,5 +17,4 @@ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cook function f(x, y, z) { } f({}, 10, 10); -f(_a || (_a = __makeTemplateObject(["abcdef", "", "ghijkl"], ["abcdef", "", "ghijkl"])), 1234, 5678); -var _a; +f(__makeTemplateObject(["abcdef", "", "ghijkl"], ["abcdef", "", "ghijkl"]), 1234, 5678); From 5da45fb6de74b0776c8dc19118607a213807fbc5 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Fri, 29 Sep 2017 17:11:58 -0700 Subject: [PATCH 19/26] Addressed code review feedback. --- src/compiler/checker.ts | 0 src/compiler/transformers/es2015.ts | 36 ++++++++++++--------------- src/compiler/types.ts | 0 tests/cases/compiler/importHelpers.ts | 0 4 files changed, 16 insertions(+), 20 deletions(-) mode change 100755 => 100644 src/compiler/checker.ts mode change 100755 => 100644 src/compiler/transformers/es2015.ts mode change 100755 => 100644 src/compiler/types.ts mode change 100755 => 100644 tests/cases/compiler/importHelpers.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts old mode 100755 new mode 100644 diff --git a/src/compiler/transformers/es2015.ts b/src/compiler/transformers/es2015.ts old mode 100755 new mode 100644 index 00610c6552c75..3084e7ffeb002 --- a/src/compiler/transformers/es2015.ts +++ b/src/compiler/transformers/es2015.ts @@ -280,14 +280,11 @@ namespace ts { let currentText: string; let hierarchyFacts: HierarchyFacts; let taggedTemplateStringDeclarations: VariableDeclaration[]; + function recordTaggedTemplateString(temp: Identifier) { - const decl = createVariableDeclaration(temp); - if (!taggedTemplateStringDeclarations) { - taggedTemplateStringDeclarations = [decl]; - } - else { - taggedTemplateStringDeclarations.push(decl); - } + taggedTemplateStringDeclarations = append( + taggedTemplateStringDeclarations, + createVariableDeclaration(temp)); } /** @@ -3652,11 +3649,6 @@ namespace ts { // Visit the tag expression const tag = visitNode(node.tag, visitor, isExpression); - // Allocate storage for the template site object if we're in a module. - // In the global scope, any variable we currently generate could conflict with - // variables from outside of the current compilation. - const temp = isExternalModule(currentSourceFile) ? createTempVariable(recordTaggedTemplateString) : undefined; - // Build up the template arguments and the raw and cooked strings for the template. // We start out with 'undefined' for the first argument and revisit later // to avoid walking over the template string twice and shifting all our arguments over after the fact. @@ -3680,17 +3672,21 @@ namespace ts { const helperCall = createTemplateObjectHelper(context, createArrayLiteral(cookedStrings), createArrayLiteral(rawStrings)); - // If we're in the global scope, we risk having conflicting variables. - // Since we currently lack the infrastructure to create sufficiently unique names, - // we'll fall back to creating the template object on every invocation. - templateArguments[0] = !temp ? - helperCall : - createLogicalOr( - temp, + // Create a variable to cache the template object if we're in a module. + // Do not do this in the global scope, as any variable we currently generate could conflict with + // variables from outside of the current compilation. In the future, we can revisit this behavior. + if (isExternalModule(currentSourceFile)) { + const tempVar = createTempVariable(recordTaggedTemplateString); + templateArguments[0] = createLogicalOr( + tempVar, createAssignment( - temp, + tempVar, helperCall) ); + } + else { + templateArguments[0] = helperCall; + } return createCall(tag, /*typeArguments*/ undefined, templateArguments); } diff --git a/src/compiler/types.ts b/src/compiler/types.ts old mode 100755 new mode 100644 diff --git a/tests/cases/compiler/importHelpers.ts b/tests/cases/compiler/importHelpers.ts old mode 100755 new mode 100644 From f94bdedc79a0aa386c28c8b5eac26b52b826cec1 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Fri, 29 Sep 2017 23:01:33 -0700 Subject: [PATCH 20/26] Added test for module & global examples. --- .../taggedTemplatesInModuleAndGlobal.ts | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 tests/cases/compiler/taggedTemplatesInModuleAndGlobal.ts diff --git a/tests/cases/compiler/taggedTemplatesInModuleAndGlobal.ts b/tests/cases/compiler/taggedTemplatesInModuleAndGlobal.ts new file mode 100644 index 0000000000000..b96b869704a97 --- /dev/null +++ b/tests/cases/compiler/taggedTemplatesInModuleAndGlobal.ts @@ -0,0 +1,24 @@ +// @module: commonjs +// @target: es5 + +// @filename: global.ts +namespace n { + function id(x: T): T { + return x; + } + + function templateObjectFactory() { + return id`hello world`; + } + let result = templateObjectFactory() === templateObjectFactory(); +} +// @filename: module.ts +export { } +function id(x: T): T { + return x; +} + +function templateObjectFactory() { + return id`hello world`; +} +let result = templateObjectFactory() === templateObjectFactory(); From 81b3e85592cb0191bb80af8f4a62970cc0ea2873 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Fri, 29 Sep 2017 23:05:38 -0700 Subject: [PATCH 21/26] Accepted baselines. --- .../taggedTemplatesInModuleAndGlobal.js | 61 +++++++++++++++++++ .../taggedTemplatesInModuleAndGlobal.symbols | 50 +++++++++++++++ .../taggedTemplatesInModuleAndGlobal.types | 60 ++++++++++++++++++ 3 files changed, 171 insertions(+) create mode 100644 tests/baselines/reference/taggedTemplatesInModuleAndGlobal.js create mode 100644 tests/baselines/reference/taggedTemplatesInModuleAndGlobal.symbols create mode 100644 tests/baselines/reference/taggedTemplatesInModuleAndGlobal.types diff --git a/tests/baselines/reference/taggedTemplatesInModuleAndGlobal.js b/tests/baselines/reference/taggedTemplatesInModuleAndGlobal.js new file mode 100644 index 0000000000000..6e64f8406c3fa --- /dev/null +++ b/tests/baselines/reference/taggedTemplatesInModuleAndGlobal.js @@ -0,0 +1,61 @@ +//// [tests/cases/compiler/taggedTemplatesInModuleAndGlobal.ts] //// + +//// [global.ts] +namespace n { + function id(x: T): T { + return x; + } + + function templateObjectFactory() { + return id`hello world`; + } + let result = templateObjectFactory() === templateObjectFactory(); +} +//// [module.ts] +export { } +function id(x: T): T { + return x; +} + +function templateObjectFactory() { + return id`hello world`; +} +let result = templateObjectFactory() === templateObjectFactory(); + + +//// [global.js] +var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { + if (Object.defineProperty) { + return Object.defineProperty(cooked, "raw", { value: raw }); + } + cooked.raw = raw; + return cooked; +}; +var n; +(function (n) { + function id(x) { + return x; + } + function templateObjectFactory() { + return id(__makeTemplateObject(["hello world"], ["hello world"])); + } + var result = templateObjectFactory() === templateObjectFactory(); +})(n || (n = {})); +//// [module.js] +"use strict"; +var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { + if (Object.defineProperty) { + return Object.defineProperty(cooked, "raw", { value: raw }); + } + cooked.raw = raw; + return cooked; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +function id(x) { + return x; +} +function templateObjectFactory() { + return id(_a || (_a = __makeTemplateObject(["hello world"], ["hello world"]))); +} +var result = templateObjectFactory() === templateObjectFactory(); +var _a; diff --git a/tests/baselines/reference/taggedTemplatesInModuleAndGlobal.symbols b/tests/baselines/reference/taggedTemplatesInModuleAndGlobal.symbols new file mode 100644 index 0000000000000..b33ff869734ec --- /dev/null +++ b/tests/baselines/reference/taggedTemplatesInModuleAndGlobal.symbols @@ -0,0 +1,50 @@ +=== tests/cases/compiler/global.ts === +namespace n { +>n : Symbol(n, Decl(global.ts, 0, 0)) + + function id(x: T): T { +>id : Symbol(id, Decl(global.ts, 0, 13)) +>T : Symbol(T, Decl(global.ts, 1, 16)) +>x : Symbol(x, Decl(global.ts, 1, 19)) +>T : Symbol(T, Decl(global.ts, 1, 16)) +>T : Symbol(T, Decl(global.ts, 1, 16)) + + return x; +>x : Symbol(x, Decl(global.ts, 1, 19)) + } + + function templateObjectFactory() { +>templateObjectFactory : Symbol(templateObjectFactory, Decl(global.ts, 3, 5)) + + return id`hello world`; +>id : Symbol(id, Decl(global.ts, 0, 13)) + } + let result = templateObjectFactory() === templateObjectFactory(); +>result : Symbol(result, Decl(global.ts, 8, 7)) +>templateObjectFactory : Symbol(templateObjectFactory, Decl(global.ts, 3, 5)) +>templateObjectFactory : Symbol(templateObjectFactory, Decl(global.ts, 3, 5)) +} +=== tests/cases/compiler/module.ts === +export { } +function id(x: T): T { +>id : Symbol(id, Decl(module.ts, 0, 10)) +>T : Symbol(T, Decl(module.ts, 1, 12)) +>x : Symbol(x, Decl(module.ts, 1, 15)) +>T : Symbol(T, Decl(module.ts, 1, 12)) +>T : Symbol(T, Decl(module.ts, 1, 12)) + + return x; +>x : Symbol(x, Decl(module.ts, 1, 15)) +} + +function templateObjectFactory() { +>templateObjectFactory : Symbol(templateObjectFactory, Decl(module.ts, 3, 1)) + + return id`hello world`; +>id : Symbol(id, Decl(module.ts, 0, 10)) +} +let result = templateObjectFactory() === templateObjectFactory(); +>result : Symbol(result, Decl(module.ts, 8, 3)) +>templateObjectFactory : Symbol(templateObjectFactory, Decl(module.ts, 3, 1)) +>templateObjectFactory : Symbol(templateObjectFactory, Decl(module.ts, 3, 1)) + diff --git a/tests/baselines/reference/taggedTemplatesInModuleAndGlobal.types b/tests/baselines/reference/taggedTemplatesInModuleAndGlobal.types new file mode 100644 index 0000000000000..14550acb6b07c --- /dev/null +++ b/tests/baselines/reference/taggedTemplatesInModuleAndGlobal.types @@ -0,0 +1,60 @@ +=== tests/cases/compiler/global.ts === +namespace n { +>n : typeof n + + function id(x: T): T { +>id : (x: T) => T +>T : T +>x : T +>T : T +>T : T + + return x; +>x : T + } + + function templateObjectFactory() { +>templateObjectFactory : () => TemplateStringsArray + + return id`hello world`; +>id`hello world` : TemplateStringsArray +>id : (x: T) => T +>`hello world` : "hello world" + } + let result = templateObjectFactory() === templateObjectFactory(); +>result : boolean +>templateObjectFactory() === templateObjectFactory() : boolean +>templateObjectFactory() : TemplateStringsArray +>templateObjectFactory : () => TemplateStringsArray +>templateObjectFactory() : TemplateStringsArray +>templateObjectFactory : () => TemplateStringsArray +} +=== tests/cases/compiler/module.ts === +export { } +function id(x: T): T { +>id : (x: T) => T +>T : T +>x : T +>T : T +>T : T + + return x; +>x : T +} + +function templateObjectFactory() { +>templateObjectFactory : () => TemplateStringsArray + + return id`hello world`; +>id`hello world` : TemplateStringsArray +>id : (x: T) => T +>`hello world` : "hello world" +} +let result = templateObjectFactory() === templateObjectFactory(); +>result : boolean +>templateObjectFactory() === templateObjectFactory() : boolean +>templateObjectFactory() : TemplateStringsArray +>templateObjectFactory : () => TemplateStringsArray +>templateObjectFactory() : TemplateStringsArray +>templateObjectFactory : () => TemplateStringsArray + From a23d1bf3ea14a42aa8bac5268881b57fddaf8c8f Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Sat, 30 Sep 2017 00:06:20 -0700 Subject: [PATCH 22/26] Updated helper for marginally better minification. --- src/compiler/transformers/es2015.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/compiler/transformers/es2015.ts b/src/compiler/transformers/es2015.ts index 3084e7ffeb002..bfbff5dc11463 100644 --- a/src/compiler/transformers/es2015.ts +++ b/src/compiler/transformers/es2015.ts @@ -4093,9 +4093,11 @@ namespace ts { text: ` var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { - return Object.defineProperty(cooked, "raw", { value: raw }); + Object.defineProperty(cooked, "raw", { value: raw }); + } + else { + cooked.raw = raw; } - cooked.raw = raw; return cooked; };` }; From e2c6aac414fba54380c9f43ce3cdf56238417df2 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Sat, 30 Sep 2017 00:11:23 -0700 Subject: [PATCH 23/26] Accepted baselines. --- tests/baselines/reference/asOperator3.js | 6 ++++-- tests/baselines/reference/asOperatorASI.js | 6 ++++-- tests/baselines/reference/importHelpers.js | 6 ++++-- .../taggedTemplateStringsHexadecimalEscapes.js | 6 ++++-- ...eStringsPlainCharactersThatArePartsOfEscapes01.js | 6 ++++-- .../taggedTemplateStringsTypeArgumentInference.js | 6 ++++-- ...taggedTemplateStringsWithIncompatibleTypedTags.js | 6 ++++-- ...emplateStringsWithManyCallAndMemberExpressions.js | 6 ++++-- .../taggedTemplateStringsWithMultilineTemplate.js | 6 ++++-- .../taggedTemplateStringsWithOverloadResolution1.js | 6 ++++-- .../taggedTemplateStringsWithOverloadResolution2.js | 6 ++++-- .../taggedTemplateStringsWithOverloadResolution3.js | 6 ++++-- .../taggedTemplateStringsWithTagNamedDeclare.js | 6 ++++-- .../taggedTemplateStringsWithTagsTypedAsAny.js | 6 ++++-- ...rInFunctionExpressionsInSubstitutionExpression.js | 6 ++++-- .../reference/taggedTemplateStringsWithTypedTags.js | 6 ++++-- .../taggedTemplateStringsWithUnicodeEscapes.js | 6 ++++-- .../taggedTemplateStringsWithWhitespaceEscapes.js | 6 ++++-- .../reference/taggedTemplateUntypedTagCall01.js | 6 ++++-- .../taggedTemplateWithConstructableTag01.js | 6 ++++-- .../taggedTemplateWithConstructableTag02.js | 6 ++++-- .../reference/taggedTemplatesInModuleAndGlobal.js | 12 ++++++++---- .../reference/templateStringInModuleName.js | 6 ++++-- .../reference/templateStringInObjectLiteral.js | 6 ++++-- .../reference/templateStringInPropertyName1.js | 6 ++++-- .../reference/templateStringInPropertyName2.js | 6 ++++-- .../reference/templateStringInTaggedTemplate.js | 6 ++++-- .../templateStringsArrayTypeDefinedInES5Mode.js | 6 ++++-- .../templateStringsArrayTypeNotDefinedES5Mode.js | 6 ++++-- 29 files changed, 120 insertions(+), 60 deletions(-) diff --git a/tests/baselines/reference/asOperator3.js b/tests/baselines/reference/asOperator3.js index a2cbe53e31cbc..8d04cde891649 100644 --- a/tests/baselines/reference/asOperator3.js +++ b/tests/baselines/reference/asOperator3.js @@ -13,9 +13,11 @@ var h = tag `Hello` as string; //// [asOperator3.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { - return Object.defineProperty(cooked, "raw", { value: raw }); + Object.defineProperty(cooked, "raw", { value: raw }); + } + else { + cooked.raw = raw; } - cooked.raw = raw; return cooked; }; var a = "" + (123 + 456); diff --git a/tests/baselines/reference/asOperatorASI.js b/tests/baselines/reference/asOperatorASI.js index 273b710dfa4a2..1b16360e7024c 100644 --- a/tests/baselines/reference/asOperatorASI.js +++ b/tests/baselines/reference/asOperatorASI.js @@ -14,9 +14,11 @@ as(Foo); // should emit //// [asOperatorASI.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { - return Object.defineProperty(cooked, "raw", { value: raw }); + Object.defineProperty(cooked, "raw", { value: raw }); + } + else { + cooked.raw = raw; } - cooked.raw = raw; return cooked; }; var Foo = /** @class */ (function () { diff --git a/tests/baselines/reference/importHelpers.js b/tests/baselines/reference/importHelpers.js index d8b502491b806..fe08c55eecd99 100644 --- a/tests/baselines/reference/importHelpers.js +++ b/tests/baselines/reference/importHelpers.js @@ -98,9 +98,11 @@ var __extends = (this && this.__extends) || (function () { })(); var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { - return Object.defineProperty(cooked, "raw", { value: raw }); + Object.defineProperty(cooked, "raw", { value: raw }); + } + else { + cooked.raw = raw; } - cooked.raw = raw; return cooked; }; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { diff --git a/tests/baselines/reference/taggedTemplateStringsHexadecimalEscapes.js b/tests/baselines/reference/taggedTemplateStringsHexadecimalEscapes.js index 5e9e2ef8bf1e6..f5366f724b3f3 100644 --- a/tests/baselines/reference/taggedTemplateStringsHexadecimalEscapes.js +++ b/tests/baselines/reference/taggedTemplateStringsHexadecimalEscapes.js @@ -7,9 +7,11 @@ f `\x0D${ "Interrupted CRLF" }\x0A`; //// [taggedTemplateStringsHexadecimalEscapes.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { - return Object.defineProperty(cooked, "raw", { value: raw }); + Object.defineProperty(cooked, "raw", { value: raw }); + } + else { + cooked.raw = raw; } - cooked.raw = raw; return cooked; }; function f() { diff --git a/tests/baselines/reference/taggedTemplateStringsPlainCharactersThatArePartsOfEscapes01.js b/tests/baselines/reference/taggedTemplateStringsPlainCharactersThatArePartsOfEscapes01.js index afa1a662ef9fc..67806dbeeeff3 100644 --- a/tests/baselines/reference/taggedTemplateStringsPlainCharactersThatArePartsOfEscapes01.js +++ b/tests/baselines/reference/taggedTemplateStringsPlainCharactersThatArePartsOfEscapes01.js @@ -8,9 +8,11 @@ f `0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2028 2029 0085 t v f b r //// [taggedTemplateStringsPlainCharactersThatArePartsOfEscapes01.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { - return Object.defineProperty(cooked, "raw", { value: raw }); + Object.defineProperty(cooked, "raw", { value: raw }); + } + else { + cooked.raw = raw; } - cooked.raw = raw; return cooked; }; function f() { diff --git a/tests/baselines/reference/taggedTemplateStringsTypeArgumentInference.js b/tests/baselines/reference/taggedTemplateStringsTypeArgumentInference.js index 9017ceb2571e2..e68187952ebdc 100644 --- a/tests/baselines/reference/taggedTemplateStringsTypeArgumentInference.js +++ b/tests/baselines/reference/taggedTemplateStringsTypeArgumentInference.js @@ -94,9 +94,11 @@ var arr: any[]; //// [taggedTemplateStringsTypeArgumentInference.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { - return Object.defineProperty(cooked, "raw", { value: raw }); + Object.defineProperty(cooked, "raw", { value: raw }); + } + else { + cooked.raw = raw; } - cooked.raw = raw; return cooked; }; // Generic tag with one parameter diff --git a/tests/baselines/reference/taggedTemplateStringsWithIncompatibleTypedTags.js b/tests/baselines/reference/taggedTemplateStringsWithIncompatibleTypedTags.js index 81b2541e1e774..922bd1041f6fc 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithIncompatibleTypedTags.js +++ b/tests/baselines/reference/taggedTemplateStringsWithIncompatibleTypedTags.js @@ -36,9 +36,11 @@ f.thisIsNotATag(`abc${1}def${2}ghi`); //// [taggedTemplateStringsWithIncompatibleTypedTags.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { - return Object.defineProperty(cooked, "raw", { value: raw }); + Object.defineProperty(cooked, "raw", { value: raw }); + } + else { + cooked.raw = raw; } - cooked.raw = raw; return cooked; }; var f; diff --git a/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressions.js b/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressions.js index 4174cf665c0ae..f0e3770b74ef0 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressions.js +++ b/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressions.js @@ -18,9 +18,11 @@ var x = new new new f `abc${ 0 }def`.member("hello")(42) === true; //// [taggedTemplateStringsWithManyCallAndMemberExpressions.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { - return Object.defineProperty(cooked, "raw", { value: raw }); + Object.defineProperty(cooked, "raw", { value: raw }); + } + else { + cooked.raw = raw; } - cooked.raw = raw; return cooked; }; var f; diff --git a/tests/baselines/reference/taggedTemplateStringsWithMultilineTemplate.js b/tests/baselines/reference/taggedTemplateStringsWithMultilineTemplate.js index eb4a64db61433..2fd124355c2f8 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithMultilineTemplate.js +++ b/tests/baselines/reference/taggedTemplateStringsWithMultilineTemplate.js @@ -10,9 +10,11 @@ f ` //// [taggedTemplateStringsWithMultilineTemplate.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { - return Object.defineProperty(cooked, "raw", { value: raw }); + Object.defineProperty(cooked, "raw", { value: raw }); + } + else { + cooked.raw = raw; } - cooked.raw = raw; return cooked; }; function f() { diff --git a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution1.js b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution1.js index 36302611e265b..7115ee54ec9c8 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution1.js +++ b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution1.js @@ -25,9 +25,11 @@ var z = foo `${1}${2}${3}`; // any (with error) //// [taggedTemplateStringsWithOverloadResolution1.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { - return Object.defineProperty(cooked, "raw", { value: raw }); + Object.defineProperty(cooked, "raw", { value: raw }); + } + else { + cooked.raw = raw; } - cooked.raw = raw; return cooked; }; function foo() { diff --git a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2.js b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2.js index 23f0343667f88..2b1fe0bbac3a9 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2.js +++ b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2.js @@ -20,9 +20,11 @@ var d = foo2([], 1); //// [taggedTemplateStringsWithOverloadResolution2.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { - return Object.defineProperty(cooked, "raw", { value: raw }); + Object.defineProperty(cooked, "raw", { value: raw }); + } + else { + cooked.raw = raw; } - cooked.raw = raw; return cooked; }; function foo1() { diff --git a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution3.js b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution3.js index 8eb9c93957970..707e20dccd405 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution3.js +++ b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution3.js @@ -75,9 +75,11 @@ fn5 `${ (n) => n.substr(0) }`; //// [taggedTemplateStringsWithOverloadResolution3.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { - return Object.defineProperty(cooked, "raw", { value: raw }); + Object.defineProperty(cooked, "raw", { value: raw }); + } + else { + cooked.raw = raw; } - cooked.raw = raw; return cooked; }; function fn1() { return null; } diff --git a/tests/baselines/reference/taggedTemplateStringsWithTagNamedDeclare.js b/tests/baselines/reference/taggedTemplateStringsWithTagNamedDeclare.js index c6c8c5f0fb6cb..eeb714ad8216f 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithTagNamedDeclare.js +++ b/tests/baselines/reference/taggedTemplateStringsWithTagNamedDeclare.js @@ -7,9 +7,11 @@ declare `Hello ${0} world!`; //// [taggedTemplateStringsWithTagNamedDeclare.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { - return Object.defineProperty(cooked, "raw", { value: raw }); + Object.defineProperty(cooked, "raw", { value: raw }); + } + else { + cooked.raw = raw; } - cooked.raw = raw; return cooked; }; function declare(x) { diff --git a/tests/baselines/reference/taggedTemplateStringsWithTagsTypedAsAny.js b/tests/baselines/reference/taggedTemplateStringsWithTagsTypedAsAny.js index fbe11b7b81462..be4b61e1f6058 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithTagsTypedAsAny.js +++ b/tests/baselines/reference/taggedTemplateStringsWithTagsTypedAsAny.js @@ -28,9 +28,11 @@ f.thisIsNotATag(`abc${1}def${2}ghi`); //// [taggedTemplateStringsWithTagsTypedAsAny.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { - return Object.defineProperty(cooked, "raw", { value: raw }); + Object.defineProperty(cooked, "raw", { value: raw }); + } + else { + cooked.raw = raw; } - cooked.raw = raw; return cooked; }; var f; diff --git a/tests/baselines/reference/taggedTemplateStringsWithTypeErrorInFunctionExpressionsInSubstitutionExpression.js b/tests/baselines/reference/taggedTemplateStringsWithTypeErrorInFunctionExpressionsInSubstitutionExpression.js index 2aa770b504e28..9ecda1f402964 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithTypeErrorInFunctionExpressionsInSubstitutionExpression.js +++ b/tests/baselines/reference/taggedTemplateStringsWithTypeErrorInFunctionExpressionsInSubstitutionExpression.js @@ -7,9 +7,11 @@ foo `${function (x: number) { x = "bad"; } }`; //// [taggedTemplateStringsWithTypeErrorInFunctionExpressionsInSubstitutionExpression.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { - return Object.defineProperty(cooked, "raw", { value: raw }); + Object.defineProperty(cooked, "raw", { value: raw }); + } + else { + cooked.raw = raw; } - cooked.raw = raw; return cooked; }; function foo() { diff --git a/tests/baselines/reference/taggedTemplateStringsWithTypedTags.js b/tests/baselines/reference/taggedTemplateStringsWithTypedTags.js index 2689038808d26..88affae33f9b8 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithTypedTags.js +++ b/tests/baselines/reference/taggedTemplateStringsWithTypedTags.js @@ -34,9 +34,11 @@ f.thisIsNotATag(`abc${1}def${2}ghi`); //// [taggedTemplateStringsWithTypedTags.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { - return Object.defineProperty(cooked, "raw", { value: raw }); + Object.defineProperty(cooked, "raw", { value: raw }); + } + else { + cooked.raw = raw; } - cooked.raw = raw; return cooked; }; var f; diff --git a/tests/baselines/reference/taggedTemplateStringsWithUnicodeEscapes.js b/tests/baselines/reference/taggedTemplateStringsWithUnicodeEscapes.js index 9f0b0313af2d3..a72eaa1f89ea1 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithUnicodeEscapes.js +++ b/tests/baselines/reference/taggedTemplateStringsWithUnicodeEscapes.js @@ -7,9 +7,11 @@ f `'\u{1f4a9}'${ " should be converted to " }'\uD83D\uDCA9'`; //// [taggedTemplateStringsWithUnicodeEscapes.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { - return Object.defineProperty(cooked, "raw", { value: raw }); + Object.defineProperty(cooked, "raw", { value: raw }); + } + else { + cooked.raw = raw; } - cooked.raw = raw; return cooked; }; function f() { diff --git a/tests/baselines/reference/taggedTemplateStringsWithWhitespaceEscapes.js b/tests/baselines/reference/taggedTemplateStringsWithWhitespaceEscapes.js index ae0e40b112488..e8b9c3636cf64 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithWhitespaceEscapes.js +++ b/tests/baselines/reference/taggedTemplateStringsWithWhitespaceEscapes.js @@ -7,9 +7,11 @@ f `\t\n\v\f\r\\`; //// [taggedTemplateStringsWithWhitespaceEscapes.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { - return Object.defineProperty(cooked, "raw", { value: raw }); + Object.defineProperty(cooked, "raw", { value: raw }); + } + else { + cooked.raw = raw; } - cooked.raw = raw; return cooked; }; function f() { diff --git a/tests/baselines/reference/taggedTemplateUntypedTagCall01.js b/tests/baselines/reference/taggedTemplateUntypedTagCall01.js index a106276904daf..9421ad4cb57ce 100644 --- a/tests/baselines/reference/taggedTemplateUntypedTagCall01.js +++ b/tests/baselines/reference/taggedTemplateUntypedTagCall01.js @@ -5,9 +5,11 @@ tag `Hello world!`; //// [taggedTemplateUntypedTagCall01.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { - return Object.defineProperty(cooked, "raw", { value: raw }); + Object.defineProperty(cooked, "raw", { value: raw }); + } + else { + cooked.raw = raw; } - cooked.raw = raw; return cooked; }; var tag; diff --git a/tests/baselines/reference/taggedTemplateWithConstructableTag01.js b/tests/baselines/reference/taggedTemplateWithConstructableTag01.js index 1e3712f515722..384af6f8a3b1f 100644 --- a/tests/baselines/reference/taggedTemplateWithConstructableTag01.js +++ b/tests/baselines/reference/taggedTemplateWithConstructableTag01.js @@ -6,9 +6,11 @@ CtorTag `Hello world!`; //// [taggedTemplateWithConstructableTag01.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { - return Object.defineProperty(cooked, "raw", { value: raw }); + Object.defineProperty(cooked, "raw", { value: raw }); + } + else { + cooked.raw = raw; } - cooked.raw = raw; return cooked; }; var CtorTag = /** @class */ (function () { diff --git a/tests/baselines/reference/taggedTemplateWithConstructableTag02.js b/tests/baselines/reference/taggedTemplateWithConstructableTag02.js index 8eae0baab204b..f823ce8621e95 100644 --- a/tests/baselines/reference/taggedTemplateWithConstructableTag02.js +++ b/tests/baselines/reference/taggedTemplateWithConstructableTag02.js @@ -9,9 +9,11 @@ tag `Hello world!`; //// [taggedTemplateWithConstructableTag02.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { - return Object.defineProperty(cooked, "raw", { value: raw }); + Object.defineProperty(cooked, "raw", { value: raw }); + } + else { + cooked.raw = raw; } - cooked.raw = raw; return cooked; }; var tag; diff --git a/tests/baselines/reference/taggedTemplatesInModuleAndGlobal.js b/tests/baselines/reference/taggedTemplatesInModuleAndGlobal.js index 6e64f8406c3fa..f6d3065d847de 100644 --- a/tests/baselines/reference/taggedTemplatesInModuleAndGlobal.js +++ b/tests/baselines/reference/taggedTemplatesInModuleAndGlobal.js @@ -26,9 +26,11 @@ let result = templateObjectFactory() === templateObjectFactory(); //// [global.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { - return Object.defineProperty(cooked, "raw", { value: raw }); + Object.defineProperty(cooked, "raw", { value: raw }); + } + else { + cooked.raw = raw; } - cooked.raw = raw; return cooked; }; var n; @@ -45,9 +47,11 @@ var n; "use strict"; var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { - return Object.defineProperty(cooked, "raw", { value: raw }); + Object.defineProperty(cooked, "raw", { value: raw }); + } + else { + cooked.raw = raw; } - cooked.raw = raw; return cooked; }; Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/tests/baselines/reference/templateStringInModuleName.js b/tests/baselines/reference/templateStringInModuleName.js index 36fc45b50f565..e97f39b450d33 100644 --- a/tests/baselines/reference/templateStringInModuleName.js +++ b/tests/baselines/reference/templateStringInModuleName.js @@ -8,9 +8,11 @@ declare module `M${2}` { //// [templateStringInModuleName.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { - return Object.defineProperty(cooked, "raw", { value: raw }); + Object.defineProperty(cooked, "raw", { value: raw }); + } + else { + cooked.raw = raw; } - cooked.raw = raw; return cooked; }; declare; diff --git a/tests/baselines/reference/templateStringInObjectLiteral.js b/tests/baselines/reference/templateStringInObjectLiteral.js index f2d4f6d1600f1..cb8327c143465 100644 --- a/tests/baselines/reference/templateStringInObjectLiteral.js +++ b/tests/baselines/reference/templateStringInObjectLiteral.js @@ -7,9 +7,11 @@ var x = { //// [templateStringInObjectLiteral.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { - return Object.defineProperty(cooked, "raw", { value: raw }); + Object.defineProperty(cooked, "raw", { value: raw }); + } + else { + cooked.raw = raw; } - cooked.raw = raw; return cooked; }; var x = { diff --git a/tests/baselines/reference/templateStringInPropertyName1.js b/tests/baselines/reference/templateStringInPropertyName1.js index da3ef3a9290b0..42f03d1dcb64e 100644 --- a/tests/baselines/reference/templateStringInPropertyName1.js +++ b/tests/baselines/reference/templateStringInPropertyName1.js @@ -6,9 +6,11 @@ var x = { //// [templateStringInPropertyName1.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { - return Object.defineProperty(cooked, "raw", { value: raw }); + Object.defineProperty(cooked, "raw", { value: raw }); + } + else { + cooked.raw = raw; } - cooked.raw = raw; return cooked; }; var x = {}(__makeTemplateObject(["a"], ["a"])); diff --git a/tests/baselines/reference/templateStringInPropertyName2.js b/tests/baselines/reference/templateStringInPropertyName2.js index 214c18c491f8f..e01867a0e2430 100644 --- a/tests/baselines/reference/templateStringInPropertyName2.js +++ b/tests/baselines/reference/templateStringInPropertyName2.js @@ -6,9 +6,11 @@ var x = { //// [templateStringInPropertyName2.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { - return Object.defineProperty(cooked, "raw", { value: raw }); + Object.defineProperty(cooked, "raw", { value: raw }); + } + else { + cooked.raw = raw; } - cooked.raw = raw; return cooked; }; var x = {}(__makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"]), 123, 456); diff --git a/tests/baselines/reference/templateStringInTaggedTemplate.js b/tests/baselines/reference/templateStringInTaggedTemplate.js index 6b2e9b1ebd596..1b959add84fc4 100644 --- a/tests/baselines/reference/templateStringInTaggedTemplate.js +++ b/tests/baselines/reference/templateStringInTaggedTemplate.js @@ -4,9 +4,11 @@ //// [templateStringInTaggedTemplate.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { - return Object.defineProperty(cooked, "raw", { value: raw }); + Object.defineProperty(cooked, "raw", { value: raw }); + } + else { + cooked.raw = raw; } - cooked.raw = raw; return cooked; }; ("I AM THE " + "TAG" + " " + " PORTION")(__makeTemplateObject(["I ", " THE TEMPLATE PORTION"], ["I ", " THE TEMPLATE PORTION"]), "AM"); diff --git a/tests/baselines/reference/templateStringsArrayTypeDefinedInES5Mode.js b/tests/baselines/reference/templateStringsArrayTypeDefinedInES5Mode.js index e7cb2befe447b..e6e67ee26168d 100644 --- a/tests/baselines/reference/templateStringsArrayTypeDefinedInES5Mode.js +++ b/tests/baselines/reference/templateStringsArrayTypeDefinedInES5Mode.js @@ -12,9 +12,11 @@ f `abcdef${ 1234 }${ 5678 }ghijkl`; //// [templateStringsArrayTypeDefinedInES5Mode.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { - return Object.defineProperty(cooked, "raw", { value: raw }); + Object.defineProperty(cooked, "raw", { value: raw }); + } + else { + cooked.raw = raw; } - cooked.raw = raw; return cooked; }; var TemplateStringsArray = /** @class */ (function () { diff --git a/tests/baselines/reference/templateStringsArrayTypeNotDefinedES5Mode.js b/tests/baselines/reference/templateStringsArrayTypeNotDefinedES5Mode.js index 7796fec726c34..8acf36483351a 100644 --- a/tests/baselines/reference/templateStringsArrayTypeNotDefinedES5Mode.js +++ b/tests/baselines/reference/templateStringsArrayTypeNotDefinedES5Mode.js @@ -9,9 +9,11 @@ f `abcdef${ 1234 }${ 5678 }ghijkl`; //// [templateStringsArrayTypeNotDefinedES5Mode.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { - return Object.defineProperty(cooked, "raw", { value: raw }); + Object.defineProperty(cooked, "raw", { value: raw }); + } + else { + cooked.raw = raw; } - cooked.raw = raw; return cooked; }; function f(x, y, z) { From b80b2eeaa3500fc63ce478e68a79e5051a6c3df2 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Mon, 2 Oct 2017 13:23:57 -0700 Subject: [PATCH 24/26] Move first/last shortcuts closer to the end of the helper flags. --- src/compiler/types.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/compiler/types.ts b/src/compiler/types.ts index 2e7cb609b5355..de463fee97d2f 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -4288,7 +4288,8 @@ namespace ts { AsyncValues = 1 << 14, // __asyncValues (used by ES2017 for..await..of transformation) ExportStar = 1 << 15, // __exportStar (used by CommonJS/AMD/UMD module transformation) MakeTemplateObject = 1 << 16, // __makeTemplateObject (used for constructing template string array objects) - " LastPlusOne", + FirstEmitHelper = Extends, + LastEmitHelper = MakeTemplateObject, // Helpers included by ES2015 for..of ForOfIncludes = Values, @@ -4305,8 +4306,6 @@ namespace ts { // Helpers included by ES2015 spread SpreadIncludes = Read | Spread, - FirstEmitHelper = Extends, - LastEmitHelper = ExternalEmitHelpers[" LastPlusOne"] - 1 } export const enum EmitHint { From babe3cb9311ee423f4b8421b06f30380ca22c922 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Tue, 3 Oct 2017 00:35:29 -0700 Subject: [PATCH 25/26] Flatten the '__makeTemplateObject' helper to use less vertical screen real estate. --- src/compiler/transformers/es2015.ts | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/compiler/transformers/es2015.ts b/src/compiler/transformers/es2015.ts index bfbff5dc11463..f6669e7c05ebe 100644 --- a/src/compiler/transformers/es2015.ts +++ b/src/compiler/transformers/es2015.ts @@ -4092,12 +4092,7 @@ namespace ts { priority: 0, text: ` var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { - if (Object.defineProperty) { - Object.defineProperty(cooked, "raw", { value: raw }); - } - else { - cooked.raw = raw; - } + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; };` }; From 8fd638c7a8449e0d15f0f32e2557f08f26c95c9e Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Tue, 3 Oct 2017 00:37:28 -0700 Subject: [PATCH 26/26] Accepted baselines. --- tests/baselines/reference/asOperator3.js | 7 +------ tests/baselines/reference/asOperatorASI.js | 7 +------ tests/baselines/reference/importHelpers.js | 7 +------ .../taggedTemplateStringsHexadecimalEscapes.js | 7 +------ ...tringsPlainCharactersThatArePartsOfEscapes01.js | 7 +------ .../taggedTemplateStringsTypeArgumentInference.js | 7 +------ ...ggedTemplateStringsWithIncompatibleTypedTags.js | 7 +------ ...plateStringsWithManyCallAndMemberExpressions.js | 7 +------ .../taggedTemplateStringsWithMultilineTemplate.js | 7 +------ ...taggedTemplateStringsWithOverloadResolution1.js | 7 +------ ...taggedTemplateStringsWithOverloadResolution2.js | 7 +------ ...taggedTemplateStringsWithOverloadResolution3.js | 7 +------ .../taggedTemplateStringsWithTagNamedDeclare.js | 7 +------ .../taggedTemplateStringsWithTagsTypedAsAny.js | 7 +------ ...nFunctionExpressionsInSubstitutionExpression.js | 7 +------ .../taggedTemplateStringsWithTypedTags.js | 7 +------ .../taggedTemplateStringsWithUnicodeEscapes.js | 7 +------ .../taggedTemplateStringsWithWhitespaceEscapes.js | 7 +------ .../reference/taggedTemplateUntypedTagCall01.js | 7 +------ .../taggedTemplateWithConstructableTag01.js | 7 +------ .../taggedTemplateWithConstructableTag02.js | 7 +------ .../reference/taggedTemplatesInModuleAndGlobal.js | 14 ++------------ .../reference/templateStringInModuleName.js | 7 +------ .../reference/templateStringInObjectLiteral.js | 7 +------ .../reference/templateStringInPropertyName1.js | 7 +------ .../reference/templateStringInPropertyName2.js | 7 +------ .../reference/templateStringInTaggedTemplate.js | 7 +------ .../templateStringsArrayTypeDefinedInES5Mode.js | 7 +------ .../templateStringsArrayTypeNotDefinedES5Mode.js | 7 +------ 29 files changed, 30 insertions(+), 180 deletions(-) diff --git a/tests/baselines/reference/asOperator3.js b/tests/baselines/reference/asOperator3.js index 8d04cde891649..7cbb277bb0339 100644 --- a/tests/baselines/reference/asOperator3.js +++ b/tests/baselines/reference/asOperator3.js @@ -12,12 +12,7 @@ var h = tag `Hello` as string; //// [asOperator3.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { - if (Object.defineProperty) { - Object.defineProperty(cooked, "raw", { value: raw }); - } - else { - cooked.raw = raw; - } + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; var a = "" + (123 + 456); diff --git a/tests/baselines/reference/asOperatorASI.js b/tests/baselines/reference/asOperatorASI.js index 1b16360e7024c..4a78b022c4fe7 100644 --- a/tests/baselines/reference/asOperatorASI.js +++ b/tests/baselines/reference/asOperatorASI.js @@ -13,12 +13,7 @@ as(Foo); // should emit //// [asOperatorASI.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { - if (Object.defineProperty) { - Object.defineProperty(cooked, "raw", { value: raw }); - } - else { - cooked.raw = raw; - } + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; var Foo = /** @class */ (function () { diff --git a/tests/baselines/reference/importHelpers.js b/tests/baselines/reference/importHelpers.js index fe08c55eecd99..7bdd660a9ae7d 100644 --- a/tests/baselines/reference/importHelpers.js +++ b/tests/baselines/reference/importHelpers.js @@ -97,12 +97,7 @@ var __extends = (this && this.__extends) || (function () { }; })(); var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { - if (Object.defineProperty) { - Object.defineProperty(cooked, "raw", { value: raw }); - } - else { - cooked.raw = raw; - } + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { diff --git a/tests/baselines/reference/taggedTemplateStringsHexadecimalEscapes.js b/tests/baselines/reference/taggedTemplateStringsHexadecimalEscapes.js index f5366f724b3f3..f771b886ea055 100644 --- a/tests/baselines/reference/taggedTemplateStringsHexadecimalEscapes.js +++ b/tests/baselines/reference/taggedTemplateStringsHexadecimalEscapes.js @@ -6,12 +6,7 @@ f `\x0D${ "Interrupted CRLF" }\x0A`; //// [taggedTemplateStringsHexadecimalEscapes.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { - if (Object.defineProperty) { - Object.defineProperty(cooked, "raw", { value: raw }); - } - else { - cooked.raw = raw; - } + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; function f() { diff --git a/tests/baselines/reference/taggedTemplateStringsPlainCharactersThatArePartsOfEscapes01.js b/tests/baselines/reference/taggedTemplateStringsPlainCharactersThatArePartsOfEscapes01.js index 67806dbeeeff3..a355420452830 100644 --- a/tests/baselines/reference/taggedTemplateStringsPlainCharactersThatArePartsOfEscapes01.js +++ b/tests/baselines/reference/taggedTemplateStringsPlainCharactersThatArePartsOfEscapes01.js @@ -7,12 +7,7 @@ f `0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2028 2029 0085 t v f b r //// [taggedTemplateStringsPlainCharactersThatArePartsOfEscapes01.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { - if (Object.defineProperty) { - Object.defineProperty(cooked, "raw", { value: raw }); - } - else { - cooked.raw = raw; - } + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; function f() { diff --git a/tests/baselines/reference/taggedTemplateStringsTypeArgumentInference.js b/tests/baselines/reference/taggedTemplateStringsTypeArgumentInference.js index e68187952ebdc..7e50da9c06aaf 100644 --- a/tests/baselines/reference/taggedTemplateStringsTypeArgumentInference.js +++ b/tests/baselines/reference/taggedTemplateStringsTypeArgumentInference.js @@ -93,12 +93,7 @@ var arr: any[]; //// [taggedTemplateStringsTypeArgumentInference.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { - if (Object.defineProperty) { - Object.defineProperty(cooked, "raw", { value: raw }); - } - else { - cooked.raw = raw; - } + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; // Generic tag with one parameter diff --git a/tests/baselines/reference/taggedTemplateStringsWithIncompatibleTypedTags.js b/tests/baselines/reference/taggedTemplateStringsWithIncompatibleTypedTags.js index 922bd1041f6fc..4e0c70e837a83 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithIncompatibleTypedTags.js +++ b/tests/baselines/reference/taggedTemplateStringsWithIncompatibleTypedTags.js @@ -35,12 +35,7 @@ f.thisIsNotATag(`abc${1}def${2}ghi`); //// [taggedTemplateStringsWithIncompatibleTypedTags.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { - if (Object.defineProperty) { - Object.defineProperty(cooked, "raw", { value: raw }); - } - else { - cooked.raw = raw; - } + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; var f; diff --git a/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressions.js b/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressions.js index f0e3770b74ef0..01db59ee17c4b 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressions.js +++ b/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressions.js @@ -17,12 +17,7 @@ var x = new new new f `abc${ 0 }def`.member("hello")(42) === true; //// [taggedTemplateStringsWithManyCallAndMemberExpressions.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { - if (Object.defineProperty) { - Object.defineProperty(cooked, "raw", { value: raw }); - } - else { - cooked.raw = raw; - } + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; var f; diff --git a/tests/baselines/reference/taggedTemplateStringsWithMultilineTemplate.js b/tests/baselines/reference/taggedTemplateStringsWithMultilineTemplate.js index 2fd124355c2f8..d3e9e3d2c43ff 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithMultilineTemplate.js +++ b/tests/baselines/reference/taggedTemplateStringsWithMultilineTemplate.js @@ -9,12 +9,7 @@ f ` //// [taggedTemplateStringsWithMultilineTemplate.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { - if (Object.defineProperty) { - Object.defineProperty(cooked, "raw", { value: raw }); - } - else { - cooked.raw = raw; - } + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; function f() { diff --git a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution1.js b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution1.js index 7115ee54ec9c8..7299ea3cbbde2 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution1.js +++ b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution1.js @@ -24,12 +24,7 @@ var z = foo `${1}${2}${3}`; // any (with error) //// [taggedTemplateStringsWithOverloadResolution1.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { - if (Object.defineProperty) { - Object.defineProperty(cooked, "raw", { value: raw }); - } - else { - cooked.raw = raw; - } + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; function foo() { diff --git a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2.js b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2.js index 2b1fe0bbac3a9..e393484eff6ac 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2.js +++ b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2.js @@ -19,12 +19,7 @@ var d = foo2([], 1); //// [taggedTemplateStringsWithOverloadResolution2.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { - if (Object.defineProperty) { - Object.defineProperty(cooked, "raw", { value: raw }); - } - else { - cooked.raw = raw; - } + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; function foo1() { diff --git a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution3.js b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution3.js index 707e20dccd405..9ff4434734bb5 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution3.js +++ b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution3.js @@ -74,12 +74,7 @@ fn5 `${ (n) => n.substr(0) }`; //// [taggedTemplateStringsWithOverloadResolution3.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { - if (Object.defineProperty) { - Object.defineProperty(cooked, "raw", { value: raw }); - } - else { - cooked.raw = raw; - } + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; function fn1() { return null; } diff --git a/tests/baselines/reference/taggedTemplateStringsWithTagNamedDeclare.js b/tests/baselines/reference/taggedTemplateStringsWithTagNamedDeclare.js index eeb714ad8216f..d1801bdeb6e67 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithTagNamedDeclare.js +++ b/tests/baselines/reference/taggedTemplateStringsWithTagNamedDeclare.js @@ -6,12 +6,7 @@ declare `Hello ${0} world!`; //// [taggedTemplateStringsWithTagNamedDeclare.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { - if (Object.defineProperty) { - Object.defineProperty(cooked, "raw", { value: raw }); - } - else { - cooked.raw = raw; - } + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; function declare(x) { diff --git a/tests/baselines/reference/taggedTemplateStringsWithTagsTypedAsAny.js b/tests/baselines/reference/taggedTemplateStringsWithTagsTypedAsAny.js index be4b61e1f6058..af9fd2c9d443e 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithTagsTypedAsAny.js +++ b/tests/baselines/reference/taggedTemplateStringsWithTagsTypedAsAny.js @@ -27,12 +27,7 @@ f.thisIsNotATag(`abc${1}def${2}ghi`); //// [taggedTemplateStringsWithTagsTypedAsAny.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { - if (Object.defineProperty) { - Object.defineProperty(cooked, "raw", { value: raw }); - } - else { - cooked.raw = raw; - } + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; var f; diff --git a/tests/baselines/reference/taggedTemplateStringsWithTypeErrorInFunctionExpressionsInSubstitutionExpression.js b/tests/baselines/reference/taggedTemplateStringsWithTypeErrorInFunctionExpressionsInSubstitutionExpression.js index 9ecda1f402964..c93dce9340f71 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithTypeErrorInFunctionExpressionsInSubstitutionExpression.js +++ b/tests/baselines/reference/taggedTemplateStringsWithTypeErrorInFunctionExpressionsInSubstitutionExpression.js @@ -6,12 +6,7 @@ foo `${function (x: number) { x = "bad"; } }`; //// [taggedTemplateStringsWithTypeErrorInFunctionExpressionsInSubstitutionExpression.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { - if (Object.defineProperty) { - Object.defineProperty(cooked, "raw", { value: raw }); - } - else { - cooked.raw = raw; - } + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; function foo() { diff --git a/tests/baselines/reference/taggedTemplateStringsWithTypedTags.js b/tests/baselines/reference/taggedTemplateStringsWithTypedTags.js index 88affae33f9b8..c6509f1ca8676 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithTypedTags.js +++ b/tests/baselines/reference/taggedTemplateStringsWithTypedTags.js @@ -33,12 +33,7 @@ f.thisIsNotATag(`abc${1}def${2}ghi`); //// [taggedTemplateStringsWithTypedTags.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { - if (Object.defineProperty) { - Object.defineProperty(cooked, "raw", { value: raw }); - } - else { - cooked.raw = raw; - } + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; var f; diff --git a/tests/baselines/reference/taggedTemplateStringsWithUnicodeEscapes.js b/tests/baselines/reference/taggedTemplateStringsWithUnicodeEscapes.js index a72eaa1f89ea1..a5c35947db718 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithUnicodeEscapes.js +++ b/tests/baselines/reference/taggedTemplateStringsWithUnicodeEscapes.js @@ -6,12 +6,7 @@ f `'\u{1f4a9}'${ " should be converted to " }'\uD83D\uDCA9'`; //// [taggedTemplateStringsWithUnicodeEscapes.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { - if (Object.defineProperty) { - Object.defineProperty(cooked, "raw", { value: raw }); - } - else { - cooked.raw = raw; - } + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; function f() { diff --git a/tests/baselines/reference/taggedTemplateStringsWithWhitespaceEscapes.js b/tests/baselines/reference/taggedTemplateStringsWithWhitespaceEscapes.js index e8b9c3636cf64..73aa63931a66f 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithWhitespaceEscapes.js +++ b/tests/baselines/reference/taggedTemplateStringsWithWhitespaceEscapes.js @@ -6,12 +6,7 @@ f `\t\n\v\f\r\\`; //// [taggedTemplateStringsWithWhitespaceEscapes.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { - if (Object.defineProperty) { - Object.defineProperty(cooked, "raw", { value: raw }); - } - else { - cooked.raw = raw; - } + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; function f() { diff --git a/tests/baselines/reference/taggedTemplateUntypedTagCall01.js b/tests/baselines/reference/taggedTemplateUntypedTagCall01.js index 9421ad4cb57ce..1fd5168cda150 100644 --- a/tests/baselines/reference/taggedTemplateUntypedTagCall01.js +++ b/tests/baselines/reference/taggedTemplateUntypedTagCall01.js @@ -4,12 +4,7 @@ tag `Hello world!`; //// [taggedTemplateUntypedTagCall01.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { - if (Object.defineProperty) { - Object.defineProperty(cooked, "raw", { value: raw }); - } - else { - cooked.raw = raw; - } + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; var tag; diff --git a/tests/baselines/reference/taggedTemplateWithConstructableTag01.js b/tests/baselines/reference/taggedTemplateWithConstructableTag01.js index 384af6f8a3b1f..ce2376d4d3107 100644 --- a/tests/baselines/reference/taggedTemplateWithConstructableTag01.js +++ b/tests/baselines/reference/taggedTemplateWithConstructableTag01.js @@ -5,12 +5,7 @@ CtorTag `Hello world!`; //// [taggedTemplateWithConstructableTag01.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { - if (Object.defineProperty) { - Object.defineProperty(cooked, "raw", { value: raw }); - } - else { - cooked.raw = raw; - } + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; var CtorTag = /** @class */ (function () { diff --git a/tests/baselines/reference/taggedTemplateWithConstructableTag02.js b/tests/baselines/reference/taggedTemplateWithConstructableTag02.js index f823ce8621e95..9cf0611aafdff 100644 --- a/tests/baselines/reference/taggedTemplateWithConstructableTag02.js +++ b/tests/baselines/reference/taggedTemplateWithConstructableTag02.js @@ -8,12 +8,7 @@ tag `Hello world!`; //// [taggedTemplateWithConstructableTag02.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { - if (Object.defineProperty) { - Object.defineProperty(cooked, "raw", { value: raw }); - } - else { - cooked.raw = raw; - } + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; var tag; diff --git a/tests/baselines/reference/taggedTemplatesInModuleAndGlobal.js b/tests/baselines/reference/taggedTemplatesInModuleAndGlobal.js index f6d3065d847de..737bdec55dc43 100644 --- a/tests/baselines/reference/taggedTemplatesInModuleAndGlobal.js +++ b/tests/baselines/reference/taggedTemplatesInModuleAndGlobal.js @@ -25,12 +25,7 @@ let result = templateObjectFactory() === templateObjectFactory(); //// [global.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { - if (Object.defineProperty) { - Object.defineProperty(cooked, "raw", { value: raw }); - } - else { - cooked.raw = raw; - } + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; var n; @@ -46,12 +41,7 @@ var n; //// [module.js] "use strict"; var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { - if (Object.defineProperty) { - Object.defineProperty(cooked, "raw", { value: raw }); - } - else { - cooked.raw = raw; - } + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/tests/baselines/reference/templateStringInModuleName.js b/tests/baselines/reference/templateStringInModuleName.js index e97f39b450d33..fa11d39ff16af 100644 --- a/tests/baselines/reference/templateStringInModuleName.js +++ b/tests/baselines/reference/templateStringInModuleName.js @@ -7,12 +7,7 @@ declare module `M${2}` { //// [templateStringInModuleName.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { - if (Object.defineProperty) { - Object.defineProperty(cooked, "raw", { value: raw }); - } - else { - cooked.raw = raw; - } + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; declare; diff --git a/tests/baselines/reference/templateStringInObjectLiteral.js b/tests/baselines/reference/templateStringInObjectLiteral.js index cb8327c143465..e007ff7b7e745 100644 --- a/tests/baselines/reference/templateStringInObjectLiteral.js +++ b/tests/baselines/reference/templateStringInObjectLiteral.js @@ -6,12 +6,7 @@ var x = { //// [templateStringInObjectLiteral.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { - if (Object.defineProperty) { - Object.defineProperty(cooked, "raw", { value: raw }); - } - else { - cooked.raw = raw; - } + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; var x = { diff --git a/tests/baselines/reference/templateStringInPropertyName1.js b/tests/baselines/reference/templateStringInPropertyName1.js index 42f03d1dcb64e..701400b0f2953 100644 --- a/tests/baselines/reference/templateStringInPropertyName1.js +++ b/tests/baselines/reference/templateStringInPropertyName1.js @@ -5,12 +5,7 @@ var x = { //// [templateStringInPropertyName1.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { - if (Object.defineProperty) { - Object.defineProperty(cooked, "raw", { value: raw }); - } - else { - cooked.raw = raw; - } + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; var x = {}(__makeTemplateObject(["a"], ["a"])); diff --git a/tests/baselines/reference/templateStringInPropertyName2.js b/tests/baselines/reference/templateStringInPropertyName2.js index e01867a0e2430..5f41ed7bfb201 100644 --- a/tests/baselines/reference/templateStringInPropertyName2.js +++ b/tests/baselines/reference/templateStringInPropertyName2.js @@ -5,12 +5,7 @@ var x = { //// [templateStringInPropertyName2.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { - if (Object.defineProperty) { - Object.defineProperty(cooked, "raw", { value: raw }); - } - else { - cooked.raw = raw; - } + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; var x = {}(__makeTemplateObject(["abc", "def", "ghi"], ["abc", "def", "ghi"]), 123, 456); diff --git a/tests/baselines/reference/templateStringInTaggedTemplate.js b/tests/baselines/reference/templateStringInTaggedTemplate.js index 1b959add84fc4..29b85bf71ea5d 100644 --- a/tests/baselines/reference/templateStringInTaggedTemplate.js +++ b/tests/baselines/reference/templateStringInTaggedTemplate.js @@ -3,12 +3,7 @@ //// [templateStringInTaggedTemplate.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { - if (Object.defineProperty) { - Object.defineProperty(cooked, "raw", { value: raw }); - } - else { - cooked.raw = raw; - } + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; ("I AM THE " + "TAG" + " " + " PORTION")(__makeTemplateObject(["I ", " THE TEMPLATE PORTION"], ["I ", " THE TEMPLATE PORTION"]), "AM"); diff --git a/tests/baselines/reference/templateStringsArrayTypeDefinedInES5Mode.js b/tests/baselines/reference/templateStringsArrayTypeDefinedInES5Mode.js index e6e67ee26168d..1176c97a6a2ec 100644 --- a/tests/baselines/reference/templateStringsArrayTypeDefinedInES5Mode.js +++ b/tests/baselines/reference/templateStringsArrayTypeDefinedInES5Mode.js @@ -11,12 +11,7 @@ f `abcdef${ 1234 }${ 5678 }ghijkl`; //// [templateStringsArrayTypeDefinedInES5Mode.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { - if (Object.defineProperty) { - Object.defineProperty(cooked, "raw", { value: raw }); - } - else { - cooked.raw = raw; - } + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; var TemplateStringsArray = /** @class */ (function () { diff --git a/tests/baselines/reference/templateStringsArrayTypeNotDefinedES5Mode.js b/tests/baselines/reference/templateStringsArrayTypeNotDefinedES5Mode.js index 8acf36483351a..f6db54aeb8f08 100644 --- a/tests/baselines/reference/templateStringsArrayTypeNotDefinedES5Mode.js +++ b/tests/baselines/reference/templateStringsArrayTypeNotDefinedES5Mode.js @@ -8,12 +8,7 @@ f `abcdef${ 1234 }${ 5678 }ghijkl`; //// [templateStringsArrayTypeNotDefinedES5Mode.js] var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { - if (Object.defineProperty) { - Object.defineProperty(cooked, "raw", { value: raw }); - } - else { - cooked.raw = raw; - } + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; function f(x, y, z) {