From 2d77419a5d8bbd633931496ac3dcb2566d4f5ce3 Mon Sep 17 00:00:00 2001 From: Klaus Meinhardt Date: Fri, 27 Dec 2019 19:33:01 +0100 Subject: [PATCH 1/4] fix receiver of imported and exported functions fixes: #35420 --- src/compiler/transformers/module/module.ts | 28 +++ .../tsserver/projectReferenceCompileOnSave.ts | 4 +- .../allowJscheckJsTypeParameterNoCrash.js | 2 +- ...ltImportsCanPaintCrossModuleDeclaration.js | 2 +- .../reference/ambientDeclarationsPatterns.js | 6 +- tests/baselines/reference/ambientShorthand.js | 2 +- .../reference/ambientShorthand_reExport.js | 2 +- .../amdDeclarationEmitNoExtraDeclare.js | 2 +- .../anonClassDeclarationEmitIsAnon.js | 4 +- .../baselines/reference/commonjsSafeImport.js | 2 +- ...arationEmitCommonJsModuleReferencedType.js | 4 +- ...clarationEmitExpandoPropertyPrivateName.js | 2 +- ...arationEmitExpandoWithGenericConstraint.js | 28 +-- .../declarationEmitExportDeclaration.js | 16 +- ...arationEmitForGlobalishSpecifierSymlink.js | 2 +- ...rationEmitForGlobalishSpecifierSymlink2.js | 2 +- ...arationEmitForTypesWhichNeedImportTypes.js | 2 +- .../declarationEmitPathMappingMonorepo.js | 2 +- ...ationEmitPrefersPathKindBasedOnBundling.js | 2 +- ...tionEmitPrefersPathKindBasedOnBundling2.js | 2 +- ...clarationEmitQualifiedAliasTypeArgument.js | 4 +- ...eclarationsForInferredTypeFromOtherFile.js | 2 +- ...iveInternalTypesProduceUniqueTypeParams.js | 82 +++---- .../defaultDeclarationEmitDefaultImport.js | 2 +- .../reference/defaultExportsCannotMerge01.js | 2 +- .../reference/defaultExportsCannotMerge02.js | 2 +- .../reference/defaultExportsCannotMerge03.js | 2 +- tests/baselines/reference/duplicatePackage.js | 4 +- ...catePackage_relativeImportWithinPackage.js | 2 +- ...kage_relativeImportWithinPackage_scoped.js | 2 +- .../reference/es3defaultAliasIsQuoted.js | 2 +- .../es5-importHelpersAsyncFunctions.js | 4 +- tests/baselines/reference/esModuleInterop.js | 2 +- .../esModuleInteropImportTSLibHasImport.js | 6 +- .../reference/esModuleInteropTslibHelpers.js | 12 +- .../reference/exportAndImport-es3-amd.js | 2 +- .../reference/exportAndImport-es3.js | 2 +- .../reference/exportAndImport-es5-amd.js | 2 +- .../reference/exportAndImport-es5.js | 2 +- ...gnedNamespaceIsVisibleInDeclarationEmit.js | 2 +- .../exportClassExtendingIntersection.js | 4 +- .../exportsAndImportsWithUnderscores4.js | 12 +- tests/baselines/reference/importHelpers.js | 16 +- tests/baselines/reference/importHelpersAmd.js | 28 +-- .../importHelpersInIsolatedModules.js | 28 +-- .../baselines/reference/importHelpersInTsx.js | 2 +- .../reference/importHelpersNoHelpers.js | 20 +- ...mportHelpersNoHelpersForAsyncGenerators.js | 10 +- .../reference/importHelpersNoModule.js | 14 +- .../reference/importHelpersOutFile.js | 4 +- ...tHelpersWithLocalCollisions(module=amd).js | 2 +- ...ersWithLocalCollisions(module=commonjs).js | 2 +- ...mportShouldNotBeElidedInDeclarationEmit.js | 2 +- ...importTypeGenericArrowTypeParenthesized.js | 8 +- .../reference/inlineJsxFactoryDeclarations.js | 54 ++--- .../inlineJsxFactoryDeclarationsLocalTypes.js | 188 ++++++++-------- ...inlineJsxFactoryLocalTypeGlobalFallback.js | 4 +- ...inlineJsxFactoryOverridesCompilerOption.js | 4 +- .../inlineJsxFactoryWithFragmentIsError.js | 4 +- ...sFunctionInsideTopLevelModuleWithExport.js | 2 +- .../reference/javascriptCommonjsModule.js | 2 +- .../mixinIntersectionIsValidbaseType.js | 2 +- .../reference/multipleDefaultExports01.js | 2 +- .../reference/multipleDefaultExports02.js | 2 +- .../reference/outFilerootDirModuleNamesAmd.js | 2 +- ...pLevelInternalReferenceImportWithExport.js | 8 +- .../reference/reExportDefaultExport.js | 4 +- ...eactTransitiveImportHasValidDeclaration.js | 2 +- .../referenceTypesPreferedToPathIfPossible.js | 12 +- .../requireAsFunctionInExternalModule.js | 6 +- .../taggedTemplateWithoutDeclaredHelper.js | 2 +- ...ng-setup-correctly-and-reports-no-error.js | 4 +- ...hange-in-signature-with-isolatedModules.js | 2 +- .../demo/updates-with-circular-reference.js | 4 +- ...e-down-stream-project-and-then-fixes-it.js | 2 +- .../should-emit-specified-file.js | 78 +++---- ...-be-up-to-date-with-newly-created-files.js | 90 ++++---- ...-to-date-with-the-reference-map-changes.js | 200 +++++++++--------- ...g-a-deep-multilevel-import-that-changes.js | 170 +++++++-------- ...g-a-deep-multilevel-import-that-changes.js | 2 +- ...g-a-deep-multilevel-import-that-changes.js | 170 +++++++-------- ...g-a-deep-multilevel-import-that-changes.js | 2 +- .../reference/typeReferenceDirectives8.js | 2 +- .../typesVersionsDeclarationEmit.ambient.js | 4 +- .../typesVersionsDeclarationEmit.multiFile.js | 4 +- ...rationEmit.multiFileBackReferenceToSelf.js | 4 +- ...onEmit.multiFileBackReferenceToUnmapped.js | 4 +- .../reference/untypedModuleImport.js | 2 +- tests/baselines/reference/unusedImports3.js | 4 +- tests/baselines/reference/unusedImports4.js | 2 +- tests/baselines/reference/unusedImports5.js | 2 +- tests/baselines/reference/unusedImports8.js | 2 +- .../reference/unusedInvalidTypeArguments.js | 2 +- 93 files changed, 746 insertions(+), 718 deletions(-) diff --git a/src/compiler/transformers/module/module.ts b/src/compiler/transformers/module/module.ts index 24d962c6e2f28..df8ee0b6e35ee 100644 --- a/src/compiler/transformers/module/module.ts +++ b/src/compiler/transformers/module/module.ts @@ -34,6 +34,8 @@ namespace ts { context.onEmitNode = onEmitNode; context.enableSubstitution(SyntaxKind.Identifier); // Substitutes expression identifiers with imported/exported symbols. context.enableSubstitution(SyntaxKind.BinaryExpression); // Substitutes assignments to exported symbols. + context.enableSubstitution(SyntaxKind.CallExpression); // Substitutes expression identifiers with imported/exported symbols. + context.enableSubstitution(SyntaxKind.TaggedTemplateExpression); // Substitutes expression identifiers with imported/exported symbols. context.enableSubstitution(SyntaxKind.PrefixUnaryExpression); // Substitutes updates to exported symbols. context.enableSubstitution(SyntaxKind.PostfixUnaryExpression); // Substitutes updates to exported symbols. context.enableSubstitution(SyntaxKind.ShorthandPropertyAssignment); // Substitutes shorthand property assignments for imported/exported symbols. @@ -1742,6 +1744,10 @@ namespace ts { return substituteExpressionIdentifier(node); case SyntaxKind.BinaryExpression: return substituteBinaryExpression(node); + case SyntaxKind.CallExpression: + return substituteCallExpression(node); + case SyntaxKind.TaggedTemplateExpression: + return substituteTaggedTemplateExpression(node); case SyntaxKind.PostfixUnaryExpression: case SyntaxKind.PrefixUnaryExpression: return substituteUnaryExpression(node); @@ -1750,6 +1756,28 @@ namespace ts { return node; } + function substituteCallExpression(node: CallExpression) { + if (!isIdentifier(node.expression)) { + return node; + } + const newExpression = substituteExpressionIdentifier(node.expression); + if (newExpression !== node.expression) { + return updateCall(node, setTextRange(createBinary(createNumericLiteral("0"), SyntaxKind.CommaToken, newExpression), node.expression), /*typeArguments*/ undefined, node.arguments); + } + return node; + } + + function substituteTaggedTemplateExpression(node: TaggedTemplateExpression) { + if (!isIdentifier(node.tag)) { + return node; + } + const newTag = substituteExpressionIdentifier(node.tag); + if (newTag !== node.tag) { + return updateTaggedTemplate(node, setTextRange(createBinary(createNumericLiteral("0"), SyntaxKind.CommaToken, newTag), node.tag), /*typeArguments*/ undefined, node.template); + } + return node; + } + /** * Substitution for an Identifier expression that may contain an imported or exported * symbol. diff --git a/src/testRunner/unittests/tsserver/projectReferenceCompileOnSave.ts b/src/testRunner/unittests/tsserver/projectReferenceCompileOnSave.ts index 55847f2e22837..083c64aabe743 100644 --- a/src/testRunner/unittests/tsserver/projectReferenceCompileOnSave.ts +++ b/src/testRunner/unittests/tsserver/projectReferenceCompileOnSave.ts @@ -238,8 +238,8 @@ exports.fn3 = fn3;`; content: `"use strict"; exports.__esModule = true;${appendJsText === changeJs ? "\nexports.fn3 = void 0;" : ""} var fns_1 = require("../decls/fns"); -fns_1.fn1(); -fns_1.fn2(); +(0, fns_1.fn1)(); +(0, fns_1.fn2)(); ${appendJs}` }] }; diff --git a/tests/baselines/reference/allowJscheckJsTypeParameterNoCrash.js b/tests/baselines/reference/allowJscheckJsTypeParameterNoCrash.js index 43fdb9f639a76..85d779322ad53 100644 --- a/tests/baselines/reference/allowJscheckJsTypeParameterNoCrash.js +++ b/tests/baselines/reference/allowJscheckJsTypeParameterNoCrash.js @@ -30,7 +30,7 @@ exports.__esModule = true; exports.a = void 0; var func_1 = require("./func"); // hover on vextend -exports.a = func_1.vextend({ +exports.a = (0, func_1.vextend)({ watch: { data1: function (val) { this.data2 = 1; diff --git a/tests/baselines/reference/allowSyntheticDefaultImportsCanPaintCrossModuleDeclaration.js b/tests/baselines/reference/allowSyntheticDefaultImportsCanPaintCrossModuleDeclaration.js index 2acd2d7c2a246..f78ef55392d97 100644 --- a/tests/baselines/reference/allowSyntheticDefaultImportsCanPaintCrossModuleDeclaration.js +++ b/tests/baselines/reference/allowSyntheticDefaultImportsCanPaintCrossModuleDeclaration.js @@ -23,7 +23,7 @@ exports.__esModule = true; exports.__esModule = true; exports.A = void 0; var file1_1 = require("./file1"); -exports.A = file1_1.styled(); +exports.A = (0, file1_1.styled)(); //// [color.d.ts] diff --git a/tests/baselines/reference/ambientDeclarationsPatterns.js b/tests/baselines/reference/ambientDeclarationsPatterns.js index 84088d11d4eb4..854e2edce2ee2 100644 --- a/tests/baselines/reference/ambientDeclarationsPatterns.js +++ b/tests/baselines/reference/ambientDeclarationsPatterns.js @@ -37,9 +37,9 @@ foo(fileText); exports.__esModule = true; /// var foobarbaz_1 = require("foobarbaz"); -foobarbaz_1.foo(foobarbaz_1.baz); +(0, foobarbaz_1.foo)(foobarbaz_1.baz); var foosball_1 = require("foosball"); -foobarbaz_1.foo(foosball_1.foos); +(0, foobarbaz_1.foo)(foosball_1.foos); // Works with relative file name var file_text_1 = require("./file!text"); -foobarbaz_1.foo(file_text_1["default"]); +(0, foobarbaz_1.foo)(file_text_1["default"]); diff --git a/tests/baselines/reference/ambientShorthand.js b/tests/baselines/reference/ambientShorthand.js index a7513e7eb585a..309c0dc90fae5 100644 --- a/tests/baselines/reference/ambientShorthand.js +++ b/tests/baselines/reference/ambientShorthand.js @@ -20,4 +20,4 @@ exports.__esModule = true; var jquery_1 = require("jquery"); var baz = require("fs"); var boom = require("jquery"); -jquery_1["default"](jquery_1.bar, baz, boom); +(0, jquery_1["default"])(jquery_1.bar, baz, boom); diff --git a/tests/baselines/reference/ambientShorthand_reExport.js b/tests/baselines/reference/ambientShorthand_reExport.js index 03117f531aeda..c78122c9424d2 100644 --- a/tests/baselines/reference/ambientShorthand_reExport.js +++ b/tests/baselines/reference/ambientShorthand_reExport.js @@ -49,4 +49,4 @@ exports.__esModule = true; var reExportX_1 = require("./reExportX"); var $ = require("./reExportAll"); // '$' is not callable, it is an object. -reExportX_1.x($); +(0, reExportX_1.x)($); diff --git a/tests/baselines/reference/amdDeclarationEmitNoExtraDeclare.js b/tests/baselines/reference/amdDeclarationEmitNoExtraDeclare.js index 294bbd4ab01bc..eb140e5a33fff 100644 --- a/tests/baselines/reference/amdDeclarationEmitNoExtraDeclare.js +++ b/tests/baselines/reference/amdDeclarationEmitNoExtraDeclare.js @@ -72,7 +72,7 @@ define("Class", ["require", "exports", "Configurable"], function (require, expor return _super !== null && _super.apply(this, arguments) || this; } return ActualClass; - }(Configurable_1.Configurable(HiddenClass))); + }((0, Configurable_1.Configurable)(HiddenClass))); exports.ActualClass = ActualClass; }); diff --git a/tests/baselines/reference/anonClassDeclarationEmitIsAnon.js b/tests/baselines/reference/anonClassDeclarationEmitIsAnon.js index 44642171aa7d3..2c7ccdcccb8e0 100644 --- a/tests/baselines/reference/anonClassDeclarationEmitIsAnon.js +++ b/tests/baselines/reference/anonClassDeclarationEmitIsAnon.js @@ -96,7 +96,7 @@ var __extends = (this && this.__extends) || (function () { exports.__esModule = true; exports.TimestampedUser = exports.User = void 0; var wrapClass_1 = require("./wrapClass"); -exports["default"] = wrapClass_1.wrapClass(0); +exports["default"] = (0, wrapClass_1.wrapClass)(0); // Simple class var User = /** @class */ (function () { function User() { @@ -112,7 +112,7 @@ var TimestampedUser = /** @class */ (function (_super) { return _super.call(this) || this; } return TimestampedUser; -}(wrapClass_1.Timestamped(User))); +}((0, wrapClass_1.Timestamped)(User))); exports.TimestampedUser = TimestampedUser; diff --git a/tests/baselines/reference/commonjsSafeImport.js b/tests/baselines/reference/commonjsSafeImport.js index 0a437186d67ae..9df802827e2bc 100644 --- a/tests/baselines/reference/commonjsSafeImport.js +++ b/tests/baselines/reference/commonjsSafeImport.js @@ -19,7 +19,7 @@ exports.Foo = Foo; "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _10_lib_1 = require("./10_lib"); -_10_lib_1.Foo(); +(0, _10_lib_1.Foo)(); //// [10_lib.d.ts] diff --git a/tests/baselines/reference/declarationEmitCommonJsModuleReferencedType.js b/tests/baselines/reference/declarationEmitCommonJsModuleReferencedType.js index 9725d2192554b..909ef93c48053 100644 --- a/tests/baselines/reference/declarationEmitCommonJsModuleReferencedType.js +++ b/tests/baselines/reference/declarationEmitCommonJsModuleReferencedType.js @@ -30,5 +30,5 @@ exports.__esModule = true; exports.y = exports.x = void 0; var foo_1 = require("foo"); var root_1 = require("root"); -exports.x = foo_1.foo(); -exports.y = root_1.bar(); +exports.x = (0, foo_1.foo)(); +exports.y = (0, root_1.bar)(); diff --git a/tests/baselines/reference/declarationEmitExpandoPropertyPrivateName.js b/tests/baselines/reference/declarationEmitExpandoPropertyPrivateName.js index b020434d038d5..07991edb867d3 100644 --- a/tests/baselines/reference/declarationEmitExpandoPropertyPrivateName.js +++ b/tests/baselines/reference/declarationEmitExpandoPropertyPrivateName.js @@ -23,7 +23,7 @@ exports.q = void 0; var a_1 = require("./a"); function q() { } exports.q = q; -q.val = a_1.f(); +q.val = (0, a_1.f)(); //// [a.d.ts] diff --git a/tests/baselines/reference/declarationEmitExpandoWithGenericConstraint.js b/tests/baselines/reference/declarationEmitExpandoWithGenericConstraint.js index b446a577964c2..3a7805676dff7 100644 --- a/tests/baselines/reference/declarationEmitExpandoWithGenericConstraint.js +++ b/tests/baselines/reference/declarationEmitExpandoWithGenericConstraint.js @@ -1,17 +1,17 @@ //// [declarationEmitExpandoWithGenericConstraint.ts] -export interface Point { - readonly x: number; - readonly y: number; -} - -export interface Rect

{ - readonly a: p; - readonly b: p; -} - -export const Point = (x: number, y: number): Point => ({ x, y }); -export const Rect =

(a: p, b: p): Rect

=> ({ a, b }); - +export interface Point { + readonly x: number; + readonly y: number; +} + +export interface Rect

{ + readonly a: p; + readonly b: p; +} + +export const Point = (x: number, y: number): Point => ({ x, y }); +export const Rect =

(a: p, b: p): Rect

=> ({ a, b }); + Point.zero = (): Point => Point(0, 0); //// [declarationEmitExpandoWithGenericConstraint.js] @@ -22,7 +22,7 @@ var Point = function (x, y) { return ({ x: x, y: y }); }; exports.Point = Point; var Rect = function (a, b) { return ({ a: a, b: b }); }; exports.Rect = Rect; -exports.Point.zero = function () { return exports.Point(0, 0); }; +exports.Point.zero = function () { return (0, exports.Point)(0, 0); }; //// [declarationEmitExpandoWithGenericConstraint.d.ts] diff --git a/tests/baselines/reference/declarationEmitExportDeclaration.js b/tests/baselines/reference/declarationEmitExportDeclaration.js index 0be721d7df9a9..faa1a34704a50 100644 --- a/tests/baselines/reference/declarationEmitExportDeclaration.js +++ b/tests/baselines/reference/declarationEmitExportDeclaration.js @@ -1,15 +1,15 @@ //// [tests/cases/compiler/declarationEmitExportDeclaration.ts] //// //// [utils.ts] -export function foo() { } -export function bar() { } -export interface Buzz { } +export function foo() { } +export function bar() { } +export interface Buzz { } //// [index.ts] -import {foo, bar, Buzz} from "./utils"; - -foo(); -let obj: Buzz; +import {foo, bar, Buzz} from "./utils"; + +foo(); +let obj: Buzz; export {bar}; //// [utils.js] @@ -26,7 +26,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.bar = void 0; var utils_1 = require("./utils"); Object.defineProperty(exports, "bar", { enumerable: true, get: function () { return utils_1.bar; } }); -utils_1.foo(); +(0, utils_1.foo)(); var obj; diff --git a/tests/baselines/reference/declarationEmitForGlobalishSpecifierSymlink.js b/tests/baselines/reference/declarationEmitForGlobalishSpecifierSymlink.js index a3f185146e432..74447c58f74ba 100644 --- a/tests/baselines/reference/declarationEmitForGlobalishSpecifierSymlink.js +++ b/tests/baselines/reference/declarationEmitForGlobalishSpecifierSymlink.js @@ -39,7 +39,7 @@ export const a: import("typescript-fsa").A; exports.__esModule = true; exports.a = void 0; var typescript_fsa_1 = require("typescript-fsa"); -exports.a = typescript_fsa_1.getA(); +exports.a = (0, typescript_fsa_1.getA)(); //// [index.d.ts] diff --git a/tests/baselines/reference/declarationEmitForGlobalishSpecifierSymlink2.js b/tests/baselines/reference/declarationEmitForGlobalishSpecifierSymlink2.js index bbce07796f988..af08f2dfec610 100644 --- a/tests/baselines/reference/declarationEmitForGlobalishSpecifierSymlink2.js +++ b/tests/baselines/reference/declarationEmitForGlobalishSpecifierSymlink2.js @@ -27,7 +27,7 @@ export const a: import("typescript-fsa").A; exports.__esModule = true; exports.a = void 0; var typescript_fsa_1 = require("typescript-fsa"); -exports.a = typescript_fsa_1.getA(); +exports.a = (0, typescript_fsa_1.getA)(); //// [index.d.ts] diff --git a/tests/baselines/reference/declarationEmitForTypesWhichNeedImportTypes.js b/tests/baselines/reference/declarationEmitForTypesWhichNeedImportTypes.js index 6ef664aa82825..0625dd4bbedfc 100644 --- a/tests/baselines/reference/declarationEmitForTypesWhichNeedImportTypes.js +++ b/tests/baselines/reference/declarationEmitForTypesWhichNeedImportTypes.js @@ -25,7 +25,7 @@ exports.createNamed = createNamed; exports.__esModule = true; exports.Value = void 0; var b_1 = require("./b"); -exports.Value = b_1.createNamed(); +exports.Value = (0, b_1.createNamed)(); //// [b.d.ts] diff --git a/tests/baselines/reference/declarationEmitPathMappingMonorepo.js b/tests/baselines/reference/declarationEmitPathMappingMonorepo.js index 8a4723035c808..95ae542339c66 100644 --- a/tests/baselines/reference/declarationEmitPathMappingMonorepo.js +++ b/tests/baselines/reference/declarationEmitPathMappingMonorepo.js @@ -21,7 +21,7 @@ exports.__esModule = true; exports.b = void 0; var a_1 = require("@ts-bug/a"); function b(text) { - return a_1.a(text); + return (0, a_1.a)(text); } exports.b = b; diff --git a/tests/baselines/reference/declarationEmitPrefersPathKindBasedOnBundling.js b/tests/baselines/reference/declarationEmitPrefersPathKindBasedOnBundling.js index 0e29d1a9c5df6..f00670c6dae5b 100644 --- a/tests/baselines/reference/declarationEmitPrefersPathKindBasedOnBundling.js +++ b/tests/baselines/reference/declarationEmitPrefersPathKindBasedOnBundling.js @@ -33,7 +33,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); var scalar_1 = require("../lib/operators/scalar"); exports.default = { get xs() { - return scalar_1.scalar("14px"); + return (0, scalar_1.scalar)("14px"); } }; diff --git a/tests/baselines/reference/declarationEmitPrefersPathKindBasedOnBundling2.js b/tests/baselines/reference/declarationEmitPrefersPathKindBasedOnBundling2.js index a41067b7cda63..5913414cc2807 100644 --- a/tests/baselines/reference/declarationEmitPrefersPathKindBasedOnBundling2.js +++ b/tests/baselines/reference/declarationEmitPrefersPathKindBasedOnBundling2.js @@ -34,7 +34,7 @@ define("settings/spacing", ["require", "exports", "lib/operators/scalar"], funct Object.defineProperty(exports, "__esModule", { value: true }); exports.default = { get xs() { - return scalar_1.scalar("14px"); + return (0, scalar_1.scalar)("14px"); } }; }); diff --git a/tests/baselines/reference/declarationEmitQualifiedAliasTypeArgument.js b/tests/baselines/reference/declarationEmitQualifiedAliasTypeArgument.js index 4fc94cf44ba84..e69e65acf1df0 100644 --- a/tests/baselines/reference/declarationEmitQualifiedAliasTypeArgument.js +++ b/tests/baselines/reference/declarationEmitQualifiedAliasTypeArgument.js @@ -32,8 +32,8 @@ export const fun2 = create(); exports.__esModule = true; exports.fun2 = exports.fun = void 0; var bbb_1 = require("./bbb"); -exports.fun = bbb_1.create(); -exports.fun2 = bbb_1.create(); +exports.fun = (0, bbb_1.create)(); +exports.fun2 = (0, bbb_1.create)(); //// [index.d.ts] diff --git a/tests/baselines/reference/declarationsForInferredTypeFromOtherFile.js b/tests/baselines/reference/declarationsForInferredTypeFromOtherFile.js index 707fbbbea999f..2025b22f90ad2 100644 --- a/tests/baselines/reference/declarationsForInferredTypeFromOtherFile.js +++ b/tests/baselines/reference/declarationsForInferredTypeFromOtherFile.js @@ -37,7 +37,7 @@ exports.__esModule = true; exports.bar = void 0; var file2_1 = require("./file2"); function bar() { - return file2_1.foo(); + return (0, file2_1.foo)(); } exports.bar = bar; diff --git a/tests/baselines/reference/declarationsWithRecursiveInternalTypesProduceUniqueTypeParams.js b/tests/baselines/reference/declarationsWithRecursiveInternalTypesProduceUniqueTypeParams.js index c49fd6c0689e0..3e369f2cf819d 100644 --- a/tests/baselines/reference/declarationsWithRecursiveInternalTypesProduceUniqueTypeParams.js +++ b/tests/baselines/reference/declarationsWithRecursiveInternalTypesProduceUniqueTypeParams.js @@ -1,43 +1,43 @@ //// [declarationsWithRecursiveInternalTypesProduceUniqueTypeParams.ts] -// Note that both of the following have an `any` in their return type from where we bottom out the type printout -// for having too many instances of the same symbol nesting. - -// Slightly simplified repro from https://github.com/microsoft/TypeScript/issues/30732 so it's easier to read and debug -export type Key = keyof U; -export type Value, U> = U[K]; -export const updateIfChanged = (t: T) => { - const reduce = (u: U, update: (u: U) => T) => { - const set = (newU: U) => Object.is(u, newU) ? t : update(newU); - return Object.assign( - >(key: K) => - reduce>(u[key as keyof U] as Value, (v: Value) => { - return update(Object.assign(Array.isArray(u) ? [] : {}, u, { [key]: v })); - }), - { map: (updater: (u: U) => U) => set(updater(u)), set }); - }; - return reduce(t, (t: T) => t); -}; - -// example from https://github.com/microsoft/TypeScript/issues/31605 - -export const testRecFun = (parent: T) => { - return { - result: parent, - deeper: (child: U) => - testRecFun({ ...parent, ...child }) - }; -} - - -let p1 = testRecFun({ one: '1' }) -void p1.result.one; -let p2 = p1.deeper({ two: '2' }) -void p2.result.one; -void p2.result.two; -let p3 = p2.deeper({ three: '3' }) -void p3.result.one; -void p3.result.two; -void p3.result.three; +// Note that both of the following have an `any` in their return type from where we bottom out the type printout +// for having too many instances of the same symbol nesting. + +// Slightly simplified repro from https://github.com/microsoft/TypeScript/issues/30732 so it's easier to read and debug +export type Key = keyof U; +export type Value, U> = U[K]; +export const updateIfChanged = (t: T) => { + const reduce = (u: U, update: (u: U) => T) => { + const set = (newU: U) => Object.is(u, newU) ? t : update(newU); + return Object.assign( + >(key: K) => + reduce>(u[key as keyof U] as Value, (v: Value) => { + return update(Object.assign(Array.isArray(u) ? [] : {}, u, { [key]: v })); + }), + { map: (updater: (u: U) => U) => set(updater(u)), set }); + }; + return reduce(t, (t: T) => t); +}; + +// example from https://github.com/microsoft/TypeScript/issues/31605 + +export const testRecFun = (parent: T) => { + return { + result: parent, + deeper: (child: U) => + testRecFun({ ...parent, ...child }) + }; +} + + +let p1 = testRecFun({ one: '1' }) +void p1.result.one; +let p2 = p1.deeper({ two: '2' }) +void p2.result.one; +void p2.result.two; +let p3 = p2.deeper({ three: '3' }) +void p3.result.one; +void p3.result.two; +void p3.result.three; //// [declarationsWithRecursiveInternalTypesProduceUniqueTypeParams.js] @@ -75,12 +75,12 @@ var testRecFun = function (parent) { return { result: parent, deeper: function (child) { - return exports.testRecFun(__assign(__assign({}, parent), child)); + return (0, exports.testRecFun)(__assign(__assign({}, parent), child)); } }; }; exports.testRecFun = testRecFun; -var p1 = exports.testRecFun({ one: '1' }); +var p1 = (0, exports.testRecFun)({ one: '1' }); void p1.result.one; var p2 = p1.deeper({ two: '2' }); void p2.result.one; diff --git a/tests/baselines/reference/defaultDeclarationEmitDefaultImport.js b/tests/baselines/reference/defaultDeclarationEmitDefaultImport.js index de49fb13194ed..96b3b90ad00b7 100644 --- a/tests/baselines/reference/defaultDeclarationEmitDefaultImport.js +++ b/tests/baselines/reference/defaultDeclarationEmitDefaultImport.js @@ -25,7 +25,7 @@ exports["default"] = Something; exports.__esModule = true; exports.instance = void 0; var root_1 = require("./root"); -exports.instance = root_1.getSomething(); +exports.instance = (0, root_1.getSomething)(); //// [root.d.ts] diff --git a/tests/baselines/reference/defaultExportsCannotMerge01.js b/tests/baselines/reference/defaultExportsCannotMerge01.js index 9c433ce3a2b11..4033818fff0a5 100644 --- a/tests/baselines/reference/defaultExportsCannotMerge01.js +++ b/tests/baselines/reference/defaultExportsCannotMerge01.js @@ -44,7 +44,7 @@ exports.default = Decl; "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var m1_1 = require("m1"); -m1_1.default(); +(0, m1_1.default)(); var x; var y; m1_1.default.x; diff --git a/tests/baselines/reference/defaultExportsCannotMerge02.js b/tests/baselines/reference/defaultExportsCannotMerge02.js index 98bbe7b0d08e4..abb13d082b1c9 100644 --- a/tests/baselines/reference/defaultExportsCannotMerge02.js +++ b/tests/baselines/reference/defaultExportsCannotMerge02.js @@ -37,7 +37,7 @@ exports.default = Decl; "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var m1_1 = require("m1"); -m1_1.default(); +(0, m1_1.default)(); var x; var y; var z = new m1_1.default(); diff --git a/tests/baselines/reference/defaultExportsCannotMerge03.js b/tests/baselines/reference/defaultExportsCannotMerge03.js index 8aa10e6eab1f5..d52ffec5ec93a 100644 --- a/tests/baselines/reference/defaultExportsCannotMerge03.js +++ b/tests/baselines/reference/defaultExportsCannotMerge03.js @@ -37,7 +37,7 @@ exports.default = Decl; "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var m1_1 = require("m1"); -m1_1.default(); +(0, m1_1.default)(); var x; var y; var z = new m1_1.default(); diff --git a/tests/baselines/reference/duplicatePackage.js b/tests/baselines/reference/duplicatePackage.js index ada5c900b9371..763f311404864 100644 --- a/tests/baselines/reference/duplicatePackage.js +++ b/tests/baselines/reference/duplicatePackage.js @@ -48,5 +48,5 @@ exports.__esModule = true; var a_1 = require("a"); var b_1 = require("b"); var c_1 = require("c"); -a_1.a(b_1.b); // Works -a_1.a(c_1.c); // Error, these are from different versions of the library. +(0, a_1.a)(b_1.b); // Works +(0, a_1.a)(c_1.c); // Error, these are from different versions of the library. diff --git a/tests/baselines/reference/duplicatePackage_relativeImportWithinPackage.js b/tests/baselines/reference/duplicatePackage_relativeImportWithinPackage.js index 5236a93f931eb..7a6aab052f3ff 100644 --- a/tests/baselines/reference/duplicatePackage_relativeImportWithinPackage.js +++ b/tests/baselines/reference/duplicatePackage_relativeImportWithinPackage.js @@ -42,4 +42,4 @@ use(o); exports.__esModule = true; var use_1 = require("foo/use"); var a_1 = require("a"); -use_1.use(a_1.o); +(0, use_1.use)(a_1.o); diff --git a/tests/baselines/reference/duplicatePackage_relativeImportWithinPackage_scoped.js b/tests/baselines/reference/duplicatePackage_relativeImportWithinPackage_scoped.js index 822c03ca18dec..299efcdf45391 100644 --- a/tests/baselines/reference/duplicatePackage_relativeImportWithinPackage_scoped.js +++ b/tests/baselines/reference/duplicatePackage_relativeImportWithinPackage_scoped.js @@ -42,4 +42,4 @@ use(o); exports.__esModule = true; var use_1 = require("@foo/bar/use"); var a_1 = require("a"); -use_1.use(a_1.o); +(0, use_1.use)(a_1.o); diff --git a/tests/baselines/reference/es3defaultAliasIsQuoted.js b/tests/baselines/reference/es3defaultAliasIsQuoted.js index 5e7b58e53ac8e..a486ad614046b 100644 --- a/tests/baselines/reference/es3defaultAliasIsQuoted.js +++ b/tests/baselines/reference/es3defaultAliasIsQuoted.js @@ -33,4 +33,4 @@ exports["default"] = assert; "use strict"; exports.__esModule = true; var es3defaultAliasQuoted_file0_1 = require("./es3defaultAliasQuoted_file0"); -es3defaultAliasQuoted_file0_1["default"](es3defaultAliasQuoted_file0_1.Foo.CONSTANT === "Foo"); +(0, es3defaultAliasQuoted_file0_1["default"])(es3defaultAliasQuoted_file0_1.Foo.CONSTANT === "Foo"); diff --git a/tests/baselines/reference/es5-importHelpersAsyncFunctions.js b/tests/baselines/reference/es5-importHelpersAsyncFunctions.js index 781027fc18ab4..de1c7ca322864 100644 --- a/tests/baselines/reference/es5-importHelpersAsyncFunctions.js +++ b/tests/baselines/reference/es5-importHelpersAsyncFunctions.js @@ -23,8 +23,8 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.foo = void 0; var tslib_1 = require("tslib"); function foo() { - return tslib_1.__awaiter(this, void 0, void 0, function () { - return tslib_1.__generator(this, function (_a) { + return (0, tslib_1.__awaiter)(this, void 0, void 0, function () { + return (0, tslib_1.__generator)(this, function (_a) { return [2 /*return*/]; }); }); diff --git a/tests/baselines/reference/esModuleInterop.js b/tests/baselines/reference/esModuleInterop.js index dd4487c43393a..26ae64863ba85 100644 --- a/tests/baselines/reference/esModuleInterop.js +++ b/tests/baselines/reference/esModuleInterop.js @@ -47,5 +47,5 @@ var hybrid_1 = require("./hybrid"); var path_1 = __importDefault(require("./path")); var fs = __importStar(require("./fs")); path_1["default"]; -hybrid_1.sayHello(); +(0, hybrid_1.sayHello)(); fs; diff --git a/tests/baselines/reference/esModuleInteropImportTSLibHasImport.js b/tests/baselines/reference/esModuleInteropImportTSLibHasImport.js index f6d7ca9621745..079e0db685408 100644 --- a/tests/baselines/reference/esModuleInteropImportTSLibHasImport.js +++ b/tests/baselines/reference/esModuleInteropImportTSLibHasImport.js @@ -26,7 +26,7 @@ exports.username = username; "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); -tslib_1.__exportStar(require("./username"), exports); +(0, tslib_1.__exportStar)(require("./username"), exports); //// [hello.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); @@ -36,6 +36,6 @@ exports.default = sayHello; "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); -const hello_1 = tslib_1.__importDefault(require("./hello")); +const hello_1 = (0, tslib_1.__importDefault)(require("./hello")); const utils_1 = require("./utils"); -hello_1.default(utils_1.username()); +(0, hello_1.default)((0, utils_1.username)()); diff --git a/tests/baselines/reference/esModuleInteropTslibHelpers.js b/tests/baselines/reference/esModuleInteropTslibHelpers.js index a51bca930891b..0e44270a01257 100644 --- a/tests/baselines/reference/esModuleInteropTslibHelpers.js +++ b/tests/baselines/reference/esModuleInteropTslibHelpers.js @@ -24,7 +24,7 @@ export { Bar } exports.__esModule = true; exports.Foo = void 0; var tslib_1 = require("tslib"); -var path_1 = tslib_1.__importDefault(require("path")); +var path_1 = (0, tslib_1.__importDefault)(require("path")); path_1["default"].resolve("", "../"); var Foo = /** @class */ (function () { function Foo() { @@ -37,7 +37,7 @@ exports.Foo = Foo; exports.__esModule = true; exports.Foo2 = void 0; var tslib_1 = require("tslib"); -var path = tslib_1.__importStar(require("path")); +var path = (0, tslib_1.__importStar)(require("path")); path.resolve("", "../"); var Foo2 = /** @class */ (function () { function Foo2() { @@ -50,8 +50,8 @@ exports.Foo2 = Foo2; exports.__esModule = true; exports.Foo3 = void 0; var tslib_1 = require("tslib"); -var path_1 = tslib_1.__importDefault(require("path")); -path_1["default"]("", "../"); +var path_1 = (0, tslib_1.__importDefault)(require("path")); +(0, path_1["default"])("", "../"); var Foo3 = /** @class */ (function () { function Foo3() { } @@ -63,6 +63,6 @@ exports.Foo3 = Foo3; exports.__esModule = true; exports.Bar = void 0; var tslib_1 = require("tslib"); -var path_1 = tslib_1.__importStar(require("path")); +var path_1 = (0, tslib_1.__importStar)(require("path")); exports.Bar = path_1.Bar; -path_1["default"]("", "../"); +(0, path_1["default"])("", "../"); diff --git a/tests/baselines/reference/exportAndImport-es3-amd.js b/tests/baselines/reference/exportAndImport-es3-amd.js index ff341f922b5f2..6f7de5ee871f2 100644 --- a/tests/baselines/reference/exportAndImport-es3-amd.js +++ b/tests/baselines/reference/exportAndImport-es3-amd.js @@ -24,7 +24,7 @@ define(["require", "exports", "./m1"], function (require, exports, m1_1) { "use strict"; exports.__esModule = true; function f2() { - m1_1["default"](); + (0, m1_1["default"])(); } exports["default"] = f2; }); diff --git a/tests/baselines/reference/exportAndImport-es3.js b/tests/baselines/reference/exportAndImport-es3.js index 48b3e94a2f218..de49050ff930e 100644 --- a/tests/baselines/reference/exportAndImport-es3.js +++ b/tests/baselines/reference/exportAndImport-es3.js @@ -22,6 +22,6 @@ exports["default"] = f1; exports.__esModule = true; var m1_1 = require("./m1"); function f2() { - m1_1["default"](); + (0, m1_1["default"])(); } exports["default"] = f2; diff --git a/tests/baselines/reference/exportAndImport-es5-amd.js b/tests/baselines/reference/exportAndImport-es5-amd.js index d471d76da51a6..63dbd98ed81a1 100644 --- a/tests/baselines/reference/exportAndImport-es5-amd.js +++ b/tests/baselines/reference/exportAndImport-es5-amd.js @@ -24,7 +24,7 @@ define(["require", "exports", "./m1"], function (require, exports, m1_1) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); function f2() { - m1_1.default(); + (0, m1_1.default)(); } exports.default = f2; }); diff --git a/tests/baselines/reference/exportAndImport-es5.js b/tests/baselines/reference/exportAndImport-es5.js index c329b650d6e55..20b933ac3a8f7 100644 --- a/tests/baselines/reference/exportAndImport-es5.js +++ b/tests/baselines/reference/exportAndImport-es5.js @@ -22,6 +22,6 @@ exports.default = f1; Object.defineProperty(exports, "__esModule", { value: true }); var m1_1 = require("./m1"); function f2() { - m1_1.default(); + (0, m1_1.default)(); } exports.default = f2; diff --git a/tests/baselines/reference/exportAssignedNamespaceIsVisibleInDeclarationEmit.js b/tests/baselines/reference/exportAssignedNamespaceIsVisibleInDeclarationEmit.js index bad4eb7398ebd..d9cc1824264ae 100644 --- a/tests/baselines/reference/exportAssignedNamespaceIsVisibleInDeclarationEmit.js +++ b/tests/baselines/reference/exportAssignedNamespaceIsVisibleInDeclarationEmit.js @@ -15,7 +15,7 @@ export const thing = f(); exports.__esModule = true; exports.thing = void 0; var thing_1 = require("./thing"); -exports.thing = thing_1.f(); +exports.thing = (0, thing_1.f)(); //// [index.d.ts] diff --git a/tests/baselines/reference/exportClassExtendingIntersection.js b/tests/baselines/reference/exportClassExtendingIntersection.js index 5345a2f437ad8..9327a315f3a48 100644 --- a/tests/baselines/reference/exportClassExtendingIntersection.js +++ b/tests/baselines/reference/exportClassExtendingIntersection.js @@ -101,7 +101,7 @@ var MyExtendedClass = /** @class */ (function (_super) { return _super !== null && _super.apply(this, arguments) || this; } return MyExtendedClass; -}(MixinClass_1.MyMixin(BaseClass_1.MyBaseClass))); +}((0, MixinClass_1.MyMixin)(BaseClass_1.MyBaseClass))); exports.MyExtendedClass = MyExtendedClass; //// [Main.js] "use strict"; @@ -109,7 +109,7 @@ exports.__esModule = true; var FinalClass_1 = require("./FinalClass"); var MixinClass_1 = require("./MixinClass"); var myExtendedClass = new FinalClass_1.MyExtendedClass('string'); -var AnotherMixedClass = MixinClass_1.MyMixin(FinalClass_1.MyExtendedClass); +var AnotherMixedClass = (0, MixinClass_1.MyMixin)(FinalClass_1.MyExtendedClass); //// [BaseClass.d.ts] diff --git a/tests/baselines/reference/exportsAndImportsWithUnderscores4.js b/tests/baselines/reference/exportsAndImportsWithUnderscores4.js index 92f04db59919c..1fa3b3fd5e1d8 100644 --- a/tests/baselines/reference/exportsAndImportsWithUnderscores4.js +++ b/tests/baselines/reference/exportsAndImportsWithUnderscores4.js @@ -69,9 +69,9 @@ exports.___hello = ___hello; "use strict"; exports.__esModule = true; var m1_1 = require("./m1"); -m1_1._(); -m1_1.__(); -m1_1.___hello(); -m1_1.__esmodule(); -m1_1.__proto(); -m1_1._hi(); +(0, m1_1._)(); +(0, m1_1.__)(); +(0, m1_1.___hello)(); +(0, m1_1.__esmodule)(); +(0, m1_1.__proto)(); +(0, m1_1._hi)(); diff --git a/tests/baselines/reference/importHelpers.js b/tests/baselines/reference/importHelpers.js index edc0aa2c58fa3..ce51113483d44 100644 --- a/tests/baselines/reference/importHelpers.js +++ b/tests/baselines/reference/importHelpers.js @@ -58,7 +58,7 @@ var A = /** @class */ (function () { }()); exports.A = A; var B = /** @class */ (function (_super) { - tslib_1.__extends(B, _super); + (0, tslib_1.__extends)(B, _super); function B() { return _super !== null && _super.apply(this, arguments) || this; } @@ -70,13 +70,13 @@ var C = /** @class */ (function () { } C.prototype.method = function (x) { }; - tslib_1.__decorate([ - tslib_1.__param(0, dec), - tslib_1.__metadata("design:type", Function), - tslib_1.__metadata("design:paramtypes", [Number]), - tslib_1.__metadata("design:returntype", void 0) + (0, tslib_1.__decorate)([ + (0, tslib_1.__param)(0, dec), + (0, tslib_1.__metadata)("design:type", Function), + (0, tslib_1.__metadata)("design:paramtypes", [Number]), + (0, tslib_1.__metadata)("design:returntype", void 0) ], C.prototype, "method", null); - C = tslib_1.__decorate([ + C = (0, tslib_1.__decorate)([ dec ], C); return C; @@ -84,7 +84,7 @@ var C = /** @class */ (function () { function id(x) { return x; } -exports.result = id(templateObject_1 || (templateObject_1 = tslib_1.__makeTemplateObject(["hello world"], ["hello world"]))); +exports.result = id(templateObject_1 || (templateObject_1 = (0, tslib_1.__makeTemplateObject)(["hello world"], ["hello world"]))); var templateObject_1; //// [script.js] var __extends = (this && this.__extends) || (function () { diff --git a/tests/baselines/reference/importHelpersAmd.js b/tests/baselines/reference/importHelpersAmd.js index a9307da888d96..9ed4ef5e5eec5 100644 --- a/tests/baselines/reference/importHelpersAmd.js +++ b/tests/baselines/reference/importHelpersAmd.js @@ -1,22 +1,22 @@ //// [tests/cases/compiler/importHelpersAmd.ts] //// //// [a.ts] -export class A { } +export class A { } //// [b.ts] -import { A } from "./a"; -export * from "./a"; -export class B extends A { } +import { A } from "./a"; +export * from "./a"; +export class B extends A { } //// [tslib.d.ts] -export declare function __extends(d: Function, b: Function): void; -export declare function __assign(t: any, ...sources: any[]): any; -export declare function __rest(t: any, propertyNames: string[]): any; -export declare function __decorate(decorators: Function[], target: any, key?: string | symbol, desc?: any): any; -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 __generator(thisArg: any, body: Function): any; +export declare function __extends(d: Function, b: Function): void; +export declare function __assign(t: any, ...sources: any[]): any; +export declare function __rest(t: any, propertyNames: string[]): any; +export declare function __decorate(decorators: Function[], target: any, key?: string | symbol, desc?: any): any; +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 __generator(thisArg: any, body: Function): any; export declare function __exportStar(m: any, exports: any): void; //// [a.js] @@ -36,9 +36,9 @@ define(["require", "exports", "tslib", "./a", "./a"], function (require, exports "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.B = void 0; - tslib_1.__exportStar(a_2, exports); + (0, tslib_1.__exportStar)(a_2, exports); var B = /** @class */ (function (_super) { - tslib_1.__extends(B, _super); + (0, tslib_1.__extends)(B, _super); function B() { return _super !== null && _super.apply(this, arguments) || this; } diff --git a/tests/baselines/reference/importHelpersInIsolatedModules.js b/tests/baselines/reference/importHelpersInIsolatedModules.js index a1153663006de..1770e108c3cb5 100644 --- a/tests/baselines/reference/importHelpersInIsolatedModules.js +++ b/tests/baselines/reference/importHelpersInIsolatedModules.js @@ -45,7 +45,7 @@ var A = /** @class */ (function () { }()); exports.A = A; var B = /** @class */ (function (_super) { - tslib_1.__extends(B, _super); + (0, tslib_1.__extends)(B, _super); function B() { return _super !== null && _super.apply(this, arguments) || this; } @@ -57,13 +57,13 @@ var C = /** @class */ (function () { } C.prototype.method = function (x) { }; - tslib_1.__decorate([ - tslib_1.__param(0, dec), - tslib_1.__metadata("design:type", Function), - tslib_1.__metadata("design:paramtypes", [Number]), - tslib_1.__metadata("design:returntype", void 0) + (0, tslib_1.__decorate)([ + (0, tslib_1.__param)(0, dec), + (0, tslib_1.__metadata)("design:type", Function), + (0, tslib_1.__metadata)("design:paramtypes", [Number]), + (0, tslib_1.__metadata)("design:returntype", void 0) ], C.prototype, "method", null); - C = tslib_1.__decorate([ + C = (0, tslib_1.__decorate)([ dec ], C); return C; @@ -76,7 +76,7 @@ var A = /** @class */ (function () { return A; }()); var B = /** @class */ (function (_super) { - tslib_1.__extends(B, _super); + (0, tslib_1.__extends)(B, _super); function B() { return _super !== null && _super.apply(this, arguments) || this; } @@ -87,13 +87,13 @@ var C = /** @class */ (function () { } C.prototype.method = function (x) { }; - tslib_1.__decorate([ - tslib_1.__param(0, dec), - tslib_1.__metadata("design:type", Function), - tslib_1.__metadata("design:paramtypes", [Number]), - tslib_1.__metadata("design:returntype", void 0) + (0, tslib_1.__decorate)([ + (0, tslib_1.__param)(0, dec), + (0, tslib_1.__metadata)("design:type", Function), + (0, tslib_1.__metadata)("design:paramtypes", [Number]), + (0, tslib_1.__metadata)("design:returntype", void 0) ], C.prototype, "method", null); - C = tslib_1.__decorate([ + C = (0, tslib_1.__decorate)([ dec ], C); return C; diff --git a/tests/baselines/reference/importHelpersInTsx.js b/tests/baselines/reference/importHelpersInTsx.js index 5005140e453aa..23cfaea610a8e 100644 --- a/tests/baselines/reference/importHelpersInTsx.js +++ b/tests/baselines/reference/importHelpersInTsx.js @@ -24,7 +24,7 @@ export declare function __awaiter(thisArg: any, _arguments: any, P: Function, ge Object.defineProperty(exports, "__esModule", { value: true }); exports.x = void 0; var tslib_1 = require("tslib"); -exports.x = React.createElement("span", tslib_1.__assign({}, o)); +exports.x = React.createElement("span", (0, tslib_1.__assign)({}, o)); //// [script.js] var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { diff --git a/tests/baselines/reference/importHelpersNoHelpers.js b/tests/baselines/reference/importHelpersNoHelpers.js index 23af5f3ca43e3..5290db5fafa27 100644 --- a/tests/baselines/reference/importHelpersNoHelpers.js +++ b/tests/baselines/reference/importHelpersNoHelpers.js @@ -46,7 +46,7 @@ exports.x = 1; Object.defineProperty(exports, "__esModule", { value: true }); exports.B = exports.A = void 0; var tslib_1 = require("tslib"); -tslib_1.__exportStar(require("./other"), exports); +(0, tslib_1.__exportStar)(require("./other"), exports); var A = /** @class */ (function () { function A() { } @@ -54,7 +54,7 @@ var A = /** @class */ (function () { }()); exports.A = A; var B = /** @class */ (function (_super) { - tslib_1.__extends(B, _super); + (0, tslib_1.__extends)(B, _super); function B() { return _super !== null && _super.apply(this, arguments) || this; } @@ -66,20 +66,20 @@ var C = /** @class */ (function () { } C.prototype.method = function (x) { }; - tslib_1.__decorate([ - tslib_1.__param(0, dec), - tslib_1.__metadata("design:type", Function), - tslib_1.__metadata("design:paramtypes", [Number]), - tslib_1.__metadata("design:returntype", void 0) + (0, tslib_1.__decorate)([ + (0, tslib_1.__param)(0, dec), + (0, tslib_1.__metadata)("design:type", Function), + (0, tslib_1.__metadata)("design:paramtypes", [Number]), + (0, tslib_1.__metadata)("design:returntype", void 0) ], C.prototype, "method", null); - C = tslib_1.__decorate([ + C = (0, tslib_1.__decorate)([ dec ], C); return C; }()); var o = { a: 1 }; -var y = tslib_1.__assign({}, o); -var x = tslib_1.__rest(y, []); +var y = (0, tslib_1.__assign)({}, o); +var x = (0, tslib_1.__rest)(y, []); //// [script.js] var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { diff --git a/tests/baselines/reference/importHelpersNoHelpersForAsyncGenerators.js b/tests/baselines/reference/importHelpersNoHelpersForAsyncGenerators.js index a63ad93ba3ca5..aa10c5221eae1 100644 --- a/tests/baselines/reference/importHelpersNoHelpersForAsyncGenerators.js +++ b/tests/baselines/reference/importHelpersNoHelpersForAsyncGenerators.js @@ -17,17 +17,17 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.f = void 0; var tslib_1 = require("tslib"); function f() { - return tslib_1.__asyncGenerator(this, arguments, function f_1() { - return tslib_1.__generator(this, function (_a) { + return (0, tslib_1.__asyncGenerator)(this, arguments, function f_1() { + return (0, tslib_1.__generator)(this, function (_a) { switch (_a.label) { - case 0: return [4 /*yield*/, tslib_1.__await(1)]; + case 0: return [4 /*yield*/, (0, tslib_1.__await)(1)]; case 1: _a.sent(); - return [4 /*yield*/, tslib_1.__await(2)]; + return [4 /*yield*/, (0, tslib_1.__await)(2)]; case 2: return [4 /*yield*/, _a.sent()]; case 3: _a.sent(); - return [5 /*yield**/, tslib_1.__values(tslib_1.__asyncDelegator(tslib_1.__asyncValues([3])))]; + return [5 /*yield**/, (0, tslib_1.__values)((0, tslib_1.__asyncDelegator)((0, tslib_1.__asyncValues)([3])))]; case 4: return [4 /*yield*/, tslib_1.__await.apply(void 0, [_a.sent()])]; case 5: _a.sent(); diff --git a/tests/baselines/reference/importHelpersNoModule.js b/tests/baselines/reference/importHelpersNoModule.js index b4a8fa89c1e4c..f50287ee705ca 100644 --- a/tests/baselines/reference/importHelpersNoModule.js +++ b/tests/baselines/reference/importHelpersNoModule.js @@ -37,7 +37,7 @@ var A = /** @class */ (function () { }()); exports.A = A; var B = /** @class */ (function (_super) { - tslib_1.__extends(B, _super); + (0, tslib_1.__extends)(B, _super); function B() { return _super !== null && _super.apply(this, arguments) || this; } @@ -49,13 +49,13 @@ var C = /** @class */ (function () { } C.prototype.method = function (x) { }; - tslib_1.__decorate([ - tslib_1.__param(0, dec), - tslib_1.__metadata("design:type", Function), - tslib_1.__metadata("design:paramtypes", [Number]), - tslib_1.__metadata("design:returntype", void 0) + (0, tslib_1.__decorate)([ + (0, tslib_1.__param)(0, dec), + (0, tslib_1.__metadata)("design:type", Function), + (0, tslib_1.__metadata)("design:paramtypes", [Number]), + (0, tslib_1.__metadata)("design:returntype", void 0) ], C.prototype, "method", null); - C = tslib_1.__decorate([ + C = (0, tslib_1.__decorate)([ dec ], C); return C; diff --git a/tests/baselines/reference/importHelpersOutFile.js b/tests/baselines/reference/importHelpersOutFile.js index 9e2266f1af930..fdb593592bd43 100644 --- a/tests/baselines/reference/importHelpersOutFile.js +++ b/tests/baselines/reference/importHelpersOutFile.js @@ -37,7 +37,7 @@ define("b", ["require", "exports", "tslib", "a"], function (require, exports, ts Object.defineProperty(exports, "__esModule", { value: true }); exports.B = void 0; var B = /** @class */ (function (_super) { - tslib_1.__extends(B, _super); + (0, tslib_1.__extends)(B, _super); function B() { return _super !== null && _super.apply(this, arguments) || this; } @@ -50,7 +50,7 @@ define("c", ["require", "exports", "tslib", "a"], function (require, exports, ts Object.defineProperty(exports, "__esModule", { value: true }); exports.C = void 0; var C = /** @class */ (function (_super) { - tslib_2.__extends(C, _super); + (0, tslib_2.__extends)(C, _super); function C() { return _super !== null && _super.apply(this, arguments) || this; } diff --git a/tests/baselines/reference/importHelpersWithLocalCollisions(module=amd).js b/tests/baselines/reference/importHelpersWithLocalCollisions(module=amd).js index 9f58b4b0da402..b3fcd7756ffc7 100644 --- a/tests/baselines/reference/importHelpersWithLocalCollisions(module=amd).js +++ b/tests/baselines/reference/importHelpersWithLocalCollisions(module=amd).js @@ -24,7 +24,7 @@ define(["require", "exports", "tslib"], function (require, exports, tslib_1) { exports.A = void 0; let A = class A { }; - A = tslib_1.__decorate([ + A = (0, tslib_1.__decorate)([ dec ], A); exports.A = A; diff --git a/tests/baselines/reference/importHelpersWithLocalCollisions(module=commonjs).js b/tests/baselines/reference/importHelpersWithLocalCollisions(module=commonjs).js index 8924252bf891d..b11f9bbcaa155 100644 --- a/tests/baselines/reference/importHelpersWithLocalCollisions(module=commonjs).js +++ b/tests/baselines/reference/importHelpersWithLocalCollisions(module=commonjs).js @@ -24,7 +24,7 @@ exports.A = void 0; const tslib_1 = require("tslib"); let A = class A { }; -A = tslib_1.__decorate([ +A = (0, tslib_1.__decorate)([ dec ], A); exports.A = A; diff --git a/tests/baselines/reference/importShouldNotBeElidedInDeclarationEmit.js b/tests/baselines/reference/importShouldNotBeElidedInDeclarationEmit.js index 3f1b154bede25..963c1cd73cc57 100644 --- a/tests/baselines/reference/importShouldNotBeElidedInDeclarationEmit.js +++ b/tests/baselines/reference/importShouldNotBeElidedInDeclarationEmit.js @@ -18,7 +18,7 @@ export const thing = makeThing(); exports.__esModule = true; exports.thing = void 0; var umd_1 = require("umd"); -exports.thing = umd_1.makeThing(); +exports.thing = (0, umd_1.makeThing)(); //// [index.d.ts] diff --git a/tests/baselines/reference/importTypeGenericArrowTypeParenthesized.js b/tests/baselines/reference/importTypeGenericArrowTypeParenthesized.js index d5132bd2d3b2c..2de796f19baf1 100644 --- a/tests/baselines/reference/importTypeGenericArrowTypeParenthesized.js +++ b/tests/baselines/reference/importTypeGenericArrowTypeParenthesized.js @@ -24,12 +24,12 @@ export const works2 = fn(x => x); exports.__esModule = true; exports.works2 = exports.works1 = exports.fail2 = exports.fail1 = void 0; var module_1 = require("module"); -exports.fail1 = module_1.fn(function (x) { return x; }); -exports.fail2 = module_1.fn(function (x) { +exports.fail1 = (0, module_1.fn)(function (x) { return x; }); +exports.fail2 = (0, module_1.fn)(function (x) { return x; }); -exports.works1 = module_1.fn(function (x) { return x; }); -exports.works2 = module_1.fn(function (x) { return x; }); +exports.works1 = (0, module_1.fn)(function (x) { return x; }); +exports.works2 = (0, module_1.fn)(function (x) { return x; }); //// [index.d.ts] diff --git a/tests/baselines/reference/inlineJsxFactoryDeclarations.js b/tests/baselines/reference/inlineJsxFactoryDeclarations.js index 9ed3d43d115b1..8d20c91c1edee 100644 --- a/tests/baselines/reference/inlineJsxFactoryDeclarations.js +++ b/tests/baselines/reference/inlineJsxFactoryDeclarations.js @@ -1,40 +1,40 @@ //// [tests/cases/conformance/jsx/inline/inlineJsxFactoryDeclarations.tsx] //// //// [renderer.d.ts] -declare global { - namespace JSX { - interface IntrinsicElements { - [e: string]: any; - } - } -} -export function dom(): void; -export function otherdom(): void; -export function createElement(): void; +declare global { + namespace JSX { + interface IntrinsicElements { + [e: string]: any; + } + } +} +export function dom(): void; +export function otherdom(): void; +export function createElement(): void; export { dom as default }; //// [otherreacty.tsx] -/** @jsx React.createElement */ -import * as React from "./renderer"; +/** @jsx React.createElement */ +import * as React from "./renderer"; //// [other.tsx] -/** @jsx h */ -import { dom as h } from "./renderer" +/** @jsx h */ +import { dom as h } from "./renderer" export const prerendered = ; //// [othernoalias.tsx] -/** @jsx otherdom */ -import { otherdom } from "./renderer" +/** @jsx otherdom */ +import { otherdom } from "./renderer" export const prerendered2 = ; //// [reacty.tsx] -import React from "./renderer" -export const prerendered3 = ; +import React from "./renderer" +export const prerendered3 = ; //// [index.tsx] -/** @jsx dom */ -import { dom } from "./renderer" - -export * from "./other"; -export * from "./othernoalias"; -export * from "./reacty"; +/** @jsx dom */ +import { dom } from "./renderer" + +export * from "./other"; +export * from "./othernoalias"; +export * from "./reacty"; //// [otherreacty.js] @@ -49,14 +49,14 @@ exports.__esModule = true; exports.prerendered = void 0; /** @jsx h */ var renderer_1 = require("./renderer"); -exports.prerendered = renderer_1.dom("h", null); +exports.prerendered = (0, renderer_1.dom)("h", null); //// [othernoalias.js] "use strict"; exports.__esModule = true; exports.prerendered2 = void 0; /** @jsx otherdom */ var renderer_1 = require("./renderer"); -exports.prerendered2 = renderer_1.otherdom("h", null); +exports.prerendered2 = (0, renderer_1.otherdom)("h", null); //// [reacty.js] "use strict"; exports.__esModule = true; @@ -78,7 +78,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) { exports.__esModule = true; /** @jsx dom */ var renderer_1 = require("./renderer"); -renderer_1.dom("h", null); +(0, renderer_1.dom)("h", null); __exportStar(require("./other"), exports); __exportStar(require("./othernoalias"), exports); __exportStar(require("./reacty"), exports); diff --git a/tests/baselines/reference/inlineJsxFactoryDeclarationsLocalTypes.js b/tests/baselines/reference/inlineJsxFactoryDeclarationsLocalTypes.js index 7b29740e7f9d6..805f5b7eb5e54 100644 --- a/tests/baselines/reference/inlineJsxFactoryDeclarationsLocalTypes.js +++ b/tests/baselines/reference/inlineJsxFactoryDeclarationsLocalTypes.js @@ -1,90 +1,90 @@ //// [tests/cases/conformance/jsx/inline/inlineJsxFactoryDeclarationsLocalTypes.tsx] //// //// [renderer.d.ts] -export namespace dom { - namespace JSX { - interface IntrinsicElements { - [e: string]: {}; - } - interface Element { - __domBrand: void; - props: { - children?: Element[]; - }; - } - interface ElementClass extends Element { - render(): Element; - } - interface ElementAttributesProperty { props: any; } - interface ElementChildrenAttribute { children: any; } - } -} +export namespace dom { + namespace JSX { + interface IntrinsicElements { + [e: string]: {}; + } + interface Element { + __domBrand: void; + props: { + children?: Element[]; + }; + } + interface ElementClass extends Element { + render(): Element; + } + interface ElementAttributesProperty { props: any; } + interface ElementChildrenAttribute { children: any; } + } +} export function dom(): dom.JSX.Element; //// [renderer2.d.ts] -export namespace predom { - namespace JSX { - interface IntrinsicElements { - [e: string]: {}; - } - interface Element { - __predomBrand: void; - props: { - children?: Element[]; - }; - } - interface ElementClass extends Element { - render(): Element; - } - interface ElementAttributesProperty { props: any; } - interface ElementChildrenAttribute { children: any; } - } -} +export namespace predom { + namespace JSX { + interface IntrinsicElements { + [e: string]: {}; + } + interface Element { + __predomBrand: void; + props: { + children?: Element[]; + }; + } + interface ElementClass extends Element { + render(): Element; + } + interface ElementAttributesProperty { props: any; } + interface ElementChildrenAttribute { children: any; } + } +} export function predom(): predom.JSX.Element; //// [component.tsx] -/** @jsx predom */ -import { predom } from "./renderer2" - -export const MySFC = (props: {x: number, y: number, children?: predom.JSX.Element[]}) =>

{props.x} + {props.y} = {props.x + props.y}{...this.props.children}

; - -export class MyClass implements predom.JSX.Element { - __predomBrand!: void; - constructor(public props: {x: number, y: number, children?: predom.JSX.Element[]}) {} - render() { - return

- {this.props.x} + {this.props.y} = {this.props.x + this.props.y} - {...this.props.children} -

; - } -} -export const tree = - -export default +/** @jsx predom */ +import { predom } from "./renderer2" + +export const MySFC = (props: {x: number, y: number, children?: predom.JSX.Element[]}) =>

{props.x} + {props.y} = {props.x + props.y}{...this.props.children}

; + +export class MyClass implements predom.JSX.Element { + __predomBrand!: void; + constructor(public props: {x: number, y: number, children?: predom.JSX.Element[]}) {} + render() { + return

+ {this.props.x} + {this.props.y} = {this.props.x + this.props.y} + {...this.props.children} +

; + } +} +export const tree = + +export default //// [index.tsx] -/** @jsx dom */ -import { dom } from "./renderer" -import prerendered, {MySFC, MyClass, tree} from "./component"; -let elem = prerendered; -elem = ; // Expect assignability error here - -const DOMSFC = (props: {x: number, y: number, children?: dom.JSX.Element[]}) =>

{props.x} + {props.y} = {props.x + props.y}{props.children}

; - -class DOMClass implements dom.JSX.Element { - __domBrand!: void; - constructor(public props: {x: number, y: number, children?: dom.JSX.Element[]}) {} - render() { - return

{this.props.x} + {this.props.y} = {this.props.x + this.props.y}{...this.props.children}

; - } -} - -// Should work, everything is a DOM element -const _tree = - -// Should fail, no dom elements -const _brokenTree = - -// Should fail, nondom isn't allowed as children of dom -const _brokenTree2 = {tree}{tree} +/** @jsx dom */ +import { dom } from "./renderer" +import prerendered, {MySFC, MyClass, tree} from "./component"; +let elem = prerendered; +elem = ; // Expect assignability error here + +const DOMSFC = (props: {x: number, y: number, children?: dom.JSX.Element[]}) =>

{props.x} + {props.y} = {props.x + props.y}{props.children}

; + +class DOMClass implements dom.JSX.Element { + __domBrand!: void; + constructor(public props: {x: number, y: number, children?: dom.JSX.Element[]}) {} + render() { + return

{this.props.x} + {this.props.y} = {this.props.x + this.props.y}{...this.props.children}

; + } +} + +// Should work, everything is a DOM element +const _tree = + +// Should fail, no dom elements +const _brokenTree = + +// Should fail, nondom isn't allowed as children of dom +const _brokenTree2 = {tree}{tree} //// [component.js] @@ -94,7 +94,7 @@ exports.__esModule = true; exports.tree = exports.MyClass = exports.MySFC = void 0; /** @jsx predom */ var renderer2_1 = require("./renderer2"); -var MySFC = function (props) { return renderer2_1.predom("p", null, +var MySFC = function (props) { return (0, renderer2_1.predom)("p", null, props.x, " + ", props.y, @@ -107,7 +107,7 @@ var MyClass = /** @class */ (function () { this.props = props; } MyClass.prototype.render = function () { - return renderer2_1.predom("p", null, + return (0, renderer2_1.predom)("p", null, this.props.x, " + ", this.props.y, @@ -118,10 +118,10 @@ var MyClass = /** @class */ (function () { return MyClass; }()); exports.MyClass = MyClass; -exports.tree = renderer2_1.predom(exports.MySFC, { x: 1, y: 2 }, - renderer2_1.predom(MyClass, { x: 3, y: 4 }), - renderer2_1.predom(MyClass, { x: 5, y: 6 })); -exports["default"] = renderer2_1.predom("h", null); +exports.tree = (0, renderer2_1.predom)(exports.MySFC, { x: 1, y: 2 }, + (0, renderer2_1.predom)(MyClass, { x: 3, y: 4 }), + (0, renderer2_1.predom)(MyClass, { x: 5, y: 6 })); +exports["default"] = (0, renderer2_1.predom)("h", null); //// [index.js] "use strict"; exports.__esModule = true; @@ -129,8 +129,8 @@ exports.__esModule = true; var renderer_1 = require("./renderer"); var component_1 = require("./component"); var elem = component_1["default"]; -elem = renderer_1.dom("h", null); // Expect assignability error here -var DOMSFC = function (props) { return renderer_1.dom("p", null, +elem = (0, renderer_1.dom)("h", null); // Expect assignability error here +var DOMSFC = function (props) { return (0, renderer_1.dom)("p", null, props.x, " + ", props.y, @@ -142,7 +142,7 @@ var DOMClass = /** @class */ (function () { this.props = props; } DOMClass.prototype.render = function () { - return renderer_1.dom("p", null, + return (0, renderer_1.dom)("p", null, this.props.x, " + ", this.props.y, @@ -153,14 +153,14 @@ var DOMClass = /** @class */ (function () { return DOMClass; }()); // Should work, everything is a DOM element -var _tree = renderer_1.dom(DOMSFC, { x: 1, y: 2 }, - renderer_1.dom(DOMClass, { x: 3, y: 4 }), - renderer_1.dom(DOMClass, { x: 5, y: 6 })); +var _tree = (0, renderer_1.dom)(DOMSFC, { x: 1, y: 2 }, + (0, renderer_1.dom)(DOMClass, { x: 3, y: 4 }), + (0, renderer_1.dom)(DOMClass, { x: 5, y: 6 })); // Should fail, no dom elements -var _brokenTree = renderer_1.dom(component_1.MySFC, { x: 1, y: 2 }, - renderer_1.dom(component_1.MyClass, { x: 3, y: 4 }), - renderer_1.dom(component_1.MyClass, { x: 5, y: 6 })); +var _brokenTree = (0, renderer_1.dom)(component_1.MySFC, { x: 1, y: 2 }, + (0, renderer_1.dom)(component_1.MyClass, { x: 3, y: 4 }), + (0, renderer_1.dom)(component_1.MyClass, { x: 5, y: 6 })); // Should fail, nondom isn't allowed as children of dom -var _brokenTree2 = renderer_1.dom(DOMSFC, { x: 1, y: 2 }, +var _brokenTree2 = (0, renderer_1.dom)(DOMSFC, { x: 1, y: 2 }, component_1.tree, component_1.tree); diff --git a/tests/baselines/reference/inlineJsxFactoryLocalTypeGlobalFallback.js b/tests/baselines/reference/inlineJsxFactoryLocalTypeGlobalFallback.js index 4f5123ed67ddf..ae85ac221d5e7 100644 --- a/tests/baselines/reference/inlineJsxFactoryLocalTypeGlobalFallback.js +++ b/tests/baselines/reference/inlineJsxFactoryLocalTypeGlobalFallback.js @@ -50,7 +50,7 @@ elem = ; // Expect assignability error here exports.__esModule = true; /** @jsx predom */ var renderer2_1 = require("./renderer2"); -exports["default"] = renderer2_1.predom("h", null); +exports["default"] = (0, renderer2_1.predom)("h", null); //// [index.js] "use strict"; exports.__esModule = true; @@ -58,4 +58,4 @@ exports.__esModule = true; var renderer_1 = require("./renderer"); var component_1 = require("./component"); var elem = component_1["default"]; -elem = renderer_1.dom("h", null); // Expect assignability error here +elem = (0, renderer_1.dom)("h", null); // Expect assignability error here diff --git a/tests/baselines/reference/inlineJsxFactoryOverridesCompilerOption.js b/tests/baselines/reference/inlineJsxFactoryOverridesCompilerOption.js index fef2e38ee3bd0..5dca782841485 100644 --- a/tests/baselines/reference/inlineJsxFactoryOverridesCompilerOption.js +++ b/tests/baselines/reference/inlineJsxFactoryOverridesCompilerOption.js @@ -24,9 +24,9 @@ import { p } from "./renderer"; exports.__esModule = true; /** @jsx dom */ var renderer_1 = require("./renderer"); -renderer_1.dom("h", null); +(0, renderer_1.dom)("h", null); //// [index.js] "use strict"; exports.__esModule = true; var renderer_1 = require("./renderer"); -renderer_1.p("h", null); +(0, renderer_1.p)("h", null); diff --git a/tests/baselines/reference/inlineJsxFactoryWithFragmentIsError.js b/tests/baselines/reference/inlineJsxFactoryWithFragmentIsError.js index 3af54bc04e600..4a828bb3e3504 100644 --- a/tests/baselines/reference/inlineJsxFactoryWithFragmentIsError.js +++ b/tests/baselines/reference/inlineJsxFactoryWithFragmentIsError.js @@ -31,5 +31,5 @@ React.createElement(React.Fragment, null, exports.__esModule = true; /** @jsx dom */ var renderer_1 = require("./renderer"); -renderer_1.dom(React.Fragment, null, - renderer_1.dom("h", null)); +(0, renderer_1.dom)(React.Fragment, null, + (0, renderer_1.dom)("h", null)); diff --git a/tests/baselines/reference/internalAliasFunctionInsideTopLevelModuleWithExport.js b/tests/baselines/reference/internalAliasFunctionInsideTopLevelModuleWithExport.js index 20aa97cd90f67..5f311fc5c7d52 100644 --- a/tests/baselines/reference/internalAliasFunctionInsideTopLevelModuleWithExport.js +++ b/tests/baselines/reference/internalAliasFunctionInsideTopLevelModuleWithExport.js @@ -23,7 +23,7 @@ define(["require", "exports"], function (require, exports) { a.foo = foo; })(a = exports.a || (exports.a = {})); exports.b = a.foo; - exports.bVal = exports.b(10); + exports.bVal = (0, exports.b)(10); exports.bVal2 = exports.b; }); diff --git a/tests/baselines/reference/javascriptCommonjsModule.js b/tests/baselines/reference/javascriptCommonjsModule.js index ab517f63805e1..d48362a1198d8 100644 --- a/tests/baselines/reference/javascriptCommonjsModule.js +++ b/tests/baselines/reference/javascriptCommonjsModule.js @@ -14,7 +14,7 @@ var Foo = /** @class */ (function () { return Foo; }()); var Bar = /** @class */ (function (_super) { - tslib_1.__extends(Bar, _super); + (0, tslib_1.__extends)(Bar, _super); function Bar() { return _super !== null && _super.apply(this, arguments) || this; } diff --git a/tests/baselines/reference/mixinIntersectionIsValidbaseType.js b/tests/baselines/reference/mixinIntersectionIsValidbaseType.js index 379449a03e358..2d250a33b9357 100644 --- a/tests/baselines/reference/mixinIntersectionIsValidbaseType.js +++ b/tests/baselines/reference/mixinIntersectionIsValidbaseType.js @@ -77,5 +77,5 @@ var AMixin = function (SuperClass) { return _super !== null && _super.apply(this, arguments) || this; } return A; - }(exports.Serializable(SuperClass))); + }((0, exports.Serializable)(SuperClass))); }; diff --git a/tests/baselines/reference/multipleDefaultExports01.js b/tests/baselines/reference/multipleDefaultExports01.js index 0156ff8c309c9..fbad2979f12f1 100644 --- a/tests/baselines/reference/multipleDefaultExports01.js +++ b/tests/baselines/reference/multipleDefaultExports01.js @@ -35,4 +35,4 @@ exports.default = x; "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var m1_1 = require("./m1"); -m1_1.default(); +(0, m1_1.default)(); diff --git a/tests/baselines/reference/multipleDefaultExports02.js b/tests/baselines/reference/multipleDefaultExports02.js index e2827120da2e6..78161d76c5cc4 100644 --- a/tests/baselines/reference/multipleDefaultExports02.js +++ b/tests/baselines/reference/multipleDefaultExports02.js @@ -27,4 +27,4 @@ exports.default = bar; "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var m1_1 = require("./m1"); -m1_1.default(); +(0, m1_1.default)(); diff --git a/tests/baselines/reference/outFilerootDirModuleNamesAmd.js b/tests/baselines/reference/outFilerootDirModuleNamesAmd.js index 29306773dab51..d785b4b68e7aa 100644 --- a/tests/baselines/reference/outFilerootDirModuleNamesAmd.js +++ b/tests/baselines/reference/outFilerootDirModuleNamesAmd.js @@ -27,5 +27,5 @@ define("a", ["require", "exports", "b"], function (require, exports, b_1) { class Foo { } exports.default = Foo; - b_1.default(); + (0, b_1.default)(); }); diff --git a/tests/baselines/reference/privacyTopLevelInternalReferenceImportWithExport.js b/tests/baselines/reference/privacyTopLevelInternalReferenceImportWithExport.js index a0ae015a62880..d871f8d3e080e 100644 --- a/tests/baselines/reference/privacyTopLevelInternalReferenceImportWithExport.js +++ b/tests/baselines/reference/privacyTopLevelInternalReferenceImportWithExport.js @@ -173,8 +173,8 @@ define(["require", "exports"], function (require, exports) { exports.publicUse_im_public_c_private = new exports.im_public_c_private(); var privateUse_im_public_e_private = exports.im_public_e_private.Happy; exports.publicUse_im_public_e_private = exports.im_public_e_private.Grumpy; - var privateUse_im_public_f_private = exports.im_public_f_private(); - exports.publicUse_im_public_f_private = exports.im_public_f_private(); + var privateUse_im_public_f_private = (0, exports.im_public_f_private)(); + exports.publicUse_im_public_f_private = (0, exports.im_public_f_private)(); var privateUse_im_public_v_private = exports.im_public_v_private; exports.publicUse_im_public_v_private = exports.im_public_v_private; var privateUse_im_public_i_private; @@ -192,8 +192,8 @@ define(["require", "exports"], function (require, exports) { exports.publicUse_im_public_c_public = new exports.im_public_c_public(); var privateUse_im_public_e_public = exports.im_public_e_public.Happy; exports.publicUse_im_public_e_public = exports.im_public_e_public.Grumpy; - var privateUse_im_public_f_public = exports.im_public_f_public(); - exports.publicUse_im_public_f_public = exports.im_public_f_public(); + var privateUse_im_public_f_public = (0, exports.im_public_f_public)(); + exports.publicUse_im_public_f_public = (0, exports.im_public_f_public)(); var privateUse_im_public_v_public = exports.im_public_v_public; exports.publicUse_im_public_v_public = exports.im_public_v_public; var privateUse_im_public_i_public; diff --git a/tests/baselines/reference/reExportDefaultExport.js b/tests/baselines/reference/reExportDefaultExport.js index 518f04f065ba8..3658e560f62b1 100644 --- a/tests/baselines/reference/reExportDefaultExport.js +++ b/tests/baselines/reference/reExportDefaultExport.js @@ -26,5 +26,5 @@ exports.f = f; Object.defineProperty(exports, "__esModule", { value: true }); var m1_1 = require("./m1"); var m1_2 = require("./m1"); -m1_2.f(); -m1_1.default(); +(0, m1_2.f)(); +(0, m1_1.default)(); diff --git a/tests/baselines/reference/reactTransitiveImportHasValidDeclaration.js b/tests/baselines/reference/reactTransitiveImportHasValidDeclaration.js index 526240701e324..1ac4b0dd6b45b 100644 --- a/tests/baselines/reference/reactTransitiveImportHasValidDeclaration.js +++ b/tests/baselines/reference/reactTransitiveImportHasValidDeclaration.js @@ -38,7 +38,7 @@ export default Form "use strict"; exports.__esModule = true; var react_emotion_1 = require("react-emotion"); -var Form = react_emotion_1["default"]('div')({ color: "red" }); +var Form = (0, react_emotion_1["default"])('div')({ color: "red" }); exports["default"] = Form; diff --git a/tests/baselines/reference/referenceTypesPreferedToPathIfPossible.js b/tests/baselines/reference/referenceTypesPreferedToPathIfPossible.js index 8d1d01af66bbc..2557c88a3f0ed 100644 --- a/tests/baselines/reference/referenceTypesPreferedToPathIfPossible.js +++ b/tests/baselines/reference/referenceTypesPreferedToPathIfPossible.js @@ -1,13 +1,13 @@ //// [tests/cases/compiler/referenceTypesPreferedToPathIfPossible.ts] //// //// [index.d.ts] -declare module "url" { - export class Url {} - export function parse(): Url; +declare module "url" { + export class Url {} + export function parse(): Url; } //// [usage.ts] -import { parse } from "url"; -export const thing = () => parse(); +import { parse } from "url"; +export const thing = () => parse(); //// [usage.js] @@ -15,7 +15,7 @@ export const thing = () => parse(); exports.__esModule = true; exports.thing = void 0; var url_1 = require("url"); -var thing = function () { return url_1.parse(); }; +var thing = function () { return 0, url_1.parse)(); }; exports.thing = thing; diff --git a/tests/baselines/reference/requireAsFunctionInExternalModule.js b/tests/baselines/reference/requireAsFunctionInExternalModule.js index 4f601f25d4169..d8a5e64fbae34 100644 --- a/tests/baselines/reference/requireAsFunctionInExternalModule.js +++ b/tests/baselines/reference/requireAsFunctionInExternalModule.js @@ -31,11 +31,11 @@ exports.hello = void 0; var c_1 = require("./c"); function hello() { } exports.hello = hello; -if (c_1.has('ember-debug')) { - c_1["default"]('ember-debug'); +if ((0, c_1.has)('ember-debug')) { + (0, c_1["default"])('ember-debug'); } //// [m2.js] "use strict"; exports.__esModule = true; var m_1 = require("./m"); -m_1.hello(); +(0, m_1.hello)(); diff --git a/tests/baselines/reference/taggedTemplateWithoutDeclaredHelper.js b/tests/baselines/reference/taggedTemplateWithoutDeclaredHelper.js index 94bb79802e5be..049e88373248c 100644 --- a/tests/baselines/reference/taggedTemplateWithoutDeclaredHelper.js +++ b/tests/baselines/reference/taggedTemplateWithoutDeclaredHelper.js @@ -19,5 +19,5 @@ var tslib_1 = require("tslib"); function id(x) { return x; } -exports.result = id(templateObject_1 || (templateObject_1 = tslib_1.__makeTemplateObject(["hello world"], ["hello world"]))); +exports.result = id(templateObject_1 || (templateObject_1 = (0, tslib_1.__makeTemplateObject)(["hello world"], ["hello world"]))); var templateObject_1; diff --git a/tests/baselines/reference/tsbuild/demo/initial-build/in-master-branch-with-everything-setup-correctly-and-reports-no-error.js b/tests/baselines/reference/tsbuild/demo/initial-build/in-master-branch-with-everything-setup-correctly-and-reports-no-error.js index d761f8eff2b2f..8ccbb7786ec74 100644 --- a/tests/baselines/reference/tsbuild/demo/initial-build/in-master-branch-with-everything-setup-correctly-and-reports-no-error.js +++ b/tests/baselines/reference/tsbuild/demo/initial-build/in-master-branch-with-everything-setup-correctly-and-reports-no-error.js @@ -198,7 +198,7 @@ function createDog() { woof: function () { console.log(this.name + " says \"Woof\"!"); }, - name: utilities_1.makeRandomName() + name: (0, utilities_1.makeRandomName)() }); } exports.createDog = createDog; @@ -444,7 +444,7 @@ exports.createZoo = void 0; var index_1 = require("../animals/index"); function createZoo() { return [ - index_1.createDog() + (0, index_1.createDog)() ]; } exports.createZoo = createZoo; diff --git a/tests/baselines/reference/tsbuild/inferredTypeFromTransitiveModule/initial-build/reports-errors-in-files-affected-by-change-in-signature-with-isolatedModules.js b/tests/baselines/reference/tsbuild/inferredTypeFromTransitiveModule/initial-build/reports-errors-in-files-affected-by-change-in-signature-with-isolatedModules.js index e33335a94d2b4..3aa61f45cd7c0 100644 --- a/tests/baselines/reference/tsbuild/inferredTypeFromTransitiveModule/initial-build/reports-errors-in-files-affected-by-change-in-signature-with-isolatedModules.js +++ b/tests/baselines/reference/tsbuild/inferredTypeFromTransitiveModule/initial-build/reports-errors-in-files-affected-by-change-in-signature-with-isolatedModules.js @@ -152,7 +152,7 @@ exports.bar = void 0; var bar_1 = require("./bar"); Object.defineProperty(exports, "bar", { enumerable: true, get: function () { return bar_1.default; } }); var bar_2 = require("./bar"); -bar_2.default("hello"); +(0, bar_2.default)("hello"); //// [/src/obj/tsconfig.tsbuildinfo] diff --git a/tests/baselines/reference/tsbuild/watchMode/demo/updates-with-circular-reference.js b/tests/baselines/reference/tsbuild/watchMode/demo/updates-with-circular-reference.js index 58d286de31824..3cb30a80ec7e2 100644 --- a/tests/baselines/reference/tsbuild/watchMode/demo/updates-with-circular-reference.js +++ b/tests/baselines/reference/tsbuild/watchMode/demo/updates-with-circular-reference.js @@ -413,7 +413,7 @@ function createDog() { woof: function () { console.log(this.name + " says \"Woof\"!"); }, - name: utilities_1.makeRandomName() + name: (0, utilities_1.makeRandomName)() }); } exports.createDog = createDog; @@ -510,7 +510,7 @@ exports.createZoo = void 0; var index_1 = require("../animals/index"); function createZoo() { return [ - index_1.createDog() + (0, index_1.createDog)() ]; } exports.createZoo = createZoo; diff --git a/tests/baselines/reference/tsbuild/watchMode/programUpdates/when-referenced-project-change-introduces-error-in-the-down-stream-project-and-then-fixes-it.js b/tests/baselines/reference/tsbuild/watchMode/programUpdates/when-referenced-project-change-introduces-error-in-the-down-stream-project-and-then-fixes-it.js index 7705f822aa087..7dd3e90516264 100644 --- a/tests/baselines/reference/tsbuild/watchMode/programUpdates/when-referenced-project-change-introduces-error-in-the-down-stream-project-and-then-fixes-it.js +++ b/tests/baselines/reference/tsbuild/watchMode/programUpdates/when-referenced-project-change-introduces-error-in-the-down-stream-project-and-then-fixes-it.js @@ -144,7 +144,7 @@ export {}; "use strict"; exports.__esModule = true; var library_1 = require("../Library/library"); -library_1.createSomeObject().message; +(0, library_1.createSomeObject)().message; diff --git a/tests/baselines/reference/tscWatch/emit/emit-file-content/should-emit-specified-file.js b/tests/baselines/reference/tscWatch/emit/emit-file-content/should-emit-specified-file.js index 28df814a86488..0992ff1eb14f4 100644 --- a/tests/baselines/reference/tscWatch/emit/emit-file-content/should-emit-specified-file.js +++ b/tests/baselines/reference/tscWatch/emit/emit-file-content/should-emit-specified-file.js @@ -12,26 +12,26 @@ import {y} from "./f2"; let x = y; {} //// [/a/lib/lib.d.ts] -/// -interface Boolean {} -interface Function {} -interface CallableFunction {} -interface NewableFunction {} -interface IArguments {} -interface Number { toExponential: any; } -interface Object {} -interface RegExp {} -interface String { charAt: any; } +/// +interface Boolean {} +interface Function {} +interface CallableFunction {} +interface NewableFunction {} +interface IArguments {} +interface Number { toExponential: any; } +interface Object {} +interface RegExp {} +interface String { charAt: any; } interface Array { length: number; [n: number]: T; } /a/lib/tsc.js -w -p /a/b/tsconfig.json Output:: >> Screen clear -[12:00:19 AM] Starting compilation in watch mode... - -[12:00:26 AM] Found 0 errors. Watching for file changes. - +[12:00:19 AM] Starting compilation in watch mode... + +[12:00:26 AM] Found 0 errors. Watching for file changes. + Program root files: ["/a/b/f1.ts","/a/b/f2.ts","/a/b/f3.ts"] @@ -72,26 +72,26 @@ FsWatchesRecursive:: exitCode:: ExitStatus.undefined //// [/a/b/f1.js] -"use strict"; -exports.__esModule = true; -exports.Foo = void 0; -function Foo() { return 10; } -exports.Foo = Foo; +"use strict"; +exports.__esModule = true; +exports.Foo = void 0; +function Foo() { return 10; } +exports.Foo = Foo; //// [/a/b/f2.js] -"use strict"; -exports.__esModule = true; -exports.y = void 0; -var f1_1 = require("./f1"); -exports.y = f1_1.Foo(); +"use strict"; +exports.__esModule = true; +exports.y = void 0; +var f1_1 = require("./f1"); +exports.y = f1_1.Foo(); //// [/a/b/f3.js] -"use strict"; -exports.__esModule = true; -var f2_1 = require("./f2"); -var x = f2_1.y; +"use strict"; +exports.__esModule = true; +var f2_1 = require("./f2"); +var x = f2_1.y; @@ -104,10 +104,10 @@ export function Foo() { return 10; }export function foo2() { return 2; } Output:: >> Screen clear -[12:00:29 AM] File change detected. Starting incremental compilation... - -[12:00:36 AM] Found 0 errors. Watching for file changes. - +[12:00:29 AM] File change detected. Starting incremental compilation... + +[12:00:36 AM] Found 0 errors. Watching for file changes. + Program root files: ["/a/b/f1.ts","/a/b/f2.ts","/a/b/f3.ts"] @@ -146,13 +146,13 @@ FsWatchesRecursive:: exitCode:: ExitStatus.undefined //// [/a/b/f1.js] -"use strict"; -exports.__esModule = true; -exports.foo2 = exports.Foo = void 0; -function Foo() { return 10; } -exports.Foo = Foo; -function foo2() { return 2; } -exports.foo2 = foo2; +"use strict"; +exports.__esModule = true; +exports.foo2 = exports.Foo = void 0; +function Foo() { return 10; } +exports.Foo = Foo; +function foo2() { return 2; } +exports.foo2 = foo2; //// [/a/b/f2.js] file written with same contents diff --git a/tests/baselines/reference/tscWatch/emit/emit-for-configured-projects/should-be-up-to-date-with-newly-created-files.js b/tests/baselines/reference/tscWatch/emit/emit-for-configured-projects/should-be-up-to-date-with-newly-created-files.js index 6e556207da1a8..bd77a7b0b1174 100644 --- a/tests/baselines/reference/tscWatch/emit/emit-for-configured-projects/should-be-up-to-date-with-newly-created-files.js +++ b/tests/baselines/reference/tscWatch/emit/emit-for-configured-projects/should-be-up-to-date-with-newly-created-files.js @@ -18,26 +18,26 @@ export var Foo4 = 10; {} //// [/a/lib/lib.d.ts] -/// -interface Boolean {} -interface Function {} -interface CallableFunction {} -interface NewableFunction {} -interface IArguments {} -interface Number { toExponential: any; } -interface Object {} -interface RegExp {} -interface String { charAt: any; } +/// +interface Boolean {} +interface Function {} +interface CallableFunction {} +interface NewableFunction {} +interface IArguments {} +interface Number { toExponential: any; } +interface Object {} +interface RegExp {} +interface String { charAt: any; } interface Array { length: number; [n: number]: T; } /a/lib/tsc.js --w -p /a/b/tsconfig.json Output:: >> Screen clear -[12:00:23 AM] Starting compilation in watch mode... - -[12:00:34 AM] Found 0 errors. Watching for file changes. - +[12:00:23 AM] Starting compilation in watch mode... + +[12:00:34 AM] Found 0 errors. Watching for file changes. + Program root files: ["/a/b/file1Consumer1.ts","/a/b/file1Consumer2.ts","/a/b/globalFile3.ts","/a/b/moduleFile1.ts","/a/b/moduleFile2.ts"] @@ -86,35 +86,35 @@ FsWatchesRecursive:: exitCode:: ExitStatus.undefined //// [/a/b/moduleFile1.js] -"use strict"; -exports.__esModule = true; -exports.Foo = void 0; -function Foo() { } -exports.Foo = Foo; -; +"use strict"; +exports.__esModule = true; +exports.Foo = void 0; +function Foo() { } +exports.Foo = Foo; +; //// [/a/b/file1Consumer1.js] -"use strict"; -exports.__esModule = true; -exports.y = void 0; -exports.y = 10; +"use strict"; +exports.__esModule = true; +exports.y = void 0; +exports.y = 10; //// [/a/b/file1Consumer2.js] -"use strict"; -exports.__esModule = true; -var z = 10; +"use strict"; +exports.__esModule = true; +var z = 10; //// [/a/b/globalFile3.js] //// [/a/b/moduleFile2.js] -"use strict"; -exports.__esModule = true; -exports.Foo4 = void 0; -exports.Foo4 = 10; +"use strict"; +exports.__esModule = true; +exports.Foo4 = void 0; +exports.Foo4 = 10; @@ -130,10 +130,10 @@ import {Foo} from "./moduleFile1"; let y = Foo(); Output:: >> Screen clear -[12:00:40 AM] File change detected. Starting incremental compilation... - -[12:00:52 AM] Found 0 errors. Watching for file changes. - +[12:00:40 AM] File change detected. Starting incremental compilation... + +[12:00:52 AM] Found 0 errors. Watching for file changes. + Program root files: ["/a/b/file1Consumer1.ts","/a/b/file1Consumer2.ts","/a/b/file1Consumer3.ts","/a/b/globalFile3.ts","/a/b/moduleFile1.ts","/a/b/moduleFile2.ts"] @@ -183,20 +183,20 @@ FsWatchesRecursive:: exitCode:: ExitStatus.undefined //// [/a/b/moduleFile1.js] -"use strict"; -exports.__esModule = true; -exports.Foo = exports.T = void 0; -function Foo() { } -exports.Foo = Foo; -; +"use strict"; +exports.__esModule = true; +exports.Foo = exports.T = void 0; +function Foo() { } +exports.Foo = Foo; +; //// [/a/b/file1Consumer1.js] file written with same contents //// [/a/b/file1Consumer2.js] file written with same contents //// [/a/b/file1Consumer3.js] -"use strict"; -exports.__esModule = true; -var moduleFile1_1 = require("./moduleFile1"); -var y = moduleFile1_1.Foo(); +"use strict"; +exports.__esModule = true; +var moduleFile1_1 = require("./moduleFile1"); +var y = moduleFile1_1.Foo(); diff --git a/tests/baselines/reference/tscWatch/emit/emit-for-configured-projects/should-be-up-to-date-with-the-reference-map-changes.js b/tests/baselines/reference/tscWatch/emit/emit-for-configured-projects/should-be-up-to-date-with-the-reference-map-changes.js index 9b192cfe4d367..570f684ad20ad 100644 --- a/tests/baselines/reference/tscWatch/emit/emit-for-configured-projects/should-be-up-to-date-with-the-reference-map-changes.js +++ b/tests/baselines/reference/tscWatch/emit/emit-for-configured-projects/should-be-up-to-date-with-the-reference-map-changes.js @@ -18,26 +18,26 @@ export var Foo4 = 10; {} //// [/a/lib/lib.d.ts] -/// -interface Boolean {} -interface Function {} -interface CallableFunction {} -interface NewableFunction {} -interface IArguments {} -interface Number { toExponential: any; } -interface Object {} -interface RegExp {} -interface String { charAt: any; } +/// +interface Boolean {} +interface Function {} +interface CallableFunction {} +interface NewableFunction {} +interface IArguments {} +interface Number { toExponential: any; } +interface Object {} +interface RegExp {} +interface String { charAt: any; } interface Array { length: number; [n: number]: T; } /a/lib/tsc.js --w -p /a/b/tsconfig.json Output:: >> Screen clear -[12:00:23 AM] Starting compilation in watch mode... - -[12:00:34 AM] Found 0 errors. Watching for file changes. - +[12:00:23 AM] Starting compilation in watch mode... + +[12:00:34 AM] Found 0 errors. Watching for file changes. + Program root files: ["/a/b/file1Consumer1.ts","/a/b/file1Consumer2.ts","/a/b/globalFile3.ts","/a/b/moduleFile1.ts","/a/b/moduleFile2.ts"] @@ -86,35 +86,35 @@ FsWatchesRecursive:: exitCode:: ExitStatus.undefined //// [/a/b/moduleFile1.js] -"use strict"; -exports.__esModule = true; -exports.Foo = void 0; -function Foo() { } -exports.Foo = Foo; -; +"use strict"; +exports.__esModule = true; +exports.Foo = void 0; +function Foo() { } +exports.Foo = Foo; +; //// [/a/b/file1Consumer1.js] -"use strict"; -exports.__esModule = true; -exports.y = void 0; -exports.y = 10; +"use strict"; +exports.__esModule = true; +exports.y = void 0; +exports.y = 10; //// [/a/b/file1Consumer2.js] -"use strict"; -exports.__esModule = true; -var z = 10; +"use strict"; +exports.__esModule = true; +var z = 10; //// [/a/b/globalFile3.js] //// [/a/b/moduleFile2.js] -"use strict"; -exports.__esModule = true; -exports.Foo4 = void 0; -exports.Foo4 = 10; +"use strict"; +exports.__esModule = true; +exports.Foo4 = void 0; +exports.Foo4 = 10; @@ -127,15 +127,15 @@ export let y = Foo(); Output:: >> Screen clear -[12:00:38 AM] File change detected. Starting incremental compilation... - -a/b/file1Consumer1.ts:1:16 - error TS2304: Cannot find name 'Foo'. - -1 export let y = Foo(); -   ~~~ - -[12:00:42 AM] Found 1 error. Watching for file changes. - +[12:00:38 AM] File change detected. Starting incremental compilation... + +a/b/file1Consumer1.ts:1:16 - error TS2304: Cannot find name 'Foo'. + +1 export let y = Foo(); +   ~~~ + +[12:00:42 AM] Found 1 error. Watching for file changes. + Program root files: ["/a/b/file1Consumer1.ts","/a/b/file1Consumer2.ts","/a/b/globalFile3.ts","/a/b/moduleFile1.ts","/a/b/moduleFile2.ts"] @@ -179,10 +179,10 @@ FsWatchesRecursive:: exitCode:: ExitStatus.undefined //// [/a/b/file1Consumer1.js] -"use strict"; -exports.__esModule = true; -exports.y = void 0; -exports.y = Foo(); +"use strict"; +exports.__esModule = true; +exports.y = void 0; +exports.y = Foo(); @@ -195,15 +195,15 @@ export var T: number;export function Foo() { }; Output:: >> Screen clear -[12:00:46 AM] File change detected. Starting incremental compilation... - -a/b/file1Consumer1.ts:1:16 - error TS2304: Cannot find name 'Foo'. - -1 export let y = Foo(); -   ~~~ - -[12:00:53 AM] Found 1 error. Watching for file changes. - +[12:00:46 AM] File change detected. Starting incremental compilation... + +a/b/file1Consumer1.ts:1:16 - error TS2304: Cannot find name 'Foo'. + +1 export let y = Foo(); +   ~~~ + +[12:00:53 AM] Found 1 error. Watching for file changes. + Program root files: ["/a/b/file1Consumer1.ts","/a/b/file1Consumer2.ts","/a/b/globalFile3.ts","/a/b/moduleFile1.ts","/a/b/moduleFile2.ts"] @@ -248,12 +248,12 @@ FsWatchesRecursive:: exitCode:: ExitStatus.undefined //// [/a/b/moduleFile1.js] -"use strict"; -exports.__esModule = true; -exports.Foo = exports.T = void 0; -function Foo() { } -exports.Foo = Foo; -; +"use strict"; +exports.__esModule = true; +exports.Foo = exports.T = void 0; +function Foo() { } +exports.Foo = Foo; +; //// [/a/b/file1Consumer2.js] file written with same contents @@ -267,10 +267,10 @@ import {Foo} from "./moduleFile1";let y = Foo(); Output:: >> Screen clear -[12:00:57 AM] File change detected. Starting incremental compilation... - -[12:01:01 AM] Found 0 errors. Watching for file changes. - +[12:00:57 AM] File change detected. Starting incremental compilation... + +[12:01:01 AM] Found 0 errors. Watching for file changes. + Program root files: ["/a/b/file1Consumer1.ts","/a/b/file1Consumer2.ts","/a/b/globalFile3.ts","/a/b/moduleFile1.ts","/a/b/moduleFile2.ts"] @@ -314,10 +314,10 @@ FsWatchesRecursive:: exitCode:: ExitStatus.undefined //// [/a/b/file1Consumer1.js] -"use strict"; -exports.__esModule = true; -var moduleFile1_1 = require("./moduleFile1"); -var y = moduleFile1_1.Foo(); +"use strict"; +exports.__esModule = true; +var moduleFile1_1 = require("./moduleFile1"); +var y = moduleFile1_1.Foo(); @@ -330,25 +330,25 @@ export let y = Foo(); Output:: >> Screen clear -[12:01:05 AM] File change detected. Starting incremental compilation... - -a/b/file1Consumer1.ts:1:9 - error TS2305: Module '"./moduleFile1"' has no exported member 'Foo'. - -1 import {Foo} from "./moduleFile1";let y = Foo(); -   ~~~ - -a/b/file1Consumer2.ts:1:9 - error TS2305: Module '"./moduleFile1"' has no exported member 'Foo'. - -1 import {Foo} from "./moduleFile1"; let z = 10; -   ~~~ - -a/b/moduleFile1.ts:1:16 - error TS2304: Cannot find name 'Foo'. - -1 export let y = Foo(); -   ~~~ - -[12:01:15 AM] Found 3 errors. Watching for file changes. - +[12:01:05 AM] File change detected. Starting incremental compilation... + +a/b/file1Consumer1.ts:1:9 - error TS2305: Module '"./moduleFile1"' has no exported member 'Foo'. + +1 import {Foo} from "./moduleFile1";let y = Foo(); +   ~~~ + +a/b/file1Consumer2.ts:1:9 - error TS2305: Module '"./moduleFile1"' has no exported member 'Foo'. + +1 import {Foo} from "./moduleFile1"; let z = 10; +   ~~~ + +a/b/moduleFile1.ts:1:16 - error TS2304: Cannot find name 'Foo'. + +1 export let y = Foo(); +   ~~~ + +[12:01:15 AM] Found 3 errors. Watching for file changes. + Program root files: ["/a/b/file1Consumer1.ts","/a/b/file1Consumer2.ts","/a/b/globalFile3.ts","/a/b/moduleFile1.ts","/a/b/moduleFile2.ts"] @@ -394,10 +394,10 @@ FsWatchesRecursive:: exitCode:: ExitStatus.undefined //// [/a/b/moduleFile1.js] -"use strict"; -exports.__esModule = true; -exports.y = void 0; -exports.y = Foo(); +"use strict"; +exports.__esModule = true; +exports.y = void 0; +exports.y = Foo(); //// [/a/b/file1Consumer1.js] file written with same contents @@ -413,10 +413,10 @@ export var T: number;export function Foo() { }; Output:: >> Screen clear -[12:01:22 AM] File change detected. Starting incremental compilation... - -[12:01:32 AM] Found 0 errors. Watching for file changes. - +[12:01:22 AM] File change detected. Starting incremental compilation... + +[12:01:32 AM] Found 0 errors. Watching for file changes. + Program root files: ["/a/b/file1Consumer1.ts","/a/b/file1Consumer2.ts","/a/b/globalFile3.ts","/a/b/moduleFile1.ts","/a/b/moduleFile2.ts"] @@ -462,12 +462,12 @@ FsWatchesRecursive:: exitCode:: ExitStatus.undefined //// [/a/b/moduleFile1.js] -"use strict"; -exports.__esModule = true; -exports.Foo = exports.T = void 0; -function Foo() { } -exports.Foo = Foo; -; +"use strict"; +exports.__esModule = true; +exports.Foo = exports.T = void 0; +function Foo() { } +exports.Foo = Foo; +; //// [/a/b/file1Consumer1.js] file written with same contents diff --git a/tests/baselines/reference/tscWatch/emitAndErrorUpdates/default/file-not-exporting-a-deep-multilevel-import-that-changes.js b/tests/baselines/reference/tscWatch/emitAndErrorUpdates/default/file-not-exporting-a-deep-multilevel-import-that-changes.js index cc4655af48b3c..01a1d3d1e0490 100644 --- a/tests/baselines/reference/tscWatch/emitAndErrorUpdates/default/file-not-exporting-a-deep-multilevel-import-that-changes.js +++ b/tests/baselines/reference/tscWatch/emitAndErrorUpdates/default/file-not-exporting-a-deep-multilevel-import-that-changes.js @@ -1,33 +1,33 @@ Input:: //// [/user/username/projects/myproject/a.ts] -export interface Point { - name: string; - c: Coords; -} -export interface Coords { - x2: number; - y: number; +export interface Point { + name: string; + c: Coords; +} +export interface Coords { + x2: number; + y: number; } //// [/user/username/projects/myproject/b.ts] -import { Point } from "./a"; -export interface PointWrapper extends Point { +import { Point } from "./a"; +export interface PointWrapper extends Point { } //// [/user/username/projects/myproject/c.ts] -import { PointWrapper } from "./b"; -export function getPoint(): PointWrapper { - return { - name: "test", - c: { - x: 1, - y: 2 - } - } +import { PointWrapper } from "./b"; +export function getPoint(): PointWrapper { + return { + name: "test", + c: { + x: 1, + y: 2 + } + } }; //// [/user/username/projects/myproject/d.ts] -import { getPoint } from "./c"; +import { getPoint } from "./c"; getPoint().c.x; //// [/user/username/projects/myproject/e.ts] @@ -37,42 +37,42 @@ import "./d"; {} //// [/a/lib/lib.d.ts] -/// -interface Boolean {} -interface Function {} -interface CallableFunction {} -interface NewableFunction {} -interface IArguments {} -interface Number { toExponential: any; } -interface Object {} -interface RegExp {} -interface String { charAt: any; } +/// +interface Boolean {} +interface Function {} +interface CallableFunction {} +interface NewableFunction {} +interface IArguments {} +interface Number { toExponential: any; } +interface Object {} +interface RegExp {} +interface String { charAt: any; } interface Array { length: number; [n: number]: T; } /a/lib/tsc.js --w Output:: >> Screen clear -[12:00:29 AM] Starting compilation in watch mode... - -c.ts:6:13 - error TS2322: Type '{ x: number; y: number; }' is not assignable to type 'Coords'. - Object literal may only specify known properties, and 'x' does not exist in type 'Coords'. - -6 x: 1, -   ~~~~ - - a.ts:3:5 - 3 c: Coords; -    ~ - The expected type comes from property 'c' which is declared here on type 'PointWrapper' - -d.ts:2:14 - error TS2339: Property 'x' does not exist on type 'Coords'. - -2 getPoint().c.x; -   ~ - -[12:00:40 AM] Found 2 errors. Watching for file changes. - +[12:00:29 AM] Starting compilation in watch mode... + +c.ts:6:13 - error TS2322: Type '{ x: number; y: number; }' is not assignable to type 'Coords'. + Object literal may only specify known properties, and 'x' does not exist in type 'Coords'. + +6 x: 1, +   ~~~~ + + a.ts:3:5 + 3 c: Coords; +    ~ + The expected type comes from property 'c' which is declared here on type 'PointWrapper' + +d.ts:2:14 - error TS2339: Property 'x' does not exist on type 'Coords'. + +2 getPoint().c.x; +   ~ + +[12:00:40 AM] Found 2 errors. Watching for file changes. + Program root files: ["/user/username/projects/myproject/a.ts","/user/username/projects/myproject/b.ts","/user/username/projects/myproject/c.ts","/user/username/projects/myproject/d.ts","/user/username/projects/myproject/e.ts"] @@ -121,43 +121,43 @@ FsWatchesRecursive:: exitCode:: ExitStatus.undefined //// [/user/username/projects/myproject/a.js] -"use strict"; -exports.__esModule = true; +"use strict"; +exports.__esModule = true; //// [/user/username/projects/myproject/b.js] -"use strict"; -exports.__esModule = true; +"use strict"; +exports.__esModule = true; //// [/user/username/projects/myproject/c.js] -"use strict"; -exports.__esModule = true; -exports.getPoint = void 0; -function getPoint() { - return { - name: "test", - c: { - x: 1, - y: 2 - } - }; -} -exports.getPoint = getPoint; -; +"use strict"; +exports.__esModule = true; +exports.getPoint = void 0; +function getPoint() { + return { + name: "test", + c: { + x: 1, + y: 2 + } + }; +} +exports.getPoint = getPoint; +; //// [/user/username/projects/myproject/d.js] -"use strict"; -exports.__esModule = true; -var c_1 = require("./c"); -c_1.getPoint().c.x; +"use strict"; +exports.__esModule = true; +var c_1 = require("./c"); +(0, c_1.getPoint)().c.x; //// [/user/username/projects/myproject/e.js] -"use strict"; -exports.__esModule = true; -require("./d"); +"use strict"; +exports.__esModule = true; +require("./d"); @@ -165,22 +165,22 @@ Change:: Rename property x2 to x of interface Coords Input:: //// [/user/username/projects/myproject/a.ts] -export interface Point { - name: string; - c: Coords; -} -export interface Coords { - x: number; - y: number; +export interface Point { + name: string; + c: Coords; +} +export interface Coords { + x: number; + y: number; } Output:: >> Screen clear -[12:00:44 AM] File change detected. Starting incremental compilation... - -[12:00:51 AM] Found 0 errors. Watching for file changes. - +[12:00:44 AM] File change detected. Starting incremental compilation... + +[12:00:51 AM] Found 0 errors. Watching for file changes. + Program root files: ["/user/username/projects/myproject/a.ts","/user/username/projects/myproject/b.ts","/user/username/projects/myproject/c.ts","/user/username/projects/myproject/d.ts","/user/username/projects/myproject/e.ts"] diff --git a/tests/baselines/reference/tscWatch/emitAndErrorUpdates/defaultAndD/file-not-exporting-a-deep-multilevel-import-that-changes.js b/tests/baselines/reference/tscWatch/emitAndErrorUpdates/defaultAndD/file-not-exporting-a-deep-multilevel-import-that-changes.js index 80a7a015d00e5..e16b35760a743 100644 --- a/tests/baselines/reference/tscWatch/emitAndErrorUpdates/defaultAndD/file-not-exporting-a-deep-multilevel-import-that-changes.js +++ b/tests/baselines/reference/tscWatch/emitAndErrorUpdates/defaultAndD/file-not-exporting-a-deep-multilevel-import-that-changes.js @@ -173,7 +173,7 @@ export declare function getPoint(): PointWrapper; "use strict"; exports.__esModule = true; var c_1 = require("./c"); -c_1.getPoint().c.x; +(0, c_1.getPoint)().c.x; //// [/user/username/projects/myproject/d.d.ts] diff --git a/tests/baselines/reference/tscWatch/emitAndErrorUpdates/isolatedModules/file-not-exporting-a-deep-multilevel-import-that-changes.js b/tests/baselines/reference/tscWatch/emitAndErrorUpdates/isolatedModules/file-not-exporting-a-deep-multilevel-import-that-changes.js index 6d2e6b74e22df..f99f26d00bb02 100644 --- a/tests/baselines/reference/tscWatch/emitAndErrorUpdates/isolatedModules/file-not-exporting-a-deep-multilevel-import-that-changes.js +++ b/tests/baselines/reference/tscWatch/emitAndErrorUpdates/isolatedModules/file-not-exporting-a-deep-multilevel-import-that-changes.js @@ -1,33 +1,33 @@ Input:: //// [/user/username/projects/myproject/a.ts] -export interface Point { - name: string; - c: Coords; -} -export interface Coords { - x2: number; - y: number; +export interface Point { + name: string; + c: Coords; +} +export interface Coords { + x2: number; + y: number; } //// [/user/username/projects/myproject/b.ts] -import { Point } from "./a"; -export interface PointWrapper extends Point { +import { Point } from "./a"; +export interface PointWrapper extends Point { } //// [/user/username/projects/myproject/c.ts] -import { PointWrapper } from "./b"; -export function getPoint(): PointWrapper { - return { - name: "test", - c: { - x: 1, - y: 2 - } - } +import { PointWrapper } from "./b"; +export function getPoint(): PointWrapper { + return { + name: "test", + c: { + x: 1, + y: 2 + } + } }; //// [/user/username/projects/myproject/d.ts] -import { getPoint } from "./c"; +import { getPoint } from "./c"; getPoint().c.x; //// [/user/username/projects/myproject/e.ts] @@ -37,42 +37,42 @@ import "./d"; {"compilerOptions":{"isolatedModules":true}} //// [/a/lib/lib.d.ts] -/// -interface Boolean {} -interface Function {} -interface CallableFunction {} -interface NewableFunction {} -interface IArguments {} -interface Number { toExponential: any; } -interface Object {} -interface RegExp {} -interface String { charAt: any; } +/// +interface Boolean {} +interface Function {} +interface CallableFunction {} +interface NewableFunction {} +interface IArguments {} +interface Number { toExponential: any; } +interface Object {} +interface RegExp {} +interface String { charAt: any; } interface Array { length: number; [n: number]: T; } /a/lib/tsc.js --w Output:: >> Screen clear -[12:00:29 AM] Starting compilation in watch mode... - -c.ts:6:13 - error TS2322: Type '{ x: number; y: number; }' is not assignable to type 'Coords'. - Object literal may only specify known properties, and 'x' does not exist in type 'Coords'. - -6 x: 1, -   ~~~~ - - a.ts:3:5 - 3 c: Coords; -    ~ - The expected type comes from property 'c' which is declared here on type 'PointWrapper' - -d.ts:2:14 - error TS2339: Property 'x' does not exist on type 'Coords'. - -2 getPoint().c.x; -   ~ - -[12:00:40 AM] Found 2 errors. Watching for file changes. - +[12:00:29 AM] Starting compilation in watch mode... + +c.ts:6:13 - error TS2322: Type '{ x: number; y: number; }' is not assignable to type 'Coords'. + Object literal may only specify known properties, and 'x' does not exist in type 'Coords'. + +6 x: 1, +   ~~~~ + + a.ts:3:5 + 3 c: Coords; +    ~ + The expected type comes from property 'c' which is declared here on type 'PointWrapper' + +d.ts:2:14 - error TS2339: Property 'x' does not exist on type 'Coords'. + +2 getPoint().c.x; +   ~ + +[12:00:40 AM] Found 2 errors. Watching for file changes. + Program root files: ["/user/username/projects/myproject/a.ts","/user/username/projects/myproject/b.ts","/user/username/projects/myproject/c.ts","/user/username/projects/myproject/d.ts","/user/username/projects/myproject/e.ts"] @@ -121,43 +121,43 @@ FsWatchesRecursive:: exitCode:: ExitStatus.undefined //// [/user/username/projects/myproject/a.js] -"use strict"; -exports.__esModule = true; +"use strict"; +exports.__esModule = true; //// [/user/username/projects/myproject/b.js] -"use strict"; -exports.__esModule = true; +"use strict"; +exports.__esModule = true; //// [/user/username/projects/myproject/c.js] -"use strict"; -exports.__esModule = true; -exports.getPoint = void 0; -function getPoint() { - return { - name: "test", - c: { - x: 1, - y: 2 - } - }; -} -exports.getPoint = getPoint; -; +"use strict"; +exports.__esModule = true; +exports.getPoint = void 0; +function getPoint() { + return { + name: "test", + c: { + x: 1, + y: 2 + } + }; +} +exports.getPoint = getPoint; +; //// [/user/username/projects/myproject/d.js] -"use strict"; -exports.__esModule = true; -var c_1 = require("./c"); -c_1.getPoint().c.x; +"use strict"; +exports.__esModule = true; +var c_1 = require("./c"); +(0, c_1.getPoint)().c.x; //// [/user/username/projects/myproject/e.js] -"use strict"; -exports.__esModule = true; -require("./d"); +"use strict"; +exports.__esModule = true; +require("./d"); @@ -165,22 +165,22 @@ Change:: Rename property x2 to x of interface Coords Input:: //// [/user/username/projects/myproject/a.ts] -export interface Point { - name: string; - c: Coords; -} -export interface Coords { - x: number; - y: number; +export interface Point { + name: string; + c: Coords; +} +export interface Coords { + x: number; + y: number; } Output:: >> Screen clear -[12:00:44 AM] File change detected. Starting incremental compilation... - -[12:00:48 AM] Found 0 errors. Watching for file changes. - +[12:00:44 AM] File change detected. Starting incremental compilation... + +[12:00:48 AM] Found 0 errors. Watching for file changes. + Program root files: ["/user/username/projects/myproject/a.ts","/user/username/projects/myproject/b.ts","/user/username/projects/myproject/c.ts","/user/username/projects/myproject/d.ts","/user/username/projects/myproject/e.ts"] diff --git a/tests/baselines/reference/tscWatch/emitAndErrorUpdates/isolatedModulesAndD/file-not-exporting-a-deep-multilevel-import-that-changes.js b/tests/baselines/reference/tscWatch/emitAndErrorUpdates/isolatedModulesAndD/file-not-exporting-a-deep-multilevel-import-that-changes.js index 8a4166dc393c4..4731c961a3684 100644 --- a/tests/baselines/reference/tscWatch/emitAndErrorUpdates/isolatedModulesAndD/file-not-exporting-a-deep-multilevel-import-that-changes.js +++ b/tests/baselines/reference/tscWatch/emitAndErrorUpdates/isolatedModulesAndD/file-not-exporting-a-deep-multilevel-import-that-changes.js @@ -173,7 +173,7 @@ export declare function getPoint(): PointWrapper; "use strict"; exports.__esModule = true; var c_1 = require("./c"); -c_1.getPoint().c.x; +(0, c_1.getPoint)().c.x; //// [/user/username/projects/myproject/d.d.ts] diff --git a/tests/baselines/reference/typeReferenceDirectives8.js b/tests/baselines/reference/typeReferenceDirectives8.js index d681489fbfc62..8937c5c720155 100644 --- a/tests/baselines/reference/typeReferenceDirectives8.js +++ b/tests/baselines/reference/typeReferenceDirectives8.js @@ -21,7 +21,7 @@ exports.foo = foo; exports.__esModule = true; exports.bar = void 0; var mod1_1 = require("./mod1"); -exports.bar = mod1_1.foo(); +exports.bar = (0, mod1_1.foo)(); //// [mod1.d.ts] diff --git a/tests/baselines/reference/typesVersionsDeclarationEmit.ambient.js b/tests/baselines/reference/typesVersionsDeclarationEmit.ambient.js index aaba9b80985fb..ffb0a9f5a16c5 100644 --- a/tests/baselines/reference/typesVersionsDeclarationEmit.ambient.js +++ b/tests/baselines/reference/typesVersionsDeclarationEmit.ambient.js @@ -43,8 +43,8 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.vb = exports.va = void 0; const ext_1 = require("ext"); const other_1 = require("ext/other"); -exports.va = ext_1.fa(); -exports.vb = other_1.fb(); +exports.va = (0, ext_1.fa)(); +exports.vb = (0, other_1.fb)(); //// [main.d.ts] diff --git a/tests/baselines/reference/typesVersionsDeclarationEmit.multiFile.js b/tests/baselines/reference/typesVersionsDeclarationEmit.multiFile.js index 41a3f8e52423d..0acfb030d56a3 100644 --- a/tests/baselines/reference/typesVersionsDeclarationEmit.multiFile.js +++ b/tests/baselines/reference/typesVersionsDeclarationEmit.multiFile.js @@ -40,8 +40,8 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.vb = exports.va = void 0; const ext_1 = require("ext"); const other_1 = require("ext/other"); -exports.va = ext_1.fa(); -exports.vb = other_1.fb(); +exports.va = (0, ext_1.fa)(); +exports.vb = (0, other_1.fb)(); //// [main.d.ts] diff --git a/tests/baselines/reference/typesVersionsDeclarationEmit.multiFileBackReferenceToSelf.js b/tests/baselines/reference/typesVersionsDeclarationEmit.multiFileBackReferenceToSelf.js index 9e059b310de29..d620756395745 100644 --- a/tests/baselines/reference/typesVersionsDeclarationEmit.multiFileBackReferenceToSelf.js +++ b/tests/baselines/reference/typesVersionsDeclarationEmit.multiFileBackReferenceToSelf.js @@ -38,8 +38,8 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.vb = exports.va = void 0; const ext_1 = require("ext"); const other_1 = require("ext/other"); -exports.va = ext_1.fa(); -exports.vb = other_1.fb(); +exports.va = (0, ext_1.fa)(); +exports.vb = (0, other_1.fb)(); //// [main.d.ts] diff --git a/tests/baselines/reference/typesVersionsDeclarationEmit.multiFileBackReferenceToUnmapped.js b/tests/baselines/reference/typesVersionsDeclarationEmit.multiFileBackReferenceToUnmapped.js index a8979f44008bc..d3dda8098c8c9 100644 --- a/tests/baselines/reference/typesVersionsDeclarationEmit.multiFileBackReferenceToUnmapped.js +++ b/tests/baselines/reference/typesVersionsDeclarationEmit.multiFileBackReferenceToUnmapped.js @@ -37,8 +37,8 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.va2 = exports.va = void 0; const ext_1 = require("ext"); const other_1 = require("ext/other"); -exports.va = ext_1.fa(); -exports.va2 = other_1.fa(); +exports.va = (0, ext_1.fa)(); +exports.va2 = (0, other_1.fa)(); //// [main.d.ts] diff --git a/tests/baselines/reference/untypedModuleImport.js b/tests/baselines/reference/untypedModuleImport.js index 90fb9ab5f4386..6ee72f2f25740 100644 --- a/tests/baselines/reference/untypedModuleImport.js +++ b/tests/baselines/reference/untypedModuleImport.js @@ -37,4 +37,4 @@ exports.__esModule = true; var foo_1 = require("foo"); require("./a"); require("./b"); -foo_1["default"](foo_1.bar()); +(0, foo_1["default"])((0, foo_1.bar)()); diff --git a/tests/baselines/reference/unusedImports3.js b/tests/baselines/reference/unusedImports3.js index 0b8b64951c82f..13fa8593230a6 100644 --- a/tests/baselines/reference/unusedImports3.js +++ b/tests/baselines/reference/unusedImports3.js @@ -40,5 +40,5 @@ exports.test2 = test2; "use strict"; exports.__esModule = true; var file1_1 = require("./file1"); -file1_1.test(); -file1_1.test2(); +(0, file1_1.test)(); +(0, file1_1.test2)(); diff --git a/tests/baselines/reference/unusedImports4.js b/tests/baselines/reference/unusedImports4.js index dd7a38828b5f3..ff035a9b4b5da 100644 --- a/tests/baselines/reference/unusedImports4.js +++ b/tests/baselines/reference/unusedImports4.js @@ -43,4 +43,4 @@ exports.__esModule = true; var file1_1 = require("./file1"); var x = new file1_1.Calculator(); x.handleChar(); -file1_1.test2(); +(0, file1_1.test2)(); diff --git a/tests/baselines/reference/unusedImports5.js b/tests/baselines/reference/unusedImports5.js index efd3e34a95717..920ade77fa7ff 100644 --- a/tests/baselines/reference/unusedImports5.js +++ b/tests/baselines/reference/unusedImports5.js @@ -43,4 +43,4 @@ exports.__esModule = true; var file1_1 = require("./file1"); var x = new file1_1.Calculator(); x.handleChar(); -file1_1.test(); +(0, file1_1.test)(); diff --git a/tests/baselines/reference/unusedImports8.js b/tests/baselines/reference/unusedImports8.js index 837bba1e4f33c..55158998a80e3 100644 --- a/tests/baselines/reference/unusedImports8.js +++ b/tests/baselines/reference/unusedImports8.js @@ -43,4 +43,4 @@ exports.__esModule = true; var file1_1 = require("./file1"); var x = new file1_1.Calculator(); x.handleChar(); -file1_1.test(); +(0, file1_1.test)(); diff --git a/tests/baselines/reference/unusedInvalidTypeArguments.js b/tests/baselines/reference/unusedInvalidTypeArguments.js index 932b39c3398b9..adbf9aff89145 100644 --- a/tests/baselines/reference/unusedInvalidTypeArguments.js +++ b/tests/baselines/reference/unusedInvalidTypeArguments.js @@ -91,7 +91,7 @@ exports.__esModule = true; "use strict"; exports.__esModule = true; var unknown_1 = require("unknown"); -unknown_1.foo(); +(0, unknown_1.foo)(); //// [new.js] "use strict"; exports.__esModule = true; From 0bf051b56278c4162d646d096bd865ab0d966da4 Mon Sep 17 00:00:00 2001 From: Ron Buckton Date: Mon, 8 Feb 2021 20:09:08 -0800 Subject: [PATCH 2/4] Rebase against master and clean up substitution flow --- src/compiler/transformers/module/module.ts | 151 ++++++++----- ...reserved(jsx=react-jsx,module=commonjs).js | 2 +- ...erved(jsx=react-jsxdev,module=commonjs).js | 2 +- ...arationEmitExpandoWithGenericConstraint.js | 26 +-- ...nedNamespaceNoTripleSlashTypesReference.js | 2 +- .../declarationEmitExportDeclaration.js | 14 +- ...mportingModuleAugmentationRetainsImport.js | 2 +- ...declarationEmitReadonlyComputedProperty.js | 2 +- .../reference/declarationEmitSymlinkPaths.js | 2 +- ...iveInternalTypesProduceUniqueTypeParams.js | 78 +++---- .../exportAsNamespace_missingEmitHelpers.js | 2 +- ...tAssignmentOfExportNamespaceWithDefault.js | 2 +- .../reference/exportStarNotElided.js | 2 +- tests/baselines/reference/importHelpersAmd.js | 24 +-- ...StarAs(esmoduleinterop=true,module=amd).js | 2 +- ...s(esmoduleinterop=true,module=commonjs).js | 2 +- ...efault(esmoduleinterop=true,module=amd).js | 6 +- ...t(esmoduleinterop=true,module=commonjs).js | 6 +- ...StarAs(esmoduleinterop=true,module=amd).js | 2 +- ...s(esmoduleinterop=true,module=commonjs).js | 2 +- .../reference/inlineJsxAndJsxFragPragma.js | 8 +- ...ndJsxFragPragmaOverridesCompilerOptions.js | 16 +- .../reference/inlineJsxFactoryDeclarations.js | 48 ++--- .../inlineJsxFactoryDeclarationsLocalTypes.js | 156 +++++++------- ...ressionNotCountedAsChild(jsx=react-jsx).js | 4 +- ...sionNotCountedAsChild(jsx=react-jsxdev).js | 4 +- .../jsxFragmentFactoryNoUnusedLocals.js | 6 +- ...JsxsCjsTransformChildren(jsx=react-jsx).js | 2 +- ...sCjsTransformChildren(jsx=react-jsxdev).js | 2 +- ...CjsTransformCustomImport(jsx=react-jsx).js | 2 +- ...TransformCustomImport(jsx=react-jsxdev).js | 2 +- ...nsformCustomImportPragma(jsx=react-jsx).js | 4 +- ...ormCustomImportPragma(jsx=react-jsxdev).js | 4 +- ...xJsxsCjsTransformKeyProp(jsx=react-jsx).js | 4 +- ...xsCjsTransformKeyProp(jsx=react-jsxdev).js | 4 +- ...sformKeyPropCustomImport(jsx=react-jsx).js | 4 +- ...rmKeyPropCustomImport(jsx=react-jsxdev).js | 4 +- ...eyPropCustomImportPragma(jsx=react-jsx).js | 8 +- ...ropCustomImportPragma(jsx=react-jsxdev).js | 8 +- ...rmNestedSelfClosingChild(jsx=react-jsx).js | 8 +- ...estedSelfClosingChild(jsx=react-jsxdev).js | 8 +- ...ransformSubstitutesNames(jsx=react-jsx).js | 2 +- ...sformSubstitutesNames(jsx=react-jsxdev).js | 2 +- ...SubstitutesNamesFragment(jsx=react-jsx).js | 2 +- ...stitutesNamesFragment(jsx=react-jsxdev).js | 2 +- .../reference/jsxNamespaceGlobalReexport.js | 2 +- ...mespaceGlobalReexportMissingAliasTarget.js | 2 +- .../jsxNamespaceImplicitImportJSXNamespace.js | 2 +- ...XNamespaceFromConfigPickedOverGlobalOne.js | 2 +- ...XNamespaceFromPragmaPickedOverGlobalOne.js | 2 +- .../missingMemberErrorHasShortPath.js | 2 +- .../reference/namedImportNonExistentName.js | 2 +- ...ImportUnusedInNewJSXEmit(jsx=react-jsx).js | 4 +- ...ortUnusedInNewJSXEmit(jsx=react-jsxdev).js | 4 +- .../referenceTypesPreferedToPathIfPossible.js | 12 +- ...hange-in-signature-with-isolatedModules.js | 2 +- ...ther-symlinked-package-moduleCaseChange.js | 2 +- ...age-with-indirect-link-moduleCaseChange.js | 2 +- ...er-symlinked-package-with-indirect-link.js | 2 +- ...gh-source-and-another-symlinked-package.js | 2 +- ...ypes-found-doesn't-crash-under---strict.js | 2 +- ...th-no-backing-types-found-doesn't-crash.js | 2 +- .../should-emit-specified-file.js | 78 +++---- ...-be-up-to-date-with-newly-created-files.js | 90 ++++---- ...-to-date-with-the-reference-map-changes.js | 200 +++++++++--------- ...g-a-deep-multilevel-import-that-changes.js | 2 +- ...g-a-deep-multilevel-import-that-changes.js | 2 +- ...g-a-deep-multilevel-import-that-changes.js | 170 +++++++-------- ...g-a-deep-multilevel-import-that-changes.js | 170 +++++++-------- .../jsxImportSource-option-changed.js | 2 +- ...lpers-backing-types-removed-incremental.js | 2 +- ...portHelpers-backing-types-removed-watch.js | 2 +- ...tSource-backing-types-added-incremental.js | 2 +- ...xImportSource-backing-types-added-watch.js | 2 +- ...ource-backing-types-removed-incremental.js | 2 +- ...mportSource-backing-types-removed-watch.js | 2 +- ...ImportSource-option-changed-incremental.js | 4 +- .../jsxImportSource-option-changed-watch.js | 4 +- ...eDirectories-option-extendedDiagnostics.js | 2 +- ...-directory-watching-extendedDiagnostics.js | 2 +- ...ption-with-recursive-directory-watching.js | 2 +- .../with-excludeDirectories-option.js | 2 +- ...excludeFiles-option-extendedDiagnostics.js | 2 +- .../watchOptions/with-excludeFiles-option.js | 2 +- 84 files changed, 746 insertions(+), 693 deletions(-) diff --git a/src/compiler/transformers/module/module.ts b/src/compiler/transformers/module/module.ts index df8ee0b6e35ee..1ef5b7f8e2504 100644 --- a/src/compiler/transformers/module/module.ts +++ b/src/compiler/transformers/module/module.ts @@ -1,5 +1,24 @@ /*@internal*/ namespace ts { + + const enum ImportOrExportBindingReferenceKind { + None, + ImportedHelper, + TopLevelExportBinding, + ImportClause, + ImportSpecifier, + } + + type ImportOrExportBindingReferenceResult = + | { kind: ImportOrExportBindingReferenceKind.None, node: undefined } + | { kind: ImportOrExportBindingReferenceKind.ImportedHelper, node: Identifier } + | { kind: ImportOrExportBindingReferenceKind.TopLevelExportBinding, node: undefined } + | { kind: ImportOrExportBindingReferenceKind.ImportClause, node: ImportClause } + | { kind: ImportOrExportBindingReferenceKind.ImportSpecifier, node: ImportSpecifier }; + + const noReferenceResult: ImportOrExportBindingReferenceResult = { kind: ImportOrExportBindingReferenceKind.None, node: undefined }; + const topLevelExportReferenceResult: ImportOrExportBindingReferenceResult = { kind: ImportOrExportBindingReferenceKind.TopLevelExportBinding, node: undefined }; + export function transformModule(context: TransformationContext) { interface AsynchronousDependencies { aliasedModuleNames: Expression[]; @@ -48,6 +67,7 @@ namespace ts { let currentModuleInfo: ExternalModuleInfo; // The ExternalModuleInfo for the current file. let noSubstitution: boolean[]; // Set of nodes for which substitution rules should be ignored. let needUMDDynamicImportHelper: boolean; + let bindingReferenceCache: ESMap | undefined; return chainBundle(context, transformSourceFile); @@ -1756,24 +1776,70 @@ namespace ts { return node; } - function substituteCallExpression(node: CallExpression) { - if (!isIdentifier(node.expression)) { - return node; + function getImportOrExportBindingReferenceWorker(node: Identifier): ImportOrExportBindingReferenceResult { + if (getEmitFlags(node) & EmitFlags.HelperName) { + const externalHelpersModuleName = getExternalHelpersModuleName(currentSourceFile); + if (externalHelpersModuleName) { + return { kind: ImportOrExportBindingReferenceKind.ImportedHelper, node: externalHelpersModuleName }; + } } - const newExpression = substituteExpressionIdentifier(node.expression); - if (newExpression !== node.expression) { - return updateCall(node, setTextRange(createBinary(createNumericLiteral("0"), SyntaxKind.CommaToken, newExpression), node.expression), /*typeArguments*/ undefined, node.arguments); + else if (!(isGeneratedIdentifier(node) && !(node.autoGenerateFlags & GeneratedIdentifierFlags.AllowNameSubstitution)) && !isLocalName(node)) { + const exportContainer = resolver.getReferencedExportContainer(node, isExportName(node)); + if (exportContainer?.kind === SyntaxKind.SourceFile) { + return topLevelExportReferenceResult; + } + const importDeclaration = resolver.getReferencedImportDeclaration(node); + if (importDeclaration) { + if (isImportClause(importDeclaration)) return { kind: ImportOrExportBindingReferenceKind.ImportClause, node: importDeclaration }; + if (isImportSpecifier(importDeclaration)) return { kind: ImportOrExportBindingReferenceKind.ImportSpecifier, node: importDeclaration }; + } + } + return noReferenceResult; + } + + function getImportOrExportBindingReference(node: Identifier, removeEntry: boolean): ImportOrExportBindingReferenceResult { + bindingReferenceCache ||= new Map(); + let result = bindingReferenceCache.get(node); + if (!result) { + result = getImportOrExportBindingReferenceWorker(node); + if (!removeEntry) { + switch (result.kind) { + case ImportOrExportBindingReferenceKind.ImportedHelper: + case ImportOrExportBindingReferenceKind.ImportClause: + case ImportOrExportBindingReferenceKind.ImportSpecifier: + bindingReferenceCache.set(node, result); + } + } + } + else if (removeEntry) { + bindingReferenceCache.delete(node); + } + return result; + } + + function substituteCallExpression(node: CallExpression) { + if (isIdentifier(node.expression) && getImportOrExportBindingReference(node.expression, /*removeEntry*/ false).kind !== ImportOrExportBindingReferenceKind.None) { + return isCallChain(node) ? + factory.updateCallChain(node, + setTextRange(factory.createComma(factory.createNumericLiteral(0), node.expression), node.expression), + node.questionDotToken, + /*typeArguments*/ undefined, + node.arguments) : + factory.updateCallExpression(node, + setTextRange(factory.createComma(factory.createNumericLiteral(0), node.expression), node.expression), + /*typeArguments*/ undefined, + node.arguments); } return node; } function substituteTaggedTemplateExpression(node: TaggedTemplateExpression) { - if (!isIdentifier(node.tag)) { - return node; - } - const newTag = substituteExpressionIdentifier(node.tag); - if (newTag !== node.tag) { - return updateTaggedTemplate(node, setTextRange(createBinary(createNumericLiteral("0"), SyntaxKind.CommaToken, newTag), node.tag), /*typeArguments*/ undefined, node.template); + if (isIdentifier(node.tag) && getImportOrExportBindingReference(node.tag, /*removeEntry*/ false).kind !== ImportOrExportBindingReferenceKind.None) { + return factory.updateTaggedTemplateExpression( + node, + setTextRange(factory.createComma(factory.createNumericLiteral(0), node.tag), node.tag), + /*typeArguments*/ undefined, + node.template); } return node; } @@ -1785,18 +1851,11 @@ namespace ts { * @param node The node to substitute. */ function substituteExpressionIdentifier(node: Identifier): Expression { - if (getEmitFlags(node) & EmitFlags.HelperName) { - const externalHelpersModuleName = getExternalHelpersModuleName(currentSourceFile); - if (externalHelpersModuleName) { - return factory.createPropertyAccessExpression(externalHelpersModuleName, node); - } - - return node; - } - - if (!(isGeneratedIdentifier(node) && !(node.autoGenerateFlags & GeneratedIdentifierFlags.AllowNameSubstitution)) && !isLocalName(node)) { - const exportContainer = resolver.getReferencedExportContainer(node, isExportName(node)); - if (exportContainer && exportContainer.kind === SyntaxKind.SourceFile) { + const result = getImportOrExportBindingReference(node, /*removeEntry*/ true); + switch (result.kind) { + case ImportOrExportBindingReferenceKind.ImportedHelper: + return factory.createPropertyAccessExpression(result.node, node); + case ImportOrExportBindingReferenceKind.TopLevelExportBinding: return setTextRange( factory.createPropertyAccessExpression( factory.createIdentifier("exports"), @@ -1804,32 +1863,26 @@ namespace ts { ), /*location*/ node ); - } - - const importDeclaration = resolver.getReferencedImportDeclaration(node); - if (importDeclaration) { - if (isImportClause(importDeclaration)) { - return setTextRange( - factory.createPropertyAccessExpression( - factory.getGeneratedNameForNode(importDeclaration.parent), - factory.createIdentifier("default") - ), - /*location*/ node - ); - } - else if (isImportSpecifier(importDeclaration)) { - const name = importDeclaration.propertyName || importDeclaration.name; - return setTextRange( - factory.createPropertyAccessExpression( - factory.getGeneratedNameForNode(importDeclaration.parent?.parent?.parent || importDeclaration), - factory.cloneNode(name) - ), - /*location*/ node - ); - } - } + case ImportOrExportBindingReferenceKind.ImportClause: + return setTextRange( + factory.createPropertyAccessExpression( + factory.getGeneratedNameForNode(result.node.parent), + factory.createIdentifier("default") + ), + /*location*/ node + ); + case ImportOrExportBindingReferenceKind.ImportSpecifier: + const name = result.node.propertyName || result.node.name; + return setTextRange( + factory.createPropertyAccessExpression( + factory.getGeneratedNameForNode(result.node.parent?.parent?.parent || result.node), + factory.cloneNode(name) + ), + /*location*/ node + ); + default: + return node; } - return node; } /** diff --git a/tests/baselines/reference/commentsOnJSXExpressionsArePreserved(jsx=react-jsx,module=commonjs).js b/tests/baselines/reference/commentsOnJSXExpressionsArePreserved(jsx=react-jsx,module=commonjs).js index 0a7d6bb920bb4..eee8eb6aff00a 100644 --- a/tests/baselines/reference/commentsOnJSXExpressionsArePreserved(jsx=react-jsx,module=commonjs).js +++ b/tests/baselines/reference/commentsOnJSXExpressionsArePreserved(jsx=react-jsx,module=commonjs).js @@ -25,7 +25,7 @@ var Component = /** @class */ (function () { function Component() { } Component.prototype.render = function () { - return _a.jsx("div", { children: null /* preserved */ }, void 0); + return (0, _a.jsx)("div", { children: null /* preserved */ }, void 0); }; return Component; }()); diff --git a/tests/baselines/reference/commentsOnJSXExpressionsArePreserved(jsx=react-jsxdev,module=commonjs).js b/tests/baselines/reference/commentsOnJSXExpressionsArePreserved(jsx=react-jsxdev,module=commonjs).js index 7956996a0e03d..fade68ddc3efb 100644 --- a/tests/baselines/reference/commentsOnJSXExpressionsArePreserved(jsx=react-jsxdev,module=commonjs).js +++ b/tests/baselines/reference/commentsOnJSXExpressionsArePreserved(jsx=react-jsxdev,module=commonjs).js @@ -26,7 +26,7 @@ var Component = /** @class */ (function () { function Component() { } Component.prototype.render = function () { - return _a.jsxDEV("div", { children: null /* preserved */ }, void 0, false, { fileName: _jsxFileName, lineNumber: 5, columnNumber: 15 }, this); + return (0, _a.jsxDEV)("div", { children: null /* preserved */ }, void 0, false, { fileName: _jsxFileName, lineNumber: 5, columnNumber: 15 }, this); }; return Component; }()); diff --git a/tests/baselines/reference/declarationEmitExpandoWithGenericConstraint.js b/tests/baselines/reference/declarationEmitExpandoWithGenericConstraint.js index 3a7805676dff7..50f45899cb6f3 100644 --- a/tests/baselines/reference/declarationEmitExpandoWithGenericConstraint.js +++ b/tests/baselines/reference/declarationEmitExpandoWithGenericConstraint.js @@ -1,17 +1,17 @@ //// [declarationEmitExpandoWithGenericConstraint.ts] -export interface Point { - readonly x: number; - readonly y: number; -} - -export interface Rect

{ - readonly a: p; - readonly b: p; -} - -export const Point = (x: number, y: number): Point => ({ x, y }); -export const Rect =

(a: p, b: p): Rect

=> ({ a, b }); - +export interface Point { + readonly x: number; + readonly y: number; +} + +export interface Rect

{ + readonly a: p; + readonly b: p; +} + +export const Point = (x: number, y: number): Point => ({ x, y }); +export const Rect =

(a: p, b: p): Rect

=> ({ a, b }); + Point.zero = (): Point => Point(0, 0); //// [declarationEmitExpandoWithGenericConstraint.js] diff --git a/tests/baselines/reference/declarationEmitExportAssignedNamespaceNoTripleSlashTypesReference.js b/tests/baselines/reference/declarationEmitExportAssignedNamespaceNoTripleSlashTypesReference.js index 57db447de5946..add035f1054c5 100644 --- a/tests/baselines/reference/declarationEmitExportAssignedNamespaceNoTripleSlashTypesReference.js +++ b/tests/baselines/reference/declarationEmitExportAssignedNamespaceNoTripleSlashTypesReference.js @@ -53,7 +53,7 @@ var get_comp_1 = require("./get-comp"); // this shouldn't need any triple-slash references - it should have a direct import to `react` and that's it // This issue (#35343) _only_ reproduces in the test harness when the file in question is in a subfolder exports.obj = { - comp: get_comp_1.getComp() + comp: (0, get_comp_1.getComp)() }; //// [some-other-file.js] "use strict"; diff --git a/tests/baselines/reference/declarationEmitExportDeclaration.js b/tests/baselines/reference/declarationEmitExportDeclaration.js index faa1a34704a50..5917ac41d08fd 100644 --- a/tests/baselines/reference/declarationEmitExportDeclaration.js +++ b/tests/baselines/reference/declarationEmitExportDeclaration.js @@ -1,15 +1,15 @@ //// [tests/cases/compiler/declarationEmitExportDeclaration.ts] //// //// [utils.ts] -export function foo() { } -export function bar() { } -export interface Buzz { } +export function foo() { } +export function bar() { } +export interface Buzz { } //// [index.ts] -import {foo, bar, Buzz} from "./utils"; - -foo(); -let obj: Buzz; +import {foo, bar, Buzz} from "./utils"; + +foo(); +let obj: Buzz; export {bar}; //// [utils.js] diff --git a/tests/baselines/reference/declarationEmitForModuleImportingModuleAugmentationRetainsImport.js b/tests/baselines/reference/declarationEmitForModuleImportingModuleAugmentationRetainsImport.js index 576b8dffbdef0..78cb4bb22dfd3 100644 --- a/tests/baselines/reference/declarationEmitForModuleImportingModuleAugmentationRetainsImport.js +++ b/tests/baselines/reference/declarationEmitForModuleImportingModuleAugmentationRetainsImport.js @@ -31,7 +31,7 @@ var ParentThing = /** @class */ (function () { return ParentThing; }()); exports.ParentThing = ParentThing; -child1_1.child1(ParentThing.prototype); +(0, child1_1.child1)(ParentThing.prototype); //// [child1.js] "use strict"; exports.__esModule = true; diff --git a/tests/baselines/reference/declarationEmitReadonlyComputedProperty.js b/tests/baselines/reference/declarationEmitReadonlyComputedProperty.js index 43172fb16067f..1f4364658b5cb 100644 --- a/tests/baselines/reference/declarationEmitReadonlyComputedProperty.js +++ b/tests/baselines/reference/declarationEmitReadonlyComputedProperty.js @@ -48,7 +48,7 @@ var __assign = (this && this.__assign) || function () { exports.__esModule = true; exports.spread = void 0; var bug_1 = require("./bug"); -exports.spread = __assign({}, bug_1.createInstance()); +exports.spread = __assign({}, (0, bug_1.createInstance)()); //// [bug.d.ts] diff --git a/tests/baselines/reference/declarationEmitSymlinkPaths.js b/tests/baselines/reference/declarationEmitSymlinkPaths.js index 057ac0331b316..41f9c4b583079 100644 --- a/tests/baselines/reference/declarationEmitSymlinkPaths.js +++ b/tests/baselines/reference/declarationEmitSymlinkPaths.js @@ -38,7 +38,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.NotificationScenario = void 0; var index_1 = require("search/lib/index"); var NotificationAPIUtils_1 = require("../API/NotificationAPIUtils"); -exports.NotificationScenario = index_1.test(NotificationAPIUtils_1.getNotification); +exports.NotificationScenario = (0, index_1.test)(NotificationAPIUtils_1.getNotification); //// [NotificationAPIUtils.d.ts] diff --git a/tests/baselines/reference/declarationsWithRecursiveInternalTypesProduceUniqueTypeParams.js b/tests/baselines/reference/declarationsWithRecursiveInternalTypesProduceUniqueTypeParams.js index 3e369f2cf819d..ddc78e9effe40 100644 --- a/tests/baselines/reference/declarationsWithRecursiveInternalTypesProduceUniqueTypeParams.js +++ b/tests/baselines/reference/declarationsWithRecursiveInternalTypesProduceUniqueTypeParams.js @@ -1,43 +1,43 @@ //// [declarationsWithRecursiveInternalTypesProduceUniqueTypeParams.ts] -// Note that both of the following have an `any` in their return type from where we bottom out the type printout -// for having too many instances of the same symbol nesting. - -// Slightly simplified repro from https://github.com/microsoft/TypeScript/issues/30732 so it's easier to read and debug -export type Key = keyof U; -export type Value, U> = U[K]; -export const updateIfChanged = (t: T) => { - const reduce = (u: U, update: (u: U) => T) => { - const set = (newU: U) => Object.is(u, newU) ? t : update(newU); - return Object.assign( - >(key: K) => - reduce>(u[key as keyof U] as Value, (v: Value) => { - return update(Object.assign(Array.isArray(u) ? [] : {}, u, { [key]: v })); - }), - { map: (updater: (u: U) => U) => set(updater(u)), set }); - }; - return reduce(t, (t: T) => t); -}; - -// example from https://github.com/microsoft/TypeScript/issues/31605 - -export const testRecFun = (parent: T) => { - return { - result: parent, - deeper: (child: U) => - testRecFun({ ...parent, ...child }) - }; -} - - -let p1 = testRecFun({ one: '1' }) -void p1.result.one; -let p2 = p1.deeper({ two: '2' }) -void p2.result.one; -void p2.result.two; -let p3 = p2.deeper({ three: '3' }) -void p3.result.one; -void p3.result.two; -void p3.result.three; +// Note that both of the following have an `any` in their return type from where we bottom out the type printout +// for having too many instances of the same symbol nesting. + +// Slightly simplified repro from https://github.com/microsoft/TypeScript/issues/30732 so it's easier to read and debug +export type Key = keyof U; +export type Value, U> = U[K]; +export const updateIfChanged = (t: T) => { + const reduce = (u: U, update: (u: U) => T) => { + const set = (newU: U) => Object.is(u, newU) ? t : update(newU); + return Object.assign( + >(key: K) => + reduce>(u[key as keyof U] as Value, (v: Value) => { + return update(Object.assign(Array.isArray(u) ? [] : {}, u, { [key]: v })); + }), + { map: (updater: (u: U) => U) => set(updater(u)), set }); + }; + return reduce(t, (t: T) => t); +}; + +// example from https://github.com/microsoft/TypeScript/issues/31605 + +export const testRecFun = (parent: T) => { + return { + result: parent, + deeper: (child: U) => + testRecFun({ ...parent, ...child }) + }; +} + + +let p1 = testRecFun({ one: '1' }) +void p1.result.one; +let p2 = p1.deeper({ two: '2' }) +void p2.result.one; +void p2.result.two; +let p3 = p2.deeper({ three: '3' }) +void p3.result.one; +void p3.result.two; +void p3.result.three; //// [declarationsWithRecursiveInternalTypesProduceUniqueTypeParams.js] diff --git a/tests/baselines/reference/exportAsNamespace_missingEmitHelpers.js b/tests/baselines/reference/exportAsNamespace_missingEmitHelpers.js index 7afa249b2f3a1..4b052d29dfb52 100644 --- a/tests/baselines/reference/exportAsNamespace_missingEmitHelpers.js +++ b/tests/baselines/reference/exportAsNamespace_missingEmitHelpers.js @@ -15,4 +15,4 @@ exports.__esModule = true; exports.__esModule = true; exports.ns = void 0; var tslib_1 = require("tslib"); -exports.ns = tslib_1.__importStar(require("./a")); // Error +exports.ns = (0, tslib_1.__importStar)(require("./a")); // Error diff --git a/tests/baselines/reference/exportAssignmentOfExportNamespaceWithDefault.js b/tests/baselines/reference/exportAssignmentOfExportNamespaceWithDefault.js index 4abb075a8670f..7c8fa3661a597 100644 --- a/tests/baselines/reference/exportAssignmentOfExportNamespaceWithDefault.js +++ b/tests/baselines/reference/exportAssignmentOfExportNamespaceWithDefault.js @@ -28,4 +28,4 @@ var __importDefault = (this && this.__importDefault) || function (mod) { Object.defineProperty(exports, "__esModule", { value: true }); // https://github.com/microsoft/TypeScript/issues/39149 const a_1 = __importDefault(require("a")); -a_1.default(); +(0, a_1.default)(); diff --git a/tests/baselines/reference/exportStarNotElided.js b/tests/baselines/reference/exportStarNotElided.js index 1db6c1f0169e5..6bdbefe6a20a8 100644 --- a/tests/baselines/reference/exportStarNotElided.js +++ b/tests/baselines/reference/exportStarNotElided.js @@ -43,4 +43,4 @@ exports.aliased = require("./data1"); "use strict"; exports.__esModule = true; var _1 = require("./"); -_1.register("ok"); +(0, _1.register)("ok"); diff --git a/tests/baselines/reference/importHelpersAmd.js b/tests/baselines/reference/importHelpersAmd.js index 9ed4ef5e5eec5..b675da337597d 100644 --- a/tests/baselines/reference/importHelpersAmd.js +++ b/tests/baselines/reference/importHelpersAmd.js @@ -1,22 +1,22 @@ //// [tests/cases/compiler/importHelpersAmd.ts] //// //// [a.ts] -export class A { } +export class A { } //// [b.ts] -import { A } from "./a"; -export * from "./a"; -export class B extends A { } +import { A } from "./a"; +export * from "./a"; +export class B extends A { } //// [tslib.d.ts] -export declare function __extends(d: Function, b: Function): void; -export declare function __assign(t: any, ...sources: any[]): any; -export declare function __rest(t: any, propertyNames: string[]): any; -export declare function __decorate(decorators: Function[], target: any, key?: string | symbol, desc?: any): any; -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 __generator(thisArg: any, body: Function): any; +export declare function __extends(d: Function, b: Function): void; +export declare function __assign(t: any, ...sources: any[]): any; +export declare function __rest(t: any, propertyNames: string[]): any; +export declare function __decorate(decorators: Function[], target: any, key?: string | symbol, desc?: any): any; +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 __generator(thisArg: any, body: Function): any; export declare function __exportStar(m: any, exports: any): void; //// [a.js] diff --git a/tests/baselines/reference/importHelpersWithExportStarAs(esmoduleinterop=true,module=amd).js b/tests/baselines/reference/importHelpersWithExportStarAs(esmoduleinterop=true,module=amd).js index bb9e4bd8c2512..3e214d3274df1 100644 --- a/tests/baselines/reference/importHelpersWithExportStarAs(esmoduleinterop=true,module=amd).js +++ b/tests/baselines/reference/importHelpersWithExportStarAs(esmoduleinterop=true,module=amd).js @@ -25,5 +25,5 @@ define(["require", "exports", "tslib", "./a"], function (require, exports, tslib "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.a = void 0; - exports.a = tslib_1.__importStar(a); + exports.a = (0, tslib_1.__importStar)(a); }); diff --git a/tests/baselines/reference/importHelpersWithExportStarAs(esmoduleinterop=true,module=commonjs).js b/tests/baselines/reference/importHelpersWithExportStarAs(esmoduleinterop=true,module=commonjs).js index ad2ad22bf4756..a8fcc1c8bd232 100644 --- a/tests/baselines/reference/importHelpersWithExportStarAs(esmoduleinterop=true,module=commonjs).js +++ b/tests/baselines/reference/importHelpersWithExportStarAs(esmoduleinterop=true,module=commonjs).js @@ -23,4 +23,4 @@ exports.A = A; Object.defineProperty(exports, "__esModule", { value: true }); exports.a = void 0; const tslib_1 = require("tslib"); -exports.a = tslib_1.__importStar(require("./a")); +exports.a = (0, tslib_1.__importStar)(require("./a")); diff --git a/tests/baselines/reference/importHelpersWithImportOrExportDefault(esmoduleinterop=true,module=amd).js b/tests/baselines/reference/importHelpersWithImportOrExportDefault(esmoduleinterop=true,module=amd).js index 6a8466b591ffb..b6e78cc6bf915 100644 --- a/tests/baselines/reference/importHelpersWithImportOrExportDefault(esmoduleinterop=true,module=amd).js +++ b/tests/baselines/reference/importHelpersWithImportOrExportDefault(esmoduleinterop=true,module=amd).js @@ -27,8 +27,8 @@ define(["require", "exports", "tslib", "./a", "./a", "./a"], function (require, "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.a = exports.default = void 0; - a_3 = tslib_1.__importDefault(a_3); - Object.defineProperty(exports, "default", { enumerable: true, get: function () { return tslib_1.__importDefault(a_1).default; } }); - Object.defineProperty(exports, "a", { enumerable: true, get: function () { return tslib_1.__importDefault(a_2).default; } }); + a_3 = (0, tslib_1.__importDefault)(a_3); + Object.defineProperty(exports, "default", { enumerable: true, get: function () { return (0, tslib_1.__importDefault)(a_1).default; } }); + Object.defineProperty(exports, "a", { enumerable: true, get: function () { return (0, tslib_1.__importDefault)(a_2).default; } }); void a_3.default; }); diff --git a/tests/baselines/reference/importHelpersWithImportOrExportDefault(esmoduleinterop=true,module=commonjs).js b/tests/baselines/reference/importHelpersWithImportOrExportDefault(esmoduleinterop=true,module=commonjs).js index 50e3866222d41..81885fa55fca8 100644 --- a/tests/baselines/reference/importHelpersWithImportOrExportDefault(esmoduleinterop=true,module=commonjs).js +++ b/tests/baselines/reference/importHelpersWithImportOrExportDefault(esmoduleinterop=true,module=commonjs).js @@ -26,8 +26,8 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.a = exports.default = void 0; const tslib_1 = require("tslib"); var a_1 = require("./a"); -Object.defineProperty(exports, "default", { enumerable: true, get: function () { return tslib_1.__importDefault(a_1).default; } }); +Object.defineProperty(exports, "default", { enumerable: true, get: function () { return (0, tslib_1.__importDefault)(a_1).default; } }); var a_2 = require("./a"); -Object.defineProperty(exports, "a", { enumerable: true, get: function () { return tslib_1.__importDefault(a_2).default; } }); -const a_3 = tslib_1.__importDefault(require("./a")); +Object.defineProperty(exports, "a", { enumerable: true, get: function () { return (0, tslib_1.__importDefault)(a_2).default; } }); +const a_3 = (0, tslib_1.__importDefault)(require("./a")); void a_3.default; diff --git a/tests/baselines/reference/importHelpersWithImportStarAs(esmoduleinterop=true,module=amd).js b/tests/baselines/reference/importHelpersWithImportStarAs(esmoduleinterop=true,module=amd).js index d19acf3679cb8..15e9fe562d563 100644 --- a/tests/baselines/reference/importHelpersWithImportStarAs(esmoduleinterop=true,module=amd).js +++ b/tests/baselines/reference/importHelpersWithImportStarAs(esmoduleinterop=true,module=amd).js @@ -26,6 +26,6 @@ define(["require", "exports", "tslib", "./a"], function (require, exports, tslib "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.a = void 0; - a = tslib_1.__importStar(a); + a = (0, tslib_1.__importStar)(a); exports.a = a; }); diff --git a/tests/baselines/reference/importHelpersWithImportStarAs(esmoduleinterop=true,module=commonjs).js b/tests/baselines/reference/importHelpersWithImportStarAs(esmoduleinterop=true,module=commonjs).js index acb7d3e90b58a..2bf2f2fd33769 100644 --- a/tests/baselines/reference/importHelpersWithImportStarAs(esmoduleinterop=true,module=commonjs).js +++ b/tests/baselines/reference/importHelpersWithImportStarAs(esmoduleinterop=true,module=commonjs).js @@ -24,5 +24,5 @@ exports.A = A; Object.defineProperty(exports, "__esModule", { value: true }); exports.a = void 0; const tslib_1 = require("tslib"); -const a = tslib_1.__importStar(require("./a")); +const a = (0, tslib_1.__importStar)(require("./a")); exports.a = a; diff --git a/tests/baselines/reference/inlineJsxAndJsxFragPragma.js b/tests/baselines/reference/inlineJsxAndJsxFragPragma.js index 06b263e35db84..98624989f402e 100644 --- a/tests/baselines/reference/inlineJsxAndJsxFragPragma.js +++ b/tests/baselines/reference/inlineJsxAndJsxFragPragma.js @@ -34,13 +34,13 @@ exports.__esModule = true; * @jsxFrag Fragment */ var renderer_1 = require("./renderer"); -renderer_1.h(renderer_1.Fragment, null, - renderer_1.h("div", null)); +(0, renderer_1.h)(renderer_1.Fragment, null, + (0, renderer_1.h)("div", null)); //// [snabbdomy.js] "use strict"; exports.__esModule = true; /* @jsx jsx */ /* @jsxfrag null */ var renderer_1 = require("./renderer"); -renderer_1.jsx(null, null, - renderer_1.jsx("span", null)); +(0, renderer_1.jsx)(null, null, + (0, renderer_1.jsx)("span", null)); diff --git a/tests/baselines/reference/inlineJsxAndJsxFragPragmaOverridesCompilerOptions.js b/tests/baselines/reference/inlineJsxAndJsxFragPragmaOverridesCompilerOptions.js index 91949b147857e..33ec25f294f86 100644 --- a/tests/baselines/reference/inlineJsxAndJsxFragPragmaOverridesCompilerOptions.js +++ b/tests/baselines/reference/inlineJsxAndJsxFragPragmaOverridesCompilerOptions.js @@ -49,8 +49,8 @@ import {Fragment} from "./react"; "use strict"; exports.__esModule = true; var react_1 = require("./react"); -react_1.createElement(react_1.Fragment, null, - react_1.createElement("span", null)); +(0, react_1.createElement)(react_1.Fragment, null, + (0, react_1.createElement)("span", null)); //// [preacty.js] "use strict"; exports.__esModule = true; @@ -59,8 +59,8 @@ exports.__esModule = true; * @jsxFrag Frag */ var preact_1 = require("./preact"); -preact_1.h(preact_1.Frag, null, - preact_1.h("div", null)); +(0, preact_1.h)(preact_1.Frag, null, + (0, preact_1.h)("div", null)); //// [snabbdomy.js] "use strict"; exports.__esModule = true; @@ -69,8 +69,8 @@ exports.__esModule = true; * @jsxfrag null */ var snabbdom_1 = require("./snabbdom"); -snabbdom_1.h(null, null, - snabbdom_1.h("div", null)); +(0, snabbdom_1.h)(null, null, + (0, snabbdom_1.h)("div", null)); //// [mix-n-match.js] "use strict"; exports.__esModule = true; @@ -78,5 +78,5 @@ exports.__esModule = true; /* @jsxFrag Fragment */ var preact_1 = require("./preact"); var react_1 = require("./react"); -preact_1.h(react_1.Fragment, null, - preact_1.h("span", null)); +(0, preact_1.h)(react_1.Fragment, null, + (0, preact_1.h)("span", null)); diff --git a/tests/baselines/reference/inlineJsxFactoryDeclarations.js b/tests/baselines/reference/inlineJsxFactoryDeclarations.js index 8d20c91c1edee..c230676a556fe 100644 --- a/tests/baselines/reference/inlineJsxFactoryDeclarations.js +++ b/tests/baselines/reference/inlineJsxFactoryDeclarations.js @@ -1,40 +1,40 @@ //// [tests/cases/conformance/jsx/inline/inlineJsxFactoryDeclarations.tsx] //// //// [renderer.d.ts] -declare global { - namespace JSX { - interface IntrinsicElements { - [e: string]: any; - } - } -} -export function dom(): void; -export function otherdom(): void; -export function createElement(): void; +declare global { + namespace JSX { + interface IntrinsicElements { + [e: string]: any; + } + } +} +export function dom(): void; +export function otherdom(): void; +export function createElement(): void; export { dom as default }; //// [otherreacty.tsx] -/** @jsx React.createElement */ -import * as React from "./renderer"; +/** @jsx React.createElement */ +import * as React from "./renderer"; //// [other.tsx] -/** @jsx h */ -import { dom as h } from "./renderer" +/** @jsx h */ +import { dom as h } from "./renderer" export const prerendered = ; //// [othernoalias.tsx] -/** @jsx otherdom */ -import { otherdom } from "./renderer" +/** @jsx otherdom */ +import { otherdom } from "./renderer" export const prerendered2 = ; //// [reacty.tsx] -import React from "./renderer" -export const prerendered3 = ; +import React from "./renderer" +export const prerendered3 = ; //// [index.tsx] -/** @jsx dom */ -import { dom } from "./renderer" - -export * from "./other"; -export * from "./othernoalias"; -export * from "./reacty"; +/** @jsx dom */ +import { dom } from "./renderer" + +export * from "./other"; +export * from "./othernoalias"; +export * from "./reacty"; //// [otherreacty.js] diff --git a/tests/baselines/reference/inlineJsxFactoryDeclarationsLocalTypes.js b/tests/baselines/reference/inlineJsxFactoryDeclarationsLocalTypes.js index 805f5b7eb5e54..177f997297b44 100644 --- a/tests/baselines/reference/inlineJsxFactoryDeclarationsLocalTypes.js +++ b/tests/baselines/reference/inlineJsxFactoryDeclarationsLocalTypes.js @@ -1,90 +1,90 @@ //// [tests/cases/conformance/jsx/inline/inlineJsxFactoryDeclarationsLocalTypes.tsx] //// //// [renderer.d.ts] -export namespace dom { - namespace JSX { - interface IntrinsicElements { - [e: string]: {}; - } - interface Element { - __domBrand: void; - props: { - children?: Element[]; - }; - } - interface ElementClass extends Element { - render(): Element; - } - interface ElementAttributesProperty { props: any; } - interface ElementChildrenAttribute { children: any; } - } -} +export namespace dom { + namespace JSX { + interface IntrinsicElements { + [e: string]: {}; + } + interface Element { + __domBrand: void; + props: { + children?: Element[]; + }; + } + interface ElementClass extends Element { + render(): Element; + } + interface ElementAttributesProperty { props: any; } + interface ElementChildrenAttribute { children: any; } + } +} export function dom(): dom.JSX.Element; //// [renderer2.d.ts] -export namespace predom { - namespace JSX { - interface IntrinsicElements { - [e: string]: {}; - } - interface Element { - __predomBrand: void; - props: { - children?: Element[]; - }; - } - interface ElementClass extends Element { - render(): Element; - } - interface ElementAttributesProperty { props: any; } - interface ElementChildrenAttribute { children: any; } - } -} +export namespace predom { + namespace JSX { + interface IntrinsicElements { + [e: string]: {}; + } + interface Element { + __predomBrand: void; + props: { + children?: Element[]; + }; + } + interface ElementClass extends Element { + render(): Element; + } + interface ElementAttributesProperty { props: any; } + interface ElementChildrenAttribute { children: any; } + } +} export function predom(): predom.JSX.Element; //// [component.tsx] -/** @jsx predom */ -import { predom } from "./renderer2" - -export const MySFC = (props: {x: number, y: number, children?: predom.JSX.Element[]}) =>

{props.x} + {props.y} = {props.x + props.y}{...this.props.children}

; - -export class MyClass implements predom.JSX.Element { - __predomBrand!: void; - constructor(public props: {x: number, y: number, children?: predom.JSX.Element[]}) {} - render() { - return

- {this.props.x} + {this.props.y} = {this.props.x + this.props.y} - {...this.props.children} -

; - } -} -export const tree = - -export default +/** @jsx predom */ +import { predom } from "./renderer2" + +export const MySFC = (props: {x: number, y: number, children?: predom.JSX.Element[]}) =>

{props.x} + {props.y} = {props.x + props.y}{...this.props.children}

; + +export class MyClass implements predom.JSX.Element { + __predomBrand!: void; + constructor(public props: {x: number, y: number, children?: predom.JSX.Element[]}) {} + render() { + return

+ {this.props.x} + {this.props.y} = {this.props.x + this.props.y} + {...this.props.children} +

; + } +} +export const tree = + +export default //// [index.tsx] -/** @jsx dom */ -import { dom } from "./renderer" -import prerendered, {MySFC, MyClass, tree} from "./component"; -let elem = prerendered; -elem = ; // Expect assignability error here - -const DOMSFC = (props: {x: number, y: number, children?: dom.JSX.Element[]}) =>

{props.x} + {props.y} = {props.x + props.y}{props.children}

; - -class DOMClass implements dom.JSX.Element { - __domBrand!: void; - constructor(public props: {x: number, y: number, children?: dom.JSX.Element[]}) {} - render() { - return

{this.props.x} + {this.props.y} = {this.props.x + this.props.y}{...this.props.children}

; - } -} - -// Should work, everything is a DOM element -const _tree = - -// Should fail, no dom elements -const _brokenTree = - -// Should fail, nondom isn't allowed as children of dom -const _brokenTree2 = {tree}{tree} +/** @jsx dom */ +import { dom } from "./renderer" +import prerendered, {MySFC, MyClass, tree} from "./component"; +let elem = prerendered; +elem = ; // Expect assignability error here + +const DOMSFC = (props: {x: number, y: number, children?: dom.JSX.Element[]}) =>

{props.x} + {props.y} = {props.x + props.y}{props.children}

; + +class DOMClass implements dom.JSX.Element { + __domBrand!: void; + constructor(public props: {x: number, y: number, children?: dom.JSX.Element[]}) {} + render() { + return

{this.props.x} + {this.props.y} = {this.props.x + this.props.y}{...this.props.children}

; + } +} + +// Should work, everything is a DOM element +const _tree = + +// Should fail, no dom elements +const _brokenTree = + +// Should fail, nondom isn't allowed as children of dom +const _brokenTree2 = {tree}{tree} //// [component.js] diff --git a/tests/baselines/reference/jsxEmptyExpressionNotCountedAsChild(jsx=react-jsx).js b/tests/baselines/reference/jsxEmptyExpressionNotCountedAsChild(jsx=react-jsx).js index 8140be9eda124..628a88e6df036 100644 --- a/tests/baselines/reference/jsxEmptyExpressionNotCountedAsChild(jsx=react-jsx).js +++ b/tests/baselines/reference/jsxEmptyExpressionNotCountedAsChild(jsx=react-jsx).js @@ -22,6 +22,6 @@ const element = ( exports.__esModule = true; var jsx_runtime_1 = require("react/jsx-runtime"); function Wrapper(props) { - return jsx_runtime_1.jsx("div", { children: props.children }, void 0); + return (0, jsx_runtime_1.jsx)("div", { children: props.children }, void 0); } -var element = (jsx_runtime_1.jsx(Wrapper, { children: jsx_runtime_1.jsx("div", { children: "Hello" }, void 0) }, void 0)); +var element = ((0, jsx_runtime_1.jsx)(Wrapper, { children: (0, jsx_runtime_1.jsx)("div", { children: "Hello" }, void 0) }, void 0)); diff --git a/tests/baselines/reference/jsxEmptyExpressionNotCountedAsChild(jsx=react-jsxdev).js b/tests/baselines/reference/jsxEmptyExpressionNotCountedAsChild(jsx=react-jsxdev).js index 819ccebea6d21..da20aa4cda414 100644 --- a/tests/baselines/reference/jsxEmptyExpressionNotCountedAsChild(jsx=react-jsxdev).js +++ b/tests/baselines/reference/jsxEmptyExpressionNotCountedAsChild(jsx=react-jsxdev).js @@ -23,6 +23,6 @@ exports.__esModule = true; var jsx_dev_runtime_1 = require("react/jsx-dev-runtime"); var _jsxFileName = "tests/cases/compiler/jsxEmptyExpressionNotCountedAsChild.tsx"; function Wrapper(props) { - return jsx_dev_runtime_1.jsxDEV("div", { children: props.children }, void 0, false, { fileName: _jsxFileName, lineNumber: 9, columnNumber: 11 }, this); + return (0, jsx_dev_runtime_1.jsxDEV)("div", { children: props.children }, void 0, false, { fileName: _jsxFileName, lineNumber: 9, columnNumber: 11 }, this); } -var element = (jsx_dev_runtime_1.jsxDEV(Wrapper, { children: jsx_dev_runtime_1.jsxDEV("div", { children: "Hello" }, void 0, false, { fileName: _jsxFileName, lineNumber: 15, columnNumber: 6 }, this) }, void 0, false, { fileName: _jsxFileName, lineNumber: 12, columnNumber: 18 }, this)); +var element = ((0, jsx_dev_runtime_1.jsxDEV)(Wrapper, { children: (0, jsx_dev_runtime_1.jsxDEV)("div", { children: "Hello" }, void 0, false, { fileName: _jsxFileName, lineNumber: 15, columnNumber: 6 }, this) }, void 0, false, { fileName: _jsxFileName, lineNumber: 12, columnNumber: 18 }, this)); diff --git a/tests/baselines/reference/jsxFragmentFactoryNoUnusedLocals.js b/tests/baselines/reference/jsxFragmentFactoryNoUnusedLocals.js index 90cad7ac3521b..09bb4072742f6 100644 --- a/tests/baselines/reference/jsxFragmentFactoryNoUnusedLocals.js +++ b/tests/baselines/reference/jsxFragmentFactoryNoUnusedLocals.js @@ -23,8 +23,8 @@ var react_1 = require("react"); function Counter(_a) { var _b = _a.count, count = _b === void 0 ? 0 : _b; var _c = null, cnt = _c[0], setCnt = _c[1]; - return react_1.createElement(react_1.Fragment, null, - react_1.createElement("p", null, cnt), - react_1.createElement("button", { onClick: function () { return setCnt(function (prev) { return prev + 1; }); }, type: "button" }, "Update")); + return (0, react_1.createElement)(react_1.Fragment, null, + (0, react_1.createElement)("p", null, cnt), + (0, react_1.createElement)("button", { onClick: function () { return setCnt(function (prev) { return prev + 1; }); }, type: "button" }, "Update")); } exports.Counter = Counter; diff --git a/tests/baselines/reference/jsxJsxsCjsTransformChildren(jsx=react-jsx).js b/tests/baselines/reference/jsxJsxsCjsTransformChildren(jsx=react-jsx).js index bb94546b6f30f..6bb4e171cf7fb 100644 --- a/tests/baselines/reference/jsxJsxsCjsTransformChildren(jsx=react-jsx).js +++ b/tests/baselines/reference/jsxJsxsCjsTransformChildren(jsx=react-jsx).js @@ -10,4 +10,4 @@ export {}; exports.__esModule = true; var jsx_runtime_1 = require("react/jsx-runtime"); /// -var a = jsx_runtime_1.jsx("div", { children: "text" }, void 0); +var a = (0, jsx_runtime_1.jsx)("div", { children: "text" }, void 0); diff --git a/tests/baselines/reference/jsxJsxsCjsTransformChildren(jsx=react-jsxdev).js b/tests/baselines/reference/jsxJsxsCjsTransformChildren(jsx=react-jsxdev).js index 227e714da143c..2325fb40bdddd 100644 --- a/tests/baselines/reference/jsxJsxsCjsTransformChildren(jsx=react-jsxdev).js +++ b/tests/baselines/reference/jsxJsxsCjsTransformChildren(jsx=react-jsxdev).js @@ -11,4 +11,4 @@ exports.__esModule = true; var jsx_dev_runtime_1 = require("react/jsx-dev-runtime"); var _jsxFileName = "tests/cases/conformance/jsx/jsxs/jsxJsxsCjsTransformChildren.tsx"; /// -var a = jsx_dev_runtime_1.jsxDEV("div", { children: "text" }, void 0, false, { fileName: _jsxFileName, lineNumber: 2, columnNumber: 10 }, this); +var a = (0, jsx_dev_runtime_1.jsxDEV)("div", { children: "text" }, void 0, false, { fileName: _jsxFileName, lineNumber: 2, columnNumber: 10 }, this); diff --git a/tests/baselines/reference/jsxJsxsCjsTransformCustomImport(jsx=react-jsx).js b/tests/baselines/reference/jsxJsxsCjsTransformCustomImport(jsx=react-jsx).js index 2c38153a249e5..44c248f819084 100644 --- a/tests/baselines/reference/jsxJsxsCjsTransformCustomImport(jsx=react-jsx).js +++ b/tests/baselines/reference/jsxJsxsCjsTransformCustomImport(jsx=react-jsx).js @@ -13,4 +13,4 @@ export {}; exports.__esModule = true; var jsx_runtime_1 = require("preact/jsx-runtime"); /// -var a = jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [jsx_runtime_1.jsx("p", {}, void 0), "text", jsx_runtime_1.jsx("div", { className: "foo" }, void 0)] }, void 0); +var a = (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("p", {}, void 0), "text", (0, jsx_runtime_1.jsx)("div", { className: "foo" }, void 0)] }, void 0); diff --git a/tests/baselines/reference/jsxJsxsCjsTransformCustomImport(jsx=react-jsxdev).js b/tests/baselines/reference/jsxJsxsCjsTransformCustomImport(jsx=react-jsxdev).js index 5ab5e659850ce..ef4daa9df786a 100644 --- a/tests/baselines/reference/jsxJsxsCjsTransformCustomImport(jsx=react-jsxdev).js +++ b/tests/baselines/reference/jsxJsxsCjsTransformCustomImport(jsx=react-jsxdev).js @@ -14,4 +14,4 @@ exports.__esModule = true; var jsx_dev_runtime_1 = require("preact/jsx-dev-runtime"); var _jsxFileName = "tests/cases/conformance/jsx/jsxs/jsxJsxsCjsTransformCustomImport.tsx"; /// -var a = jsx_dev_runtime_1.jsxDEV(jsx_dev_runtime_1.Fragment, { children: [jsx_dev_runtime_1.jsxDEV("p", {}, void 0, false, { fileName: _jsxFileName, lineNumber: 3, columnNumber: 3 }, this), "text", jsx_dev_runtime_1.jsxDEV("div", { className: "foo" }, void 0, false, { fileName: _jsxFileName, lineNumber: 5, columnNumber: 3 }, this)] }, void 0, true, { fileName: _jsxFileName, lineNumber: 2, columnNumber: 10 }, this); +var a = (0, jsx_dev_runtime_1.jsxDEV)(jsx_dev_runtime_1.Fragment, { children: [(0, jsx_dev_runtime_1.jsxDEV)("p", {}, void 0, false, { fileName: _jsxFileName, lineNumber: 3, columnNumber: 3 }, this), "text", (0, jsx_dev_runtime_1.jsxDEV)("div", { className: "foo" }, void 0, false, { fileName: _jsxFileName, lineNumber: 5, columnNumber: 3 }, this)] }, void 0, true, { fileName: _jsxFileName, lineNumber: 2, columnNumber: 10 }, this); diff --git a/tests/baselines/reference/jsxJsxsCjsTransformCustomImportPragma(jsx=react-jsx).js b/tests/baselines/reference/jsxJsxsCjsTransformCustomImportPragma(jsx=react-jsx).js index 200b3923f587d..04ecd0966b83f 100644 --- a/tests/baselines/reference/jsxJsxsCjsTransformCustomImportPragma(jsx=react-jsx).js +++ b/tests/baselines/reference/jsxJsxsCjsTransformCustomImportPragma(jsx=react-jsx).js @@ -28,7 +28,7 @@ exports.__esModule = true; var jsx_runtime_1 = require("preact/jsx-runtime"); /// /* @jsxImportSource preact */ -var a = jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [jsx_runtime_1.jsx("p", {}, void 0), "text", jsx_runtime_1.jsx("div", { className: "foo" }, void 0)] }, void 0); +var a = (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("p", {}, void 0), "text", (0, jsx_runtime_1.jsx)("div", { className: "foo" }, void 0)] }, void 0); //// [react.js] "use strict"; exports.__esModule = true; @@ -36,4 +36,4 @@ var jsx_runtime_1 = require("react/jsx-runtime"); /// /* @jsxImportSource react */ require("./preact"); -var a = jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [jsx_runtime_1.jsx("p", {}, void 0), "text", jsx_runtime_1.jsx("div", { className: "foo" }, void 0)] }, void 0); +var a = (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("p", {}, void 0), "text", (0, jsx_runtime_1.jsx)("div", { className: "foo" }, void 0)] }, void 0); diff --git a/tests/baselines/reference/jsxJsxsCjsTransformCustomImportPragma(jsx=react-jsxdev).js b/tests/baselines/reference/jsxJsxsCjsTransformCustomImportPragma(jsx=react-jsxdev).js index 136a67f48a5ca..4b2992df9cc80 100644 --- a/tests/baselines/reference/jsxJsxsCjsTransformCustomImportPragma(jsx=react-jsxdev).js +++ b/tests/baselines/reference/jsxJsxsCjsTransformCustomImportPragma(jsx=react-jsxdev).js @@ -29,7 +29,7 @@ var jsx_dev_runtime_1 = require("preact/jsx-dev-runtime"); var _jsxFileName = "tests/cases/conformance/jsx/jsxs/preact.tsx"; /// /* @jsxImportSource preact */ -var a = jsx_dev_runtime_1.jsxDEV(jsx_dev_runtime_1.Fragment, { children: [jsx_dev_runtime_1.jsxDEV("p", {}, void 0, false, { fileName: _jsxFileName, lineNumber: 4, columnNumber: 3 }, this), "text", jsx_dev_runtime_1.jsxDEV("div", { className: "foo" }, void 0, false, { fileName: _jsxFileName, lineNumber: 6, columnNumber: 3 }, this)] }, void 0, true, { fileName: _jsxFileName, lineNumber: 3, columnNumber: 10 }, this); +var a = (0, jsx_dev_runtime_1.jsxDEV)(jsx_dev_runtime_1.Fragment, { children: [(0, jsx_dev_runtime_1.jsxDEV)("p", {}, void 0, false, { fileName: _jsxFileName, lineNumber: 4, columnNumber: 3 }, this), "text", (0, jsx_dev_runtime_1.jsxDEV)("div", { className: "foo" }, void 0, false, { fileName: _jsxFileName, lineNumber: 6, columnNumber: 3 }, this)] }, void 0, true, { fileName: _jsxFileName, lineNumber: 3, columnNumber: 10 }, this); //// [react.js] "use strict"; exports.__esModule = true; @@ -38,4 +38,4 @@ var _jsxFileName = "tests/cases/conformance/jsx/jsxs/react.tsx"; /// /* @jsxImportSource react */ require("./preact"); -var a = jsx_dev_runtime_1.jsxDEV(jsx_dev_runtime_1.Fragment, { children: [jsx_dev_runtime_1.jsxDEV("p", {}, void 0, false, { fileName: _jsxFileName, lineNumber: 5, columnNumber: 3 }, this), "text", jsx_dev_runtime_1.jsxDEV("div", { className: "foo" }, void 0, false, { fileName: _jsxFileName, lineNumber: 7, columnNumber: 3 }, this)] }, void 0, true, { fileName: _jsxFileName, lineNumber: 4, columnNumber: 10 }, this); +var a = (0, jsx_dev_runtime_1.jsxDEV)(jsx_dev_runtime_1.Fragment, { children: [(0, jsx_dev_runtime_1.jsxDEV)("p", {}, void 0, false, { fileName: _jsxFileName, lineNumber: 5, columnNumber: 3 }, this), "text", (0, jsx_dev_runtime_1.jsxDEV)("div", { className: "foo" }, void 0, false, { fileName: _jsxFileName, lineNumber: 7, columnNumber: 3 }, this)] }, void 0, true, { fileName: _jsxFileName, lineNumber: 4, columnNumber: 10 }, this); diff --git a/tests/baselines/reference/jsxJsxsCjsTransformKeyProp(jsx=react-jsx).js b/tests/baselines/reference/jsxJsxsCjsTransformKeyProp(jsx=react-jsx).js index 0a4e9ed38b339..2610e03f45920 100644 --- a/tests/baselines/reference/jsxJsxsCjsTransformKeyProp(jsx=react-jsx).js +++ b/tests/baselines/reference/jsxJsxsCjsTransformKeyProp(jsx=react-jsx).js @@ -25,5 +25,5 @@ var react_1 = require("react"); var jsx_runtime_1 = require("react/jsx-runtime"); /// var props = { answer: 42 }; -var a = jsx_runtime_1.jsx("div", __assign({}, props, { children: "text" }), "foo"); -var b = react_1.createElement("div", __assign({}, props, { key: "bar" }), "text"); +var a = (0, jsx_runtime_1.jsx)("div", __assign({}, props, { children: "text" }), "foo"); +var b = (0, react_1.createElement)("div", __assign({}, props, { key: "bar" }), "text"); diff --git a/tests/baselines/reference/jsxJsxsCjsTransformKeyProp(jsx=react-jsxdev).js b/tests/baselines/reference/jsxJsxsCjsTransformKeyProp(jsx=react-jsxdev).js index fc8b8fb64708a..7e9c7f0957cf7 100644 --- a/tests/baselines/reference/jsxJsxsCjsTransformKeyProp(jsx=react-jsxdev).js +++ b/tests/baselines/reference/jsxJsxsCjsTransformKeyProp(jsx=react-jsxdev).js @@ -26,5 +26,5 @@ var jsx_dev_runtime_1 = require("react/jsx-dev-runtime"); var _jsxFileName = "tests/cases/conformance/jsx/jsxs/jsxJsxsCjsTransformKeyProp.tsx"; /// var props = { answer: 42 }; -var a = jsx_dev_runtime_1.jsxDEV("div", __assign({}, props, { children: "text" }), "foo", false, { fileName: _jsxFileName, lineNumber: 3, columnNumber: 10 }, this); -var b = react_1.createElement("div", __assign({}, props, { key: "bar" }), "text"); +var a = (0, jsx_dev_runtime_1.jsxDEV)("div", __assign({}, props, { children: "text" }), "foo", false, { fileName: _jsxFileName, lineNumber: 3, columnNumber: 10 }, this); +var b = (0, react_1.createElement)("div", __assign({}, props, { key: "bar" }), "text"); diff --git a/tests/baselines/reference/jsxJsxsCjsTransformKeyPropCustomImport(jsx=react-jsx).js b/tests/baselines/reference/jsxJsxsCjsTransformKeyPropCustomImport(jsx=react-jsx).js index 5183b42663027..ba3d3bc8a4e96 100644 --- a/tests/baselines/reference/jsxJsxsCjsTransformKeyPropCustomImport(jsx=react-jsx).js +++ b/tests/baselines/reference/jsxJsxsCjsTransformKeyPropCustomImport(jsx=react-jsx).js @@ -25,5 +25,5 @@ var preact_1 = require("preact"); var jsx_runtime_1 = require("preact/jsx-runtime"); /// var props = { answer: 42 }; -var a = jsx_runtime_1.jsx("div", __assign({}, props, { children: "text" }), "foo"); -var b = preact_1.createElement("div", __assign({}, props, { key: "bar" }), "text"); +var a = (0, jsx_runtime_1.jsx)("div", __assign({}, props, { children: "text" }), "foo"); +var b = (0, preact_1.createElement)("div", __assign({}, props, { key: "bar" }), "text"); diff --git a/tests/baselines/reference/jsxJsxsCjsTransformKeyPropCustomImport(jsx=react-jsxdev).js b/tests/baselines/reference/jsxJsxsCjsTransformKeyPropCustomImport(jsx=react-jsxdev).js index ef1e4bd6a9983..84cf93e44baad 100644 --- a/tests/baselines/reference/jsxJsxsCjsTransformKeyPropCustomImport(jsx=react-jsxdev).js +++ b/tests/baselines/reference/jsxJsxsCjsTransformKeyPropCustomImport(jsx=react-jsxdev).js @@ -26,5 +26,5 @@ var jsx_dev_runtime_1 = require("preact/jsx-dev-runtime"); var _jsxFileName = "tests/cases/conformance/jsx/jsxs/jsxJsxsCjsTransformKeyPropCustomImport.tsx"; /// var props = { answer: 42 }; -var a = jsx_dev_runtime_1.jsxDEV("div", __assign({}, props, { children: "text" }), "foo", false, { fileName: _jsxFileName, lineNumber: 3, columnNumber: 10 }, this); -var b = preact_1.createElement("div", __assign({}, props, { key: "bar" }), "text"); +var a = (0, jsx_dev_runtime_1.jsxDEV)("div", __assign({}, props, { children: "text" }), "foo", false, { fileName: _jsxFileName, lineNumber: 3, columnNumber: 10 }, this); +var b = (0, preact_1.createElement)("div", __assign({}, props, { key: "bar" }), "text"); diff --git a/tests/baselines/reference/jsxJsxsCjsTransformKeyPropCustomImportPragma(jsx=react-jsx).js b/tests/baselines/reference/jsxJsxsCjsTransformKeyPropCustomImportPragma(jsx=react-jsx).js index 2daf68d6ce31b..26597e5b56112 100644 --- a/tests/baselines/reference/jsxJsxsCjsTransformKeyPropCustomImportPragma(jsx=react-jsx).js +++ b/tests/baselines/reference/jsxJsxsCjsTransformKeyPropCustomImportPragma(jsx=react-jsx).js @@ -39,8 +39,8 @@ var jsx_runtime_1 = require("preact/jsx-runtime"); /// /* @jsxImportSource preact */ var props = { answer: 42 }; -var a = jsx_runtime_1.jsx("div", __assign({}, props, { children: "text" }), "foo"); -var b = preact_1.createElement("div", __assign({}, props, { key: "bar" }), "text"); +var a = (0, jsx_runtime_1.jsx)("div", __assign({}, props, { children: "text" }), "foo"); +var b = (0, preact_1.createElement)("div", __assign({}, props, { key: "bar" }), "text"); //// [react.js] "use strict"; var __assign = (this && this.__assign) || function () { @@ -61,5 +61,5 @@ var jsx_runtime_1 = require("react/jsx-runtime"); /* @jsxImportSource react */ require("./preact"); var props2 = { answer: 42 }; -var a2 = jsx_runtime_1.jsx("div", __assign({}, props2, { children: "text" }), "foo"); -var b2 = react_1.createElement("div", __assign({}, props2, { key: "bar" }), "text"); +var a2 = (0, jsx_runtime_1.jsx)("div", __assign({}, props2, { children: "text" }), "foo"); +var b2 = (0, react_1.createElement)("div", __assign({}, props2, { key: "bar" }), "text"); diff --git a/tests/baselines/reference/jsxJsxsCjsTransformKeyPropCustomImportPragma(jsx=react-jsxdev).js b/tests/baselines/reference/jsxJsxsCjsTransformKeyPropCustomImportPragma(jsx=react-jsxdev).js index 8aa24328c00fb..945519966078e 100644 --- a/tests/baselines/reference/jsxJsxsCjsTransformKeyPropCustomImportPragma(jsx=react-jsxdev).js +++ b/tests/baselines/reference/jsxJsxsCjsTransformKeyPropCustomImportPragma(jsx=react-jsxdev).js @@ -40,8 +40,8 @@ var _jsxFileName = "tests/cases/conformance/jsx/jsxs/preact.tsx"; /// /* @jsxImportSource preact */ var props = { answer: 42 }; -var a = jsx_dev_runtime_1.jsxDEV("div", __assign({}, props, { children: "text" }), "foo", false, { fileName: _jsxFileName, lineNumber: 4, columnNumber: 10 }, this); -var b = preact_1.createElement("div", __assign({}, props, { key: "bar" }), "text"); +var a = (0, jsx_dev_runtime_1.jsxDEV)("div", __assign({}, props, { children: "text" }), "foo", false, { fileName: _jsxFileName, lineNumber: 4, columnNumber: 10 }, this); +var b = (0, preact_1.createElement)("div", __assign({}, props, { key: "bar" }), "text"); //// [react.js] "use strict"; var __assign = (this && this.__assign) || function () { @@ -63,5 +63,5 @@ var _jsxFileName = "tests/cases/conformance/jsx/jsxs/react.tsx"; /* @jsxImportSource react */ require("./preact"); var props2 = { answer: 42 }; -var a2 = jsx_dev_runtime_1.jsxDEV("div", __assign({}, props2, { children: "text" }), "foo", false, { fileName: _jsxFileName, lineNumber: 5, columnNumber: 11 }, this); -var b2 = react_1.createElement("div", __assign({}, props2, { key: "bar" }), "text"); +var a2 = (0, jsx_dev_runtime_1.jsxDEV)("div", __assign({}, props2, { children: "text" }), "foo", false, { fileName: _jsxFileName, lineNumber: 5, columnNumber: 11 }, this); +var b2 = (0, react_1.createElement)("div", __assign({}, props2, { key: "bar" }), "text"); diff --git a/tests/baselines/reference/jsxJsxsCjsTransformNestedSelfClosingChild(jsx=react-jsx).js b/tests/baselines/reference/jsxJsxsCjsTransformNestedSelfClosingChild(jsx=react-jsx).js index b7d0e0d6a9493..9b5788668a9f0 100644 --- a/tests/baselines/reference/jsxJsxsCjsTransformNestedSelfClosingChild(jsx=react-jsx).js +++ b/tests/baselines/reference/jsxJsxsCjsTransformNestedSelfClosingChild(jsx=react-jsx).js @@ -25,7 +25,7 @@ console.log( "use strict"; exports.__esModule = true; var jsx_runtime_1 = require("react/jsx-runtime"); -console.log(jsx_runtime_1.jsx("div", { children: jsx_runtime_1.jsx("div", {}, void 0) }, void 0)); -console.log(jsx_runtime_1.jsxs("div", { children: [jsx_runtime_1.jsx("div", {}, void 0), - jsx_runtime_1.jsx("div", {}, void 0)] }, void 0)); -console.log(jsx_runtime_1.jsx("div", { children: [1, 2].map(function (i) { return jsx_runtime_1.jsx("div", { children: i }, i); }) }, void 0)); +console.log((0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsx)("div", {}, void 0) }, void 0)); +console.log((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("div", {}, void 0), + (0, jsx_runtime_1.jsx)("div", {}, void 0)] }, void 0)); +console.log((0, jsx_runtime_1.jsx)("div", { children: [1, 2].map(function (i) { return (0, jsx_runtime_1.jsx)("div", { children: i }, i); }) }, void 0)); diff --git a/tests/baselines/reference/jsxJsxsCjsTransformNestedSelfClosingChild(jsx=react-jsxdev).js b/tests/baselines/reference/jsxJsxsCjsTransformNestedSelfClosingChild(jsx=react-jsxdev).js index 6ddbbb35817ab..9634b8edc48c5 100644 --- a/tests/baselines/reference/jsxJsxsCjsTransformNestedSelfClosingChild(jsx=react-jsxdev).js +++ b/tests/baselines/reference/jsxJsxsCjsTransformNestedSelfClosingChild(jsx=react-jsxdev).js @@ -27,7 +27,7 @@ var _this = this; exports.__esModule = true; var jsx_dev_runtime_1 = require("react/jsx-dev-runtime"); var _jsxFileName = "tests/cases/conformance/jsx/jsxs/jsxJsxsCjsTransformNestedSelfClosingChild.tsx"; -console.log(jsx_dev_runtime_1.jsxDEV("div", { children: jsx_dev_runtime_1.jsxDEV("div", {}, void 0, false, { fileName: _jsxFileName, lineNumber: 6, columnNumber: 5 }, this) }, void 0, false, { fileName: _jsxFileName, lineNumber: 4, columnNumber: 13 }, this)); -console.log(jsx_dev_runtime_1.jsxDEV("div", { children: [jsx_dev_runtime_1.jsxDEV("div", {}, void 0, false, { fileName: _jsxFileName, lineNumber: 12, columnNumber: 5 }, this), - jsx_dev_runtime_1.jsxDEV("div", {}, void 0, false, { fileName: _jsxFileName, lineNumber: 13, columnNumber: 5 }, this)] }, void 0, true, { fileName: _jsxFileName, lineNumber: 10, columnNumber: 13 }, this)); -console.log(jsx_dev_runtime_1.jsxDEV("div", { children: [1, 2].map(function (i) { return jsx_dev_runtime_1.jsxDEV("div", { children: i }, i, false, { fileName: _jsxFileName, lineNumber: 19, columnNumber: 21 }, _this); }) }, void 0, false, { fileName: _jsxFileName, lineNumber: 17, columnNumber: 13 }, this)); +console.log((0, jsx_dev_runtime_1.jsxDEV)("div", { children: (0, jsx_dev_runtime_1.jsxDEV)("div", {}, void 0, false, { fileName: _jsxFileName, lineNumber: 6, columnNumber: 5 }, this) }, void 0, false, { fileName: _jsxFileName, lineNumber: 4, columnNumber: 13 }, this)); +console.log((0, jsx_dev_runtime_1.jsxDEV)("div", { children: [(0, jsx_dev_runtime_1.jsxDEV)("div", {}, void 0, false, { fileName: _jsxFileName, lineNumber: 12, columnNumber: 5 }, this), + (0, jsx_dev_runtime_1.jsxDEV)("div", {}, void 0, false, { fileName: _jsxFileName, lineNumber: 13, columnNumber: 5 }, this)] }, void 0, true, { fileName: _jsxFileName, lineNumber: 10, columnNumber: 13 }, this)); +console.log((0, jsx_dev_runtime_1.jsxDEV)("div", { children: [1, 2].map(function (i) { return (0, jsx_dev_runtime_1.jsxDEV)("div", { children: i }, i, false, { fileName: _jsxFileName, lineNumber: 19, columnNumber: 21 }, _this); }) }, void 0, false, { fileName: _jsxFileName, lineNumber: 17, columnNumber: 13 }, this)); diff --git a/tests/baselines/reference/jsxJsxsCjsTransformSubstitutesNames(jsx=react-jsx).js b/tests/baselines/reference/jsxJsxsCjsTransformSubstitutesNames(jsx=react-jsx).js index 1c239af6274cb..9e00c8d0152ca 100644 --- a/tests/baselines/reference/jsxJsxsCjsTransformSubstitutesNames(jsx=react-jsx).js +++ b/tests/baselines/reference/jsxJsxsCjsTransformSubstitutesNames(jsx=react-jsx).js @@ -9,4 +9,4 @@ export {}; exports.__esModule = true; var jsx_runtime_1 = require("react/jsx-runtime"); /// -var a = jsx_runtime_1.jsx("div", {}, void 0); +var a = (0, jsx_runtime_1.jsx)("div", {}, void 0); diff --git a/tests/baselines/reference/jsxJsxsCjsTransformSubstitutesNames(jsx=react-jsxdev).js b/tests/baselines/reference/jsxJsxsCjsTransformSubstitutesNames(jsx=react-jsxdev).js index 8f7a10afefb44..cf2858c5b0df2 100644 --- a/tests/baselines/reference/jsxJsxsCjsTransformSubstitutesNames(jsx=react-jsxdev).js +++ b/tests/baselines/reference/jsxJsxsCjsTransformSubstitutesNames(jsx=react-jsxdev).js @@ -10,4 +10,4 @@ exports.__esModule = true; var jsx_dev_runtime_1 = require("react/jsx-dev-runtime"); var _jsxFileName = "tests/cases/conformance/jsx/jsxs/jsxJsxsCjsTransformSubstitutesNames.tsx"; /// -var a = jsx_dev_runtime_1.jsxDEV("div", {}, void 0, false, { fileName: _jsxFileName, lineNumber: 2, columnNumber: 10 }, this); +var a = (0, jsx_dev_runtime_1.jsxDEV)("div", {}, void 0, false, { fileName: _jsxFileName, lineNumber: 2, columnNumber: 10 }, this); diff --git a/tests/baselines/reference/jsxJsxsCjsTransformSubstitutesNamesFragment(jsx=react-jsx).js b/tests/baselines/reference/jsxJsxsCjsTransformSubstitutesNamesFragment(jsx=react-jsx).js index 74944d20d7c31..9e53d1df09c8f 100644 --- a/tests/baselines/reference/jsxJsxsCjsTransformSubstitutesNamesFragment(jsx=react-jsx).js +++ b/tests/baselines/reference/jsxJsxsCjsTransformSubstitutesNamesFragment(jsx=react-jsx).js @@ -13,4 +13,4 @@ export {}; exports.__esModule = true; var jsx_runtime_1 = require("react/jsx-runtime"); /// -var a = jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [jsx_runtime_1.jsx("p", {}, void 0), "text", jsx_runtime_1.jsx("div", {}, void 0)] }, void 0); +var a = (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("p", {}, void 0), "text", (0, jsx_runtime_1.jsx)("div", {}, void 0)] }, void 0); diff --git a/tests/baselines/reference/jsxJsxsCjsTransformSubstitutesNamesFragment(jsx=react-jsxdev).js b/tests/baselines/reference/jsxJsxsCjsTransformSubstitutesNamesFragment(jsx=react-jsxdev).js index 810e1941eb985..e37c25c6988b1 100644 --- a/tests/baselines/reference/jsxJsxsCjsTransformSubstitutesNamesFragment(jsx=react-jsxdev).js +++ b/tests/baselines/reference/jsxJsxsCjsTransformSubstitutesNamesFragment(jsx=react-jsxdev).js @@ -14,4 +14,4 @@ exports.__esModule = true; var jsx_dev_runtime_1 = require("react/jsx-dev-runtime"); var _jsxFileName = "tests/cases/conformance/jsx/jsxs/jsxJsxsCjsTransformSubstitutesNamesFragment.tsx"; /// -var a = jsx_dev_runtime_1.jsxDEV(jsx_dev_runtime_1.Fragment, { children: [jsx_dev_runtime_1.jsxDEV("p", {}, void 0, false, { fileName: _jsxFileName, lineNumber: 3, columnNumber: 3 }, this), "text", jsx_dev_runtime_1.jsxDEV("div", {}, void 0, false, { fileName: _jsxFileName, lineNumber: 5, columnNumber: 3 }, this)] }, void 0, true, { fileName: _jsxFileName, lineNumber: 2, columnNumber: 10 }, this); +var a = (0, jsx_dev_runtime_1.jsxDEV)(jsx_dev_runtime_1.Fragment, { children: [(0, jsx_dev_runtime_1.jsxDEV)("p", {}, void 0, false, { fileName: _jsxFileName, lineNumber: 3, columnNumber: 3 }, this), "text", (0, jsx_dev_runtime_1.jsxDEV)("div", {}, void 0, false, { fileName: _jsxFileName, lineNumber: 5, columnNumber: 3 }, this)] }, void 0, true, { fileName: _jsxFileName, lineNumber: 2, columnNumber: 10 }, this); diff --git a/tests/baselines/reference/jsxNamespaceGlobalReexport.js b/tests/baselines/reference/jsxNamespaceGlobalReexport.js index 5b1261b8877b8..dab912ca0e59b 100644 --- a/tests/baselines/reference/jsxNamespaceGlobalReexport.js +++ b/tests/baselines/reference/jsxNamespaceGlobalReexport.js @@ -110,5 +110,5 @@ export const Comp = () =>
; exports.__esModule = true; exports.Comp = void 0; var jsx_runtime_1 = require("preact/jsx-runtime"); -var Comp = function () { return jsx_runtime_1.jsx("div", {}, void 0); }; +var Comp = function () { return (0, jsx_runtime_1.jsx)("div", {}, void 0); }; exports.Comp = Comp; diff --git a/tests/baselines/reference/jsxNamespaceGlobalReexportMissingAliasTarget.js b/tests/baselines/reference/jsxNamespaceGlobalReexportMissingAliasTarget.js index 1e8f719fcad78..ff1dfd19b1d21 100644 --- a/tests/baselines/reference/jsxNamespaceGlobalReexportMissingAliasTarget.js +++ b/tests/baselines/reference/jsxNamespaceGlobalReexportMissingAliasTarget.js @@ -106,5 +106,5 @@ export const Comp = () =>
; exports.__esModule = true; exports.Comp = void 0; var jsx_runtime_1 = require("preact/jsx-runtime"); -var Comp = function () { return jsx_runtime_1.jsx("div", {}, void 0); }; +var Comp = function () { return (0, jsx_runtime_1.jsx)("div", {}, void 0); }; exports.Comp = Comp; diff --git a/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespace.js b/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespace.js index 68e607e069d7f..faf0631075199 100644 --- a/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespace.js +++ b/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespace.js @@ -106,5 +106,5 @@ export const Comp = () =>
; exports.__esModule = true; exports.Comp = void 0; var jsx_runtime_1 = require("preact/jsx-runtime"); -var Comp = function () { return jsx_runtime_1.jsx("div", {}, void 0); }; +var Comp = function () { return (0, jsx_runtime_1.jsx)("div", {}, void 0); }; exports.Comp = Comp; diff --git a/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespaceFromConfigPickedOverGlobalOne.js b/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespaceFromConfigPickedOverGlobalOne.js index 6ce2c07f82d32..436bbc6930f72 100644 --- a/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespaceFromConfigPickedOverGlobalOne.js +++ b/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespaceFromConfigPickedOverGlobalOne.js @@ -69,5 +69,5 @@ export const Comp = () =>
; exports.__esModule = true; exports.Comp = void 0; var jsx_runtime_1 = require("@emotion/react/jsx-runtime"); -var Comp = function () { return jsx_runtime_1.jsx("div", { css: "color: hotpink;" }, void 0); }; +var Comp = function () { return (0, jsx_runtime_1.jsx)("div", { css: "color: hotpink;" }, void 0); }; exports.Comp = Comp; diff --git a/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespaceFromPragmaPickedOverGlobalOne.js b/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespaceFromPragmaPickedOverGlobalOne.js index 47fbcb73eae4d..eb234fe58df7b 100644 --- a/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespaceFromPragmaPickedOverGlobalOne.js +++ b/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespaceFromPragmaPickedOverGlobalOne.js @@ -71,5 +71,5 @@ exports.__esModule = true; exports.Comp = void 0; var jsx_runtime_1 = require("@emotion/react/jsx-runtime"); /* @jsxImportSource @emotion/react */ -var Comp = function () { return jsx_runtime_1.jsx("div", { css: "color: hotpink;" }, void 0); }; +var Comp = function () { return (0, jsx_runtime_1.jsx)("div", { css: "color: hotpink;" }, void 0); }; exports.Comp = Comp; diff --git a/tests/baselines/reference/missingMemberErrorHasShortPath.js b/tests/baselines/reference/missingMemberErrorHasShortPath.js index 8f32203055b6d..f8dad5e9a8bbf 100644 --- a/tests/baselines/reference/missingMemberErrorHasShortPath.js +++ b/tests/baselines/reference/missingMemberErrorHasShortPath.js @@ -17,4 +17,4 @@ exports.exist = exist; "use strict"; exports.__esModule = true; var utils_js_1 = require("./utils.js"); -utils_js_1.exit(); +(0, utils_js_1.exit)(); diff --git a/tests/baselines/reference/namedImportNonExistentName.js b/tests/baselines/reference/namedImportNonExistentName.js index b017d9b3f093f..7c3ed684e8ea1 100644 --- a/tests/baselines/reference/namedImportNonExistentName.js +++ b/tests/baselines/reference/namedImportNonExistentName.js @@ -26,6 +26,6 @@ module.exports = x; "use strict"; exports.__esModule = true; var foo_1 = require("./foo"); -foo_1.foo(); +(0, foo_1.foo)(); var foo2_1 = require("./foo2"); foo2_1.c; diff --git a/tests/baselines/reference/reactImportUnusedInNewJSXEmit(jsx=react-jsx).js b/tests/baselines/reference/reactImportUnusedInNewJSXEmit(jsx=react-jsx).js index 2d8f1afe0fbdc..3f7b46c6bd77b 100644 --- a/tests/baselines/reference/reactImportUnusedInNewJSXEmit(jsx=react-jsx).js +++ b/tests/baselines/reference/reactImportUnusedInNewJSXEmit(jsx=react-jsx).js @@ -17,9 +17,9 @@ exports.__esModule = true; exports.Foo = void 0; var jsx_runtime_1 = require("react/jsx-runtime"); function Bar() { - return jsx_runtime_1.jsx("div", {}, void 0); + return (0, jsx_runtime_1.jsx)("div", {}, void 0); } function Foo() { - return jsx_runtime_1.jsx(Bar, {}, void 0); + return (0, jsx_runtime_1.jsx)(Bar, {}, void 0); } exports.Foo = Foo; diff --git a/tests/baselines/reference/reactImportUnusedInNewJSXEmit(jsx=react-jsxdev).js b/tests/baselines/reference/reactImportUnusedInNewJSXEmit(jsx=react-jsxdev).js index c7235c7eaeb52..113e038f4365b 100644 --- a/tests/baselines/reference/reactImportUnusedInNewJSXEmit(jsx=react-jsxdev).js +++ b/tests/baselines/reference/reactImportUnusedInNewJSXEmit(jsx=react-jsxdev).js @@ -18,9 +18,9 @@ exports.Foo = void 0; var jsx_dev_runtime_1 = require("react/jsx-dev-runtime"); var _jsxFileName = "tests/cases/compiler/index.tsx"; function Bar() { - return jsx_dev_runtime_1.jsxDEV("div", {}, void 0, false, { fileName: _jsxFileName, lineNumber: 6, columnNumber: 9 }, this); + return (0, jsx_dev_runtime_1.jsxDEV)("div", {}, void 0, false, { fileName: _jsxFileName, lineNumber: 6, columnNumber: 9 }, this); } function Foo() { - return jsx_dev_runtime_1.jsxDEV(Bar, {}, void 0, false, { fileName: _jsxFileName, lineNumber: 10, columnNumber: 9 }, this); + return (0, jsx_dev_runtime_1.jsxDEV)(Bar, {}, void 0, false, { fileName: _jsxFileName, lineNumber: 10, columnNumber: 9 }, this); } exports.Foo = Foo; diff --git a/tests/baselines/reference/referenceTypesPreferedToPathIfPossible.js b/tests/baselines/reference/referenceTypesPreferedToPathIfPossible.js index 2557c88a3f0ed..cd8a4b53426c3 100644 --- a/tests/baselines/reference/referenceTypesPreferedToPathIfPossible.js +++ b/tests/baselines/reference/referenceTypesPreferedToPathIfPossible.js @@ -1,13 +1,13 @@ //// [tests/cases/compiler/referenceTypesPreferedToPathIfPossible.ts] //// //// [index.d.ts] -declare module "url" { - export class Url {} - export function parse(): Url; +declare module "url" { + export class Url {} + export function parse(): Url; } //// [usage.ts] -import { parse } from "url"; -export const thing = () => parse(); +import { parse } from "url"; +export const thing = () => parse(); //// [usage.js] @@ -15,7 +15,7 @@ export const thing = () => parse(); exports.__esModule = true; exports.thing = void 0; var url_1 = require("url"); -var thing = function () { return 0, url_1.parse)(); }; +var thing = function () { return (0, url_1.parse)(); }; exports.thing = thing; diff --git a/tests/baselines/reference/tsbuild/inferredTypeFromTransitiveModule/initial-build/reports-errors-in-files-affected-by-change-in-signature-with-isolatedModules.js b/tests/baselines/reference/tsbuild/inferredTypeFromTransitiveModule/initial-build/reports-errors-in-files-affected-by-change-in-signature-with-isolatedModules.js index 3aa61f45cd7c0..54f16633b1c7b 100644 --- a/tests/baselines/reference/tsbuild/inferredTypeFromTransitiveModule/initial-build/reports-errors-in-files-affected-by-change-in-signature-with-isolatedModules.js +++ b/tests/baselines/reference/tsbuild/inferredTypeFromTransitiveModule/initial-build/reports-errors-in-files-affected-by-change-in-signature-with-isolatedModules.js @@ -415,7 +415,7 @@ exports.bar = void 0; var bar_1 = require("./bar"); Object.defineProperty(exports, "bar", { enumerable: true, get: function () { return bar_1.default; } }); var bar_2 = require("./bar"); -bar_2.default(); +(0, bar_2.default)(); //// [/src/obj/tsconfig.tsbuildinfo] diff --git a/tests/baselines/reference/tsc/declarationEmit/when-same-version-is-referenced-through-source-and-another-symlinked-package-moduleCaseChange.js b/tests/baselines/reference/tsc/declarationEmit/when-same-version-is-referenced-through-source-and-another-symlinked-package-moduleCaseChange.js index 894a7c71e7b1b..db8d9a3c52bcf 100644 --- a/tests/baselines/reference/tsc/declarationEmit/when-same-version-is-referenced-through-source-and-another-symlinked-package-moduleCaseChange.js +++ b/tests/baselines/reference/tsc/declarationEmit/when-same-version-is-referenced-through-source-and-another-symlinked-package-moduleCaseChange.js @@ -170,7 +170,7 @@ exitCode:: ExitStatus.Success Object.defineProperty(exports, "__esModule", { value: true }); exports.actions = void 0; var typescript_fsa_1 = require("typescript-fsa"); // Include version of shared lib -var action = typescript_fsa_1.actionCreatorFactory("somekey"); +var action = (0, typescript_fsa_1.actionCreatorFactory)("somekey"); var featureOne = action("feature-one"); exports.actions = { featureOne: featureOne }; diff --git a/tests/baselines/reference/tsc/declarationEmit/when-same-version-is-referenced-through-source-and-another-symlinked-package-with-indirect-link-moduleCaseChange.js b/tests/baselines/reference/tsc/declarationEmit/when-same-version-is-referenced-through-source-and-another-symlinked-package-with-indirect-link-moduleCaseChange.js index f659972f6555f..f35f09682d02e 100644 --- a/tests/baselines/reference/tsc/declarationEmit/when-same-version-is-referenced-through-source-and-another-symlinked-package-with-indirect-link-moduleCaseChange.js +++ b/tests/baselines/reference/tsc/declarationEmit/when-same-version-is-referenced-through-source-and-another-symlinked-package-with-indirect-link-moduleCaseChange.js @@ -181,7 +181,7 @@ exitCode:: ExitStatus.Success Object.defineProperty(exports, "__esModule", { value: true }); exports.actions = void 0; var typescript_fsa_1 = require("typescript-fsa"); // Include version of shared lib -var action = typescript_fsa_1.actionCreatorFactory("somekey"); +var action = (0, typescript_fsa_1.actionCreatorFactory)("somekey"); var featureOne = action("feature-one"); exports.actions = { featureOne: featureOne }; diff --git a/tests/baselines/reference/tsc/declarationEmit/when-same-version-is-referenced-through-source-and-another-symlinked-package-with-indirect-link.js b/tests/baselines/reference/tsc/declarationEmit/when-same-version-is-referenced-through-source-and-another-symlinked-package-with-indirect-link.js index 2568b26f610bf..8dff9f49f6c15 100644 --- a/tests/baselines/reference/tsc/declarationEmit/when-same-version-is-referenced-through-source-and-another-symlinked-package-with-indirect-link.js +++ b/tests/baselines/reference/tsc/declarationEmit/when-same-version-is-referenced-through-source-and-another-symlinked-package-with-indirect-link.js @@ -181,7 +181,7 @@ exitCode:: ExitStatus.Success Object.defineProperty(exports, "__esModule", { value: true }); exports.actions = void 0; var typescript_fsa_1 = require("typescript-fsa"); // Include version of shared lib -var action = typescript_fsa_1.actionCreatorFactory("somekey"); +var action = (0, typescript_fsa_1.actionCreatorFactory)("somekey"); var featureOne = action("feature-one"); exports.actions = { featureOne: featureOne }; diff --git a/tests/baselines/reference/tsc/declarationEmit/when-same-version-is-referenced-through-source-and-another-symlinked-package.js b/tests/baselines/reference/tsc/declarationEmit/when-same-version-is-referenced-through-source-and-another-symlinked-package.js index c14025b0fc02c..431f2bd31e868 100644 --- a/tests/baselines/reference/tsc/declarationEmit/when-same-version-is-referenced-through-source-and-another-symlinked-package.js +++ b/tests/baselines/reference/tsc/declarationEmit/when-same-version-is-referenced-through-source-and-another-symlinked-package.js @@ -170,7 +170,7 @@ exitCode:: ExitStatus.Success Object.defineProperty(exports, "__esModule", { value: true }); exports.actions = void 0; var typescript_fsa_1 = require("typescript-fsa"); // Include version of shared lib -var action = typescript_fsa_1.actionCreatorFactory("somekey"); +var action = (0, typescript_fsa_1.actionCreatorFactory)("somekey"); var featureOne = action("feature-one"); exports.actions = { featureOne: featureOne }; diff --git a/tests/baselines/reference/tsc/react-jsx-emit-mode/initial-build/with-no-backing-types-found-doesn't-crash-under---strict.js b/tests/baselines/reference/tsc/react-jsx-emit-mode/initial-build/with-no-backing-types-found-doesn't-crash-under---strict.js index b0b8497aaf4eb..12e3c2a429317 100644 --- a/tests/baselines/reference/tsc/react-jsx-emit-mode/initial-build/with-no-backing-types-found-doesn't-crash-under---strict.js +++ b/tests/baselines/reference/tsc/react-jsx-emit-mode/initial-build/with-no-backing-types-found-doesn't-crash-under---strict.js @@ -57,7 +57,7 @@ exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated exports.__esModule = true; exports.App = void 0; var jsx_runtime_1 = require("react/jsx-runtime"); -var App = function () { return jsx_runtime_1.jsx("div", { propA: true }, void 0); }; +var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }, void 0); }; exports.App = App; diff --git a/tests/baselines/reference/tsc/react-jsx-emit-mode/initial-build/with-no-backing-types-found-doesn't-crash.js b/tests/baselines/reference/tsc/react-jsx-emit-mode/initial-build/with-no-backing-types-found-doesn't-crash.js index da35f20174d3c..0190cca15765e 100644 --- a/tests/baselines/reference/tsc/react-jsx-emit-mode/initial-build/with-no-backing-types-found-doesn't-crash.js +++ b/tests/baselines/reference/tsc/react-jsx-emit-mode/initial-build/with-no-backing-types-found-doesn't-crash.js @@ -49,7 +49,7 @@ exitCode:: ExitStatus.Success exports.__esModule = true; exports.App = void 0; var jsx_runtime_1 = require("react/jsx-runtime"); -var App = function () { return jsx_runtime_1.jsx("div", { propA: true }, void 0); }; +var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }, void 0); }; exports.App = App; diff --git a/tests/baselines/reference/tscWatch/emit/emit-file-content/should-emit-specified-file.js b/tests/baselines/reference/tscWatch/emit/emit-file-content/should-emit-specified-file.js index 0992ff1eb14f4..c7c914c52874e 100644 --- a/tests/baselines/reference/tscWatch/emit/emit-file-content/should-emit-specified-file.js +++ b/tests/baselines/reference/tscWatch/emit/emit-file-content/should-emit-specified-file.js @@ -12,26 +12,26 @@ import {y} from "./f2"; let x = y; {} //// [/a/lib/lib.d.ts] -/// -interface Boolean {} -interface Function {} -interface CallableFunction {} -interface NewableFunction {} -interface IArguments {} -interface Number { toExponential: any; } -interface Object {} -interface RegExp {} -interface String { charAt: any; } +/// +interface Boolean {} +interface Function {} +interface CallableFunction {} +interface NewableFunction {} +interface IArguments {} +interface Number { toExponential: any; } +interface Object {} +interface RegExp {} +interface String { charAt: any; } interface Array { length: number; [n: number]: T; } /a/lib/tsc.js -w -p /a/b/tsconfig.json Output:: >> Screen clear -[12:00:19 AM] Starting compilation in watch mode... - -[12:00:26 AM] Found 0 errors. Watching for file changes. - +[12:00:19 AM] Starting compilation in watch mode... + +[12:00:26 AM] Found 0 errors. Watching for file changes. + Program root files: ["/a/b/f1.ts","/a/b/f2.ts","/a/b/f3.ts"] @@ -72,26 +72,26 @@ FsWatchesRecursive:: exitCode:: ExitStatus.undefined //// [/a/b/f1.js] -"use strict"; -exports.__esModule = true; -exports.Foo = void 0; -function Foo() { return 10; } -exports.Foo = Foo; +"use strict"; +exports.__esModule = true; +exports.Foo = void 0; +function Foo() { return 10; } +exports.Foo = Foo; //// [/a/b/f2.js] -"use strict"; -exports.__esModule = true; -exports.y = void 0; -var f1_1 = require("./f1"); -exports.y = f1_1.Foo(); +"use strict"; +exports.__esModule = true; +exports.y = void 0; +var f1_1 = require("./f1"); +exports.y = (0, f1_1.Foo)(); //// [/a/b/f3.js] -"use strict"; -exports.__esModule = true; -var f2_1 = require("./f2"); -var x = f2_1.y; +"use strict"; +exports.__esModule = true; +var f2_1 = require("./f2"); +var x = f2_1.y; @@ -104,10 +104,10 @@ export function Foo() { return 10; }export function foo2() { return 2; } Output:: >> Screen clear -[12:00:29 AM] File change detected. Starting incremental compilation... - -[12:00:36 AM] Found 0 errors. Watching for file changes. - +[12:00:29 AM] File change detected. Starting incremental compilation... + +[12:00:36 AM] Found 0 errors. Watching for file changes. + Program root files: ["/a/b/f1.ts","/a/b/f2.ts","/a/b/f3.ts"] @@ -146,13 +146,13 @@ FsWatchesRecursive:: exitCode:: ExitStatus.undefined //// [/a/b/f1.js] -"use strict"; -exports.__esModule = true; -exports.foo2 = exports.Foo = void 0; -function Foo() { return 10; } -exports.Foo = Foo; -function foo2() { return 2; } -exports.foo2 = foo2; +"use strict"; +exports.__esModule = true; +exports.foo2 = exports.Foo = void 0; +function Foo() { return 10; } +exports.Foo = Foo; +function foo2() { return 2; } +exports.foo2 = foo2; //// [/a/b/f2.js] file written with same contents diff --git a/tests/baselines/reference/tscWatch/emit/emit-for-configured-projects/should-be-up-to-date-with-newly-created-files.js b/tests/baselines/reference/tscWatch/emit/emit-for-configured-projects/should-be-up-to-date-with-newly-created-files.js index bd77a7b0b1174..e7bd86b6f4a67 100644 --- a/tests/baselines/reference/tscWatch/emit/emit-for-configured-projects/should-be-up-to-date-with-newly-created-files.js +++ b/tests/baselines/reference/tscWatch/emit/emit-for-configured-projects/should-be-up-to-date-with-newly-created-files.js @@ -18,26 +18,26 @@ export var Foo4 = 10; {} //// [/a/lib/lib.d.ts] -/// -interface Boolean {} -interface Function {} -interface CallableFunction {} -interface NewableFunction {} -interface IArguments {} -interface Number { toExponential: any; } -interface Object {} -interface RegExp {} -interface String { charAt: any; } +/// +interface Boolean {} +interface Function {} +interface CallableFunction {} +interface NewableFunction {} +interface IArguments {} +interface Number { toExponential: any; } +interface Object {} +interface RegExp {} +interface String { charAt: any; } interface Array { length: number; [n: number]: T; } /a/lib/tsc.js --w -p /a/b/tsconfig.json Output:: >> Screen clear -[12:00:23 AM] Starting compilation in watch mode... - -[12:00:34 AM] Found 0 errors. Watching for file changes. - +[12:00:23 AM] Starting compilation in watch mode... + +[12:00:34 AM] Found 0 errors. Watching for file changes. + Program root files: ["/a/b/file1Consumer1.ts","/a/b/file1Consumer2.ts","/a/b/globalFile3.ts","/a/b/moduleFile1.ts","/a/b/moduleFile2.ts"] @@ -86,35 +86,35 @@ FsWatchesRecursive:: exitCode:: ExitStatus.undefined //// [/a/b/moduleFile1.js] -"use strict"; -exports.__esModule = true; -exports.Foo = void 0; -function Foo() { } -exports.Foo = Foo; -; +"use strict"; +exports.__esModule = true; +exports.Foo = void 0; +function Foo() { } +exports.Foo = Foo; +; //// [/a/b/file1Consumer1.js] -"use strict"; -exports.__esModule = true; -exports.y = void 0; -exports.y = 10; +"use strict"; +exports.__esModule = true; +exports.y = void 0; +exports.y = 10; //// [/a/b/file1Consumer2.js] -"use strict"; -exports.__esModule = true; -var z = 10; +"use strict"; +exports.__esModule = true; +var z = 10; //// [/a/b/globalFile3.js] //// [/a/b/moduleFile2.js] -"use strict"; -exports.__esModule = true; -exports.Foo4 = void 0; -exports.Foo4 = 10; +"use strict"; +exports.__esModule = true; +exports.Foo4 = void 0; +exports.Foo4 = 10; @@ -130,10 +130,10 @@ import {Foo} from "./moduleFile1"; let y = Foo(); Output:: >> Screen clear -[12:00:40 AM] File change detected. Starting incremental compilation... - -[12:00:52 AM] Found 0 errors. Watching for file changes. - +[12:00:40 AM] File change detected. Starting incremental compilation... + +[12:00:52 AM] Found 0 errors. Watching for file changes. + Program root files: ["/a/b/file1Consumer1.ts","/a/b/file1Consumer2.ts","/a/b/file1Consumer3.ts","/a/b/globalFile3.ts","/a/b/moduleFile1.ts","/a/b/moduleFile2.ts"] @@ -183,20 +183,20 @@ FsWatchesRecursive:: exitCode:: ExitStatus.undefined //// [/a/b/moduleFile1.js] -"use strict"; -exports.__esModule = true; -exports.Foo = exports.T = void 0; -function Foo() { } -exports.Foo = Foo; -; +"use strict"; +exports.__esModule = true; +exports.Foo = exports.T = void 0; +function Foo() { } +exports.Foo = Foo; +; //// [/a/b/file1Consumer1.js] file written with same contents //// [/a/b/file1Consumer2.js] file written with same contents //// [/a/b/file1Consumer3.js] -"use strict"; -exports.__esModule = true; -var moduleFile1_1 = require("./moduleFile1"); -var y = moduleFile1_1.Foo(); +"use strict"; +exports.__esModule = true; +var moduleFile1_1 = require("./moduleFile1"); +var y = (0, moduleFile1_1.Foo)(); diff --git a/tests/baselines/reference/tscWatch/emit/emit-for-configured-projects/should-be-up-to-date-with-the-reference-map-changes.js b/tests/baselines/reference/tscWatch/emit/emit-for-configured-projects/should-be-up-to-date-with-the-reference-map-changes.js index 570f684ad20ad..f15c787116100 100644 --- a/tests/baselines/reference/tscWatch/emit/emit-for-configured-projects/should-be-up-to-date-with-the-reference-map-changes.js +++ b/tests/baselines/reference/tscWatch/emit/emit-for-configured-projects/should-be-up-to-date-with-the-reference-map-changes.js @@ -18,26 +18,26 @@ export var Foo4 = 10; {} //// [/a/lib/lib.d.ts] -/// -interface Boolean {} -interface Function {} -interface CallableFunction {} -interface NewableFunction {} -interface IArguments {} -interface Number { toExponential: any; } -interface Object {} -interface RegExp {} -interface String { charAt: any; } +/// +interface Boolean {} +interface Function {} +interface CallableFunction {} +interface NewableFunction {} +interface IArguments {} +interface Number { toExponential: any; } +interface Object {} +interface RegExp {} +interface String { charAt: any; } interface Array { length: number; [n: number]: T; } /a/lib/tsc.js --w -p /a/b/tsconfig.json Output:: >> Screen clear -[12:00:23 AM] Starting compilation in watch mode... - -[12:00:34 AM] Found 0 errors. Watching for file changes. - +[12:00:23 AM] Starting compilation in watch mode... + +[12:00:34 AM] Found 0 errors. Watching for file changes. + Program root files: ["/a/b/file1Consumer1.ts","/a/b/file1Consumer2.ts","/a/b/globalFile3.ts","/a/b/moduleFile1.ts","/a/b/moduleFile2.ts"] @@ -86,35 +86,35 @@ FsWatchesRecursive:: exitCode:: ExitStatus.undefined //// [/a/b/moduleFile1.js] -"use strict"; -exports.__esModule = true; -exports.Foo = void 0; -function Foo() { } -exports.Foo = Foo; -; +"use strict"; +exports.__esModule = true; +exports.Foo = void 0; +function Foo() { } +exports.Foo = Foo; +; //// [/a/b/file1Consumer1.js] -"use strict"; -exports.__esModule = true; -exports.y = void 0; -exports.y = 10; +"use strict"; +exports.__esModule = true; +exports.y = void 0; +exports.y = 10; //// [/a/b/file1Consumer2.js] -"use strict"; -exports.__esModule = true; -var z = 10; +"use strict"; +exports.__esModule = true; +var z = 10; //// [/a/b/globalFile3.js] //// [/a/b/moduleFile2.js] -"use strict"; -exports.__esModule = true; -exports.Foo4 = void 0; -exports.Foo4 = 10; +"use strict"; +exports.__esModule = true; +exports.Foo4 = void 0; +exports.Foo4 = 10; @@ -127,15 +127,15 @@ export let y = Foo(); Output:: >> Screen clear -[12:00:38 AM] File change detected. Starting incremental compilation... - -a/b/file1Consumer1.ts:1:16 - error TS2304: Cannot find name 'Foo'. - -1 export let y = Foo(); -   ~~~ - -[12:00:42 AM] Found 1 error. Watching for file changes. - +[12:00:38 AM] File change detected. Starting incremental compilation... + +a/b/file1Consumer1.ts:1:16 - error TS2304: Cannot find name 'Foo'. + +1 export let y = Foo(); +   ~~~ + +[12:00:42 AM] Found 1 error. Watching for file changes. + Program root files: ["/a/b/file1Consumer1.ts","/a/b/file1Consumer2.ts","/a/b/globalFile3.ts","/a/b/moduleFile1.ts","/a/b/moduleFile2.ts"] @@ -179,10 +179,10 @@ FsWatchesRecursive:: exitCode:: ExitStatus.undefined //// [/a/b/file1Consumer1.js] -"use strict"; -exports.__esModule = true; -exports.y = void 0; -exports.y = Foo(); +"use strict"; +exports.__esModule = true; +exports.y = void 0; +exports.y = Foo(); @@ -195,15 +195,15 @@ export var T: number;export function Foo() { }; Output:: >> Screen clear -[12:00:46 AM] File change detected. Starting incremental compilation... - -a/b/file1Consumer1.ts:1:16 - error TS2304: Cannot find name 'Foo'. - -1 export let y = Foo(); -   ~~~ - -[12:00:53 AM] Found 1 error. Watching for file changes. - +[12:00:46 AM] File change detected. Starting incremental compilation... + +a/b/file1Consumer1.ts:1:16 - error TS2304: Cannot find name 'Foo'. + +1 export let y = Foo(); +   ~~~ + +[12:00:53 AM] Found 1 error. Watching for file changes. + Program root files: ["/a/b/file1Consumer1.ts","/a/b/file1Consumer2.ts","/a/b/globalFile3.ts","/a/b/moduleFile1.ts","/a/b/moduleFile2.ts"] @@ -248,12 +248,12 @@ FsWatchesRecursive:: exitCode:: ExitStatus.undefined //// [/a/b/moduleFile1.js] -"use strict"; -exports.__esModule = true; -exports.Foo = exports.T = void 0; -function Foo() { } -exports.Foo = Foo; -; +"use strict"; +exports.__esModule = true; +exports.Foo = exports.T = void 0; +function Foo() { } +exports.Foo = Foo; +; //// [/a/b/file1Consumer2.js] file written with same contents @@ -267,10 +267,10 @@ import {Foo} from "./moduleFile1";let y = Foo(); Output:: >> Screen clear -[12:00:57 AM] File change detected. Starting incremental compilation... - -[12:01:01 AM] Found 0 errors. Watching for file changes. - +[12:00:57 AM] File change detected. Starting incremental compilation... + +[12:01:01 AM] Found 0 errors. Watching for file changes. + Program root files: ["/a/b/file1Consumer1.ts","/a/b/file1Consumer2.ts","/a/b/globalFile3.ts","/a/b/moduleFile1.ts","/a/b/moduleFile2.ts"] @@ -314,10 +314,10 @@ FsWatchesRecursive:: exitCode:: ExitStatus.undefined //// [/a/b/file1Consumer1.js] -"use strict"; -exports.__esModule = true; -var moduleFile1_1 = require("./moduleFile1"); -var y = moduleFile1_1.Foo(); +"use strict"; +exports.__esModule = true; +var moduleFile1_1 = require("./moduleFile1"); +var y = (0, moduleFile1_1.Foo)(); @@ -330,25 +330,25 @@ export let y = Foo(); Output:: >> Screen clear -[12:01:05 AM] File change detected. Starting incremental compilation... - -a/b/file1Consumer1.ts:1:9 - error TS2305: Module '"./moduleFile1"' has no exported member 'Foo'. - -1 import {Foo} from "./moduleFile1";let y = Foo(); -   ~~~ - -a/b/file1Consumer2.ts:1:9 - error TS2305: Module '"./moduleFile1"' has no exported member 'Foo'. - -1 import {Foo} from "./moduleFile1"; let z = 10; -   ~~~ - -a/b/moduleFile1.ts:1:16 - error TS2304: Cannot find name 'Foo'. - -1 export let y = Foo(); -   ~~~ - -[12:01:15 AM] Found 3 errors. Watching for file changes. - +[12:01:05 AM] File change detected. Starting incremental compilation... + +a/b/file1Consumer1.ts:1:9 - error TS2305: Module '"./moduleFile1"' has no exported member 'Foo'. + +1 import {Foo} from "./moduleFile1";let y = Foo(); +   ~~~ + +a/b/file1Consumer2.ts:1:9 - error TS2305: Module '"./moduleFile1"' has no exported member 'Foo'. + +1 import {Foo} from "./moduleFile1"; let z = 10; +   ~~~ + +a/b/moduleFile1.ts:1:16 - error TS2304: Cannot find name 'Foo'. + +1 export let y = Foo(); +   ~~~ + +[12:01:15 AM] Found 3 errors. Watching for file changes. + Program root files: ["/a/b/file1Consumer1.ts","/a/b/file1Consumer2.ts","/a/b/globalFile3.ts","/a/b/moduleFile1.ts","/a/b/moduleFile2.ts"] @@ -394,10 +394,10 @@ FsWatchesRecursive:: exitCode:: ExitStatus.undefined //// [/a/b/moduleFile1.js] -"use strict"; -exports.__esModule = true; -exports.y = void 0; -exports.y = Foo(); +"use strict"; +exports.__esModule = true; +exports.y = void 0; +exports.y = Foo(); //// [/a/b/file1Consumer1.js] file written with same contents @@ -413,10 +413,10 @@ export var T: number;export function Foo() { }; Output:: >> Screen clear -[12:01:22 AM] File change detected. Starting incremental compilation... - -[12:01:32 AM] Found 0 errors. Watching for file changes. - +[12:01:22 AM] File change detected. Starting incremental compilation... + +[12:01:32 AM] Found 0 errors. Watching for file changes. + Program root files: ["/a/b/file1Consumer1.ts","/a/b/file1Consumer2.ts","/a/b/globalFile3.ts","/a/b/moduleFile1.ts","/a/b/moduleFile2.ts"] @@ -462,12 +462,12 @@ FsWatchesRecursive:: exitCode:: ExitStatus.undefined //// [/a/b/moduleFile1.js] -"use strict"; -exports.__esModule = true; -exports.Foo = exports.T = void 0; -function Foo() { } -exports.Foo = Foo; -; +"use strict"; +exports.__esModule = true; +exports.Foo = exports.T = void 0; +function Foo() { } +exports.Foo = Foo; +; //// [/a/b/file1Consumer1.js] file written with same contents diff --git a/tests/baselines/reference/tscWatch/emitAndErrorUpdates/assumeChangesOnlyAffectDirectDependencies/file-not-exporting-a-deep-multilevel-import-that-changes.js b/tests/baselines/reference/tscWatch/emitAndErrorUpdates/assumeChangesOnlyAffectDirectDependencies/file-not-exporting-a-deep-multilevel-import-that-changes.js index 76e667e5c4d42..98f712bc8444c 100644 --- a/tests/baselines/reference/tscWatch/emitAndErrorUpdates/assumeChangesOnlyAffectDirectDependencies/file-not-exporting-a-deep-multilevel-import-that-changes.js +++ b/tests/baselines/reference/tscWatch/emitAndErrorUpdates/assumeChangesOnlyAffectDirectDependencies/file-not-exporting-a-deep-multilevel-import-that-changes.js @@ -151,7 +151,7 @@ exports.getPoint = getPoint; "use strict"; exports.__esModule = true; var c_1 = require("./c"); -c_1.getPoint().c.x; +(0, c_1.getPoint)().c.x; //// [/user/username/projects/myproject/e.js] diff --git a/tests/baselines/reference/tscWatch/emitAndErrorUpdates/assumeChangesOnlyAffectDirectDependenciesAndD/file-not-exporting-a-deep-multilevel-import-that-changes.js b/tests/baselines/reference/tscWatch/emitAndErrorUpdates/assumeChangesOnlyAffectDirectDependenciesAndD/file-not-exporting-a-deep-multilevel-import-that-changes.js index 60224838f7e5a..c5695027d8fe7 100644 --- a/tests/baselines/reference/tscWatch/emitAndErrorUpdates/assumeChangesOnlyAffectDirectDependenciesAndD/file-not-exporting-a-deep-multilevel-import-that-changes.js +++ b/tests/baselines/reference/tscWatch/emitAndErrorUpdates/assumeChangesOnlyAffectDirectDependenciesAndD/file-not-exporting-a-deep-multilevel-import-that-changes.js @@ -173,7 +173,7 @@ export declare function getPoint(): PointWrapper; "use strict"; exports.__esModule = true; var c_1 = require("./c"); -c_1.getPoint().c.x; +(0, c_1.getPoint)().c.x; //// [/user/username/projects/myproject/d.d.ts] diff --git a/tests/baselines/reference/tscWatch/emitAndErrorUpdates/default/file-not-exporting-a-deep-multilevel-import-that-changes.js b/tests/baselines/reference/tscWatch/emitAndErrorUpdates/default/file-not-exporting-a-deep-multilevel-import-that-changes.js index 01a1d3d1e0490..dde01a496d025 100644 --- a/tests/baselines/reference/tscWatch/emitAndErrorUpdates/default/file-not-exporting-a-deep-multilevel-import-that-changes.js +++ b/tests/baselines/reference/tscWatch/emitAndErrorUpdates/default/file-not-exporting-a-deep-multilevel-import-that-changes.js @@ -1,33 +1,33 @@ Input:: //// [/user/username/projects/myproject/a.ts] -export interface Point { - name: string; - c: Coords; -} -export interface Coords { - x2: number; - y: number; +export interface Point { + name: string; + c: Coords; +} +export interface Coords { + x2: number; + y: number; } //// [/user/username/projects/myproject/b.ts] -import { Point } from "./a"; -export interface PointWrapper extends Point { +import { Point } from "./a"; +export interface PointWrapper extends Point { } //// [/user/username/projects/myproject/c.ts] -import { PointWrapper } from "./b"; -export function getPoint(): PointWrapper { - return { - name: "test", - c: { - x: 1, - y: 2 - } - } +import { PointWrapper } from "./b"; +export function getPoint(): PointWrapper { + return { + name: "test", + c: { + x: 1, + y: 2 + } + } }; //// [/user/username/projects/myproject/d.ts] -import { getPoint } from "./c"; +import { getPoint } from "./c"; getPoint().c.x; //// [/user/username/projects/myproject/e.ts] @@ -37,42 +37,42 @@ import "./d"; {} //// [/a/lib/lib.d.ts] -/// -interface Boolean {} -interface Function {} -interface CallableFunction {} -interface NewableFunction {} -interface IArguments {} -interface Number { toExponential: any; } -interface Object {} -interface RegExp {} -interface String { charAt: any; } +/// +interface Boolean {} +interface Function {} +interface CallableFunction {} +interface NewableFunction {} +interface IArguments {} +interface Number { toExponential: any; } +interface Object {} +interface RegExp {} +interface String { charAt: any; } interface Array { length: number; [n: number]: T; } /a/lib/tsc.js --w Output:: >> Screen clear -[12:00:29 AM] Starting compilation in watch mode... - -c.ts:6:13 - error TS2322: Type '{ x: number; y: number; }' is not assignable to type 'Coords'. - Object literal may only specify known properties, and 'x' does not exist in type 'Coords'. - -6 x: 1, -   ~~~~ - - a.ts:3:5 - 3 c: Coords; -    ~ - The expected type comes from property 'c' which is declared here on type 'PointWrapper' - -d.ts:2:14 - error TS2339: Property 'x' does not exist on type 'Coords'. - -2 getPoint().c.x; -   ~ - -[12:00:40 AM] Found 2 errors. Watching for file changes. - +[12:00:29 AM] Starting compilation in watch mode... + +c.ts:6:13 - error TS2322: Type '{ x: number; y: number; }' is not assignable to type 'Coords'. + Object literal may only specify known properties, and 'x' does not exist in type 'Coords'. + +6 x: 1, +   ~~~~ + + a.ts:3:5 + 3 c: Coords; +    ~ + The expected type comes from property 'c' which is declared here on type 'PointWrapper' + +d.ts:2:14 - error TS2339: Property 'x' does not exist on type 'Coords'. + +2 getPoint().c.x; +   ~ + +[12:00:40 AM] Found 2 errors. Watching for file changes. + Program root files: ["/user/username/projects/myproject/a.ts","/user/username/projects/myproject/b.ts","/user/username/projects/myproject/c.ts","/user/username/projects/myproject/d.ts","/user/username/projects/myproject/e.ts"] @@ -121,43 +121,43 @@ FsWatchesRecursive:: exitCode:: ExitStatus.undefined //// [/user/username/projects/myproject/a.js] -"use strict"; -exports.__esModule = true; +"use strict"; +exports.__esModule = true; //// [/user/username/projects/myproject/b.js] -"use strict"; -exports.__esModule = true; +"use strict"; +exports.__esModule = true; //// [/user/username/projects/myproject/c.js] -"use strict"; -exports.__esModule = true; -exports.getPoint = void 0; -function getPoint() { - return { - name: "test", - c: { - x: 1, - y: 2 - } - }; -} -exports.getPoint = getPoint; -; +"use strict"; +exports.__esModule = true; +exports.getPoint = void 0; +function getPoint() { + return { + name: "test", + c: { + x: 1, + y: 2 + } + }; +} +exports.getPoint = getPoint; +; //// [/user/username/projects/myproject/d.js] -"use strict"; -exports.__esModule = true; -var c_1 = require("./c"); -(0, c_1.getPoint)().c.x; +"use strict"; +exports.__esModule = true; +var c_1 = require("./c"); +(0, c_1.getPoint)().c.x; //// [/user/username/projects/myproject/e.js] -"use strict"; -exports.__esModule = true; -require("./d"); +"use strict"; +exports.__esModule = true; +require("./d"); @@ -165,22 +165,22 @@ Change:: Rename property x2 to x of interface Coords Input:: //// [/user/username/projects/myproject/a.ts] -export interface Point { - name: string; - c: Coords; -} -export interface Coords { - x: number; - y: number; +export interface Point { + name: string; + c: Coords; +} +export interface Coords { + x: number; + y: number; } Output:: >> Screen clear -[12:00:44 AM] File change detected. Starting incremental compilation... - -[12:00:51 AM] Found 0 errors. Watching for file changes. - +[12:00:44 AM] File change detected. Starting incremental compilation... + +[12:00:51 AM] Found 0 errors. Watching for file changes. + Program root files: ["/user/username/projects/myproject/a.ts","/user/username/projects/myproject/b.ts","/user/username/projects/myproject/c.ts","/user/username/projects/myproject/d.ts","/user/username/projects/myproject/e.ts"] diff --git a/tests/baselines/reference/tscWatch/emitAndErrorUpdates/isolatedModules/file-not-exporting-a-deep-multilevel-import-that-changes.js b/tests/baselines/reference/tscWatch/emitAndErrorUpdates/isolatedModules/file-not-exporting-a-deep-multilevel-import-that-changes.js index f99f26d00bb02..f0a4071aa539f 100644 --- a/tests/baselines/reference/tscWatch/emitAndErrorUpdates/isolatedModules/file-not-exporting-a-deep-multilevel-import-that-changes.js +++ b/tests/baselines/reference/tscWatch/emitAndErrorUpdates/isolatedModules/file-not-exporting-a-deep-multilevel-import-that-changes.js @@ -1,33 +1,33 @@ Input:: //// [/user/username/projects/myproject/a.ts] -export interface Point { - name: string; - c: Coords; -} -export interface Coords { - x2: number; - y: number; +export interface Point { + name: string; + c: Coords; +} +export interface Coords { + x2: number; + y: number; } //// [/user/username/projects/myproject/b.ts] -import { Point } from "./a"; -export interface PointWrapper extends Point { +import { Point } from "./a"; +export interface PointWrapper extends Point { } //// [/user/username/projects/myproject/c.ts] -import { PointWrapper } from "./b"; -export function getPoint(): PointWrapper { - return { - name: "test", - c: { - x: 1, - y: 2 - } - } +import { PointWrapper } from "./b"; +export function getPoint(): PointWrapper { + return { + name: "test", + c: { + x: 1, + y: 2 + } + } }; //// [/user/username/projects/myproject/d.ts] -import { getPoint } from "./c"; +import { getPoint } from "./c"; getPoint().c.x; //// [/user/username/projects/myproject/e.ts] @@ -37,42 +37,42 @@ import "./d"; {"compilerOptions":{"isolatedModules":true}} //// [/a/lib/lib.d.ts] -/// -interface Boolean {} -interface Function {} -interface CallableFunction {} -interface NewableFunction {} -interface IArguments {} -interface Number { toExponential: any; } -interface Object {} -interface RegExp {} -interface String { charAt: any; } +/// +interface Boolean {} +interface Function {} +interface CallableFunction {} +interface NewableFunction {} +interface IArguments {} +interface Number { toExponential: any; } +interface Object {} +interface RegExp {} +interface String { charAt: any; } interface Array { length: number; [n: number]: T; } /a/lib/tsc.js --w Output:: >> Screen clear -[12:00:29 AM] Starting compilation in watch mode... - -c.ts:6:13 - error TS2322: Type '{ x: number; y: number; }' is not assignable to type 'Coords'. - Object literal may only specify known properties, and 'x' does not exist in type 'Coords'. - -6 x: 1, -   ~~~~ - - a.ts:3:5 - 3 c: Coords; -    ~ - The expected type comes from property 'c' which is declared here on type 'PointWrapper' - -d.ts:2:14 - error TS2339: Property 'x' does not exist on type 'Coords'. - -2 getPoint().c.x; -   ~ - -[12:00:40 AM] Found 2 errors. Watching for file changes. - +[12:00:29 AM] Starting compilation in watch mode... + +c.ts:6:13 - error TS2322: Type '{ x: number; y: number; }' is not assignable to type 'Coords'. + Object literal may only specify known properties, and 'x' does not exist in type 'Coords'. + +6 x: 1, +   ~~~~ + + a.ts:3:5 + 3 c: Coords; +    ~ + The expected type comes from property 'c' which is declared here on type 'PointWrapper' + +d.ts:2:14 - error TS2339: Property 'x' does not exist on type 'Coords'. + +2 getPoint().c.x; +   ~ + +[12:00:40 AM] Found 2 errors. Watching for file changes. + Program root files: ["/user/username/projects/myproject/a.ts","/user/username/projects/myproject/b.ts","/user/username/projects/myproject/c.ts","/user/username/projects/myproject/d.ts","/user/username/projects/myproject/e.ts"] @@ -121,43 +121,43 @@ FsWatchesRecursive:: exitCode:: ExitStatus.undefined //// [/user/username/projects/myproject/a.js] -"use strict"; -exports.__esModule = true; +"use strict"; +exports.__esModule = true; //// [/user/username/projects/myproject/b.js] -"use strict"; -exports.__esModule = true; +"use strict"; +exports.__esModule = true; //// [/user/username/projects/myproject/c.js] -"use strict"; -exports.__esModule = true; -exports.getPoint = void 0; -function getPoint() { - return { - name: "test", - c: { - x: 1, - y: 2 - } - }; -} -exports.getPoint = getPoint; -; +"use strict"; +exports.__esModule = true; +exports.getPoint = void 0; +function getPoint() { + return { + name: "test", + c: { + x: 1, + y: 2 + } + }; +} +exports.getPoint = getPoint; +; //// [/user/username/projects/myproject/d.js] -"use strict"; -exports.__esModule = true; -var c_1 = require("./c"); -(0, c_1.getPoint)().c.x; +"use strict"; +exports.__esModule = true; +var c_1 = require("./c"); +(0, c_1.getPoint)().c.x; //// [/user/username/projects/myproject/e.js] -"use strict"; -exports.__esModule = true; -require("./d"); +"use strict"; +exports.__esModule = true; +require("./d"); @@ -165,22 +165,22 @@ Change:: Rename property x2 to x of interface Coords Input:: //// [/user/username/projects/myproject/a.ts] -export interface Point { - name: string; - c: Coords; -} -export interface Coords { - x: number; - y: number; +export interface Point { + name: string; + c: Coords; +} +export interface Coords { + x: number; + y: number; } Output:: >> Screen clear -[12:00:44 AM] File change detected. Starting incremental compilation... - -[12:00:48 AM] Found 0 errors. Watching for file changes. - +[12:00:44 AM] File change detected. Starting incremental compilation... + +[12:00:48 AM] Found 0 errors. Watching for file changes. + Program root files: ["/user/username/projects/myproject/a.ts","/user/username/projects/myproject/b.ts","/user/username/projects/myproject/c.ts","/user/username/projects/myproject/d.ts","/user/username/projects/myproject/e.ts"] diff --git a/tests/baselines/reference/tscWatch/forceConsistentCasingInFileNames/jsxImportSource-option-changed.js b/tests/baselines/reference/tscWatch/forceConsistentCasingInFileNames/jsxImportSource-option-changed.js index 87cfcd2ce0d08..2813aad076dfc 100644 --- a/tests/baselines/reference/tscWatch/forceConsistentCasingInFileNames/jsxImportSource-option-changed.js +++ b/tests/baselines/reference/tscWatch/forceConsistentCasingInFileNames/jsxImportSource-option-changed.js @@ -97,7 +97,7 @@ exitCode:: ExitStatus.undefined exports.__esModule = true; exports.App = void 0; var jsx_runtime_1 = require("react/jsx-runtime"); -var App = function () { return jsx_runtime_1.jsx("div", { propA: true }, void 0); }; +var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }, void 0); }; exports.App = App; diff --git a/tests/baselines/reference/tscWatch/incremental/importHelpers-backing-types-removed-incremental.js b/tests/baselines/reference/tscWatch/incremental/importHelpers-backing-types-removed-incremental.js index 61c5c579d4aab..60e1f590f8ab0 100644 --- a/tests/baselines/reference/tscWatch/incremental/importHelpers-backing-types-removed-incremental.js +++ b/tests/baselines/reference/tscWatch/incremental/importHelpers-backing-types-removed-incremental.js @@ -57,7 +57,7 @@ exitCode:: ExitStatus.Success exports.__esModule = true; exports.x = void 0; var tslib_1 = require("tslib"); -exports.x = tslib_1.__assign({}); +exports.x = (0, tslib_1.__assign)({}); //// [/users/username/projects/project/tsconfig.tsbuildinfo] diff --git a/tests/baselines/reference/tscWatch/incremental/importHelpers-backing-types-removed-watch.js b/tests/baselines/reference/tscWatch/incremental/importHelpers-backing-types-removed-watch.js index 71000e048d781..80011b3477c4b 100644 --- a/tests/baselines/reference/tscWatch/incremental/importHelpers-backing-types-removed-watch.js +++ b/tests/baselines/reference/tscWatch/incremental/importHelpers-backing-types-removed-watch.js @@ -76,7 +76,7 @@ exitCode:: ExitStatus.undefined exports.__esModule = true; exports.x = void 0; var tslib_1 = require("tslib"); -exports.x = tslib_1.__assign({}); +exports.x = (0, tslib_1.__assign)({}); diff --git a/tests/baselines/reference/tscWatch/incremental/jsxImportSource-backing-types-added-incremental.js b/tests/baselines/reference/tscWatch/incremental/jsxImportSource-backing-types-added-incremental.js index 5e6d4a63be4ac..77143da3fb767 100644 --- a/tests/baselines/reference/tscWatch/incremental/jsxImportSource-backing-types-added-incremental.js +++ b/tests/baselines/reference/tscWatch/incremental/jsxImportSource-backing-types-added-incremental.js @@ -57,7 +57,7 @@ exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated exports.__esModule = true; exports.App = void 0; var jsx_runtime_1 = require("react/jsx-runtime"); -var App = function () { return jsx_runtime_1.jsx("div", { propA: true }, void 0); }; +var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }, void 0); }; exports.App = App; diff --git a/tests/baselines/reference/tscWatch/incremental/jsxImportSource-backing-types-added-watch.js b/tests/baselines/reference/tscWatch/incremental/jsxImportSource-backing-types-added-watch.js index 12a1c525ad839..e5c1235ef6cf8 100644 --- a/tests/baselines/reference/tscWatch/incremental/jsxImportSource-backing-types-added-watch.js +++ b/tests/baselines/reference/tscWatch/incremental/jsxImportSource-backing-types-added-watch.js @@ -71,7 +71,7 @@ exitCode:: ExitStatus.undefined exports.__esModule = true; exports.App = void 0; var jsx_runtime_1 = require("react/jsx-runtime"); -var App = function () { return jsx_runtime_1.jsx("div", { propA: true }, void 0); }; +var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }, void 0); }; exports.App = App; diff --git a/tests/baselines/reference/tscWatch/incremental/jsxImportSource-backing-types-removed-incremental.js b/tests/baselines/reference/tscWatch/incremental/jsxImportSource-backing-types-removed-incremental.js index 6a550311713a4..45a41c95adf25 100644 --- a/tests/baselines/reference/tscWatch/incremental/jsxImportSource-backing-types-removed-incremental.js +++ b/tests/baselines/reference/tscWatch/incremental/jsxImportSource-backing-types-removed-incremental.js @@ -68,7 +68,7 @@ exitCode:: ExitStatus.Success exports.__esModule = true; exports.App = void 0; var jsx_runtime_1 = require("react/jsx-runtime"); -var App = function () { return jsx_runtime_1.jsx("div", { propA: true }, void 0); }; +var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }, void 0); }; exports.App = App; diff --git a/tests/baselines/reference/tscWatch/incremental/jsxImportSource-backing-types-removed-watch.js b/tests/baselines/reference/tscWatch/incremental/jsxImportSource-backing-types-removed-watch.js index 9dc70f24548b6..32a8dc334e219 100644 --- a/tests/baselines/reference/tscWatch/incremental/jsxImportSource-backing-types-removed-watch.js +++ b/tests/baselines/reference/tscWatch/incremental/jsxImportSource-backing-types-removed-watch.js @@ -87,7 +87,7 @@ exitCode:: ExitStatus.undefined exports.__esModule = true; exports.App = void 0; var jsx_runtime_1 = require("react/jsx-runtime"); -var App = function () { return jsx_runtime_1.jsx("div", { propA: true }, void 0); }; +var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }, void 0); }; exports.App = App; diff --git a/tests/baselines/reference/tscWatch/incremental/jsxImportSource-option-changed-incremental.js b/tests/baselines/reference/tscWatch/incremental/jsxImportSource-option-changed-incremental.js index bba0093600c9b..642b974f147df 100644 --- a/tests/baselines/reference/tscWatch/incremental/jsxImportSource-option-changed-incremental.js +++ b/tests/baselines/reference/tscWatch/incremental/jsxImportSource-option-changed-incremental.js @@ -91,7 +91,7 @@ exitCode:: ExitStatus.Success exports.__esModule = true; exports.App = void 0; var jsx_runtime_1 = require("react/jsx-runtime"); -var App = function () { return jsx_runtime_1.jsx("div", { propA: true }, void 0); }; +var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }, void 0); }; exports.App = App; @@ -194,7 +194,7 @@ exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated exports.__esModule = true; exports.App = void 0; var jsx_runtime_1 = require("preact/jsx-runtime"); -var App = function () { return jsx_runtime_1.jsx("div", { propA: true }, void 0); }; +var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }, void 0); }; exports.App = App; diff --git a/tests/baselines/reference/tscWatch/incremental/jsxImportSource-option-changed-watch.js b/tests/baselines/reference/tscWatch/incremental/jsxImportSource-option-changed-watch.js index c92a51ac14b7b..1937961da448c 100644 --- a/tests/baselines/reference/tscWatch/incremental/jsxImportSource-option-changed-watch.js +++ b/tests/baselines/reference/tscWatch/incremental/jsxImportSource-option-changed-watch.js @@ -110,7 +110,7 @@ exitCode:: ExitStatus.undefined exports.__esModule = true; exports.App = void 0; var jsx_runtime_1 = require("react/jsx-runtime"); -var App = function () { return jsx_runtime_1.jsx("div", { propA: true }, void 0); }; +var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }, void 0); }; exports.App = App; @@ -230,7 +230,7 @@ exitCode:: ExitStatus.undefined exports.__esModule = true; exports.App = void 0; var jsx_runtime_1 = require("preact/jsx-runtime"); -var App = function () { return jsx_runtime_1.jsx("div", { propA: true }, void 0); }; +var App = function () { return (0, jsx_runtime_1.jsx)("div", { propA: true }, void 0); }; exports.App = App; diff --git a/tests/baselines/reference/tscWatch/watchEnvironment/watchOptions/with-excludeDirectories-option-extendedDiagnostics.js b/tests/baselines/reference/tscWatch/watchEnvironment/watchOptions/with-excludeDirectories-option-extendedDiagnostics.js index a6e2f90fcb77e..fd6b79dc1cab2 100644 --- a/tests/baselines/reference/tscWatch/watchEnvironment/watchOptions/with-excludeDirectories-option-extendedDiagnostics.js +++ b/tests/baselines/reference/tscWatch/watchEnvironment/watchOptions/with-excludeDirectories-option-extendedDiagnostics.js @@ -98,7 +98,7 @@ exitCode:: ExitStatus.undefined "use strict"; exports.__esModule = true; var bar_1 = require("bar"); -bar_1.foo(); +(0, bar_1.foo)(); diff --git a/tests/baselines/reference/tscWatch/watchEnvironment/watchOptions/with-excludeDirectories-option-with-recursive-directory-watching-extendedDiagnostics.js b/tests/baselines/reference/tscWatch/watchEnvironment/watchOptions/with-excludeDirectories-option-with-recursive-directory-watching-extendedDiagnostics.js index 1f4096cd6ba55..d6a5b2cc8ae30 100644 --- a/tests/baselines/reference/tscWatch/watchEnvironment/watchOptions/with-excludeDirectories-option-with-recursive-directory-watching-extendedDiagnostics.js +++ b/tests/baselines/reference/tscWatch/watchEnvironment/watchOptions/with-excludeDirectories-option-with-recursive-directory-watching-extendedDiagnostics.js @@ -104,7 +104,7 @@ exitCode:: ExitStatus.undefined "use strict"; exports.__esModule = true; var bar_1 = require("bar"); -bar_1.foo(); +(0, bar_1.foo)(); diff --git a/tests/baselines/reference/tscWatch/watchEnvironment/watchOptions/with-excludeDirectories-option-with-recursive-directory-watching.js b/tests/baselines/reference/tscWatch/watchEnvironment/watchOptions/with-excludeDirectories-option-with-recursive-directory-watching.js index bf68efd365922..7ddf26e612e7c 100644 --- a/tests/baselines/reference/tscWatch/watchEnvironment/watchOptions/with-excludeDirectories-option-with-recursive-directory-watching.js +++ b/tests/baselines/reference/tscWatch/watchEnvironment/watchOptions/with-excludeDirectories-option-with-recursive-directory-watching.js @@ -87,7 +87,7 @@ exitCode:: ExitStatus.undefined "use strict"; exports.__esModule = true; var bar_1 = require("bar"); -bar_1.foo(); +(0, bar_1.foo)(); diff --git a/tests/baselines/reference/tscWatch/watchEnvironment/watchOptions/with-excludeDirectories-option.js b/tests/baselines/reference/tscWatch/watchEnvironment/watchOptions/with-excludeDirectories-option.js index d08109a4b1741..b1de5ae8c320d 100644 --- a/tests/baselines/reference/tscWatch/watchEnvironment/watchOptions/with-excludeDirectories-option.js +++ b/tests/baselines/reference/tscWatch/watchEnvironment/watchOptions/with-excludeDirectories-option.js @@ -81,7 +81,7 @@ exitCode:: ExitStatus.undefined "use strict"; exports.__esModule = true; var bar_1 = require("bar"); -bar_1.foo(); +(0, bar_1.foo)(); diff --git a/tests/baselines/reference/tscWatch/watchEnvironment/watchOptions/with-excludeFiles-option-extendedDiagnostics.js b/tests/baselines/reference/tscWatch/watchEnvironment/watchOptions/with-excludeFiles-option-extendedDiagnostics.js index 05b12d4c9514b..07ab60cee9c33 100644 --- a/tests/baselines/reference/tscWatch/watchEnvironment/watchOptions/with-excludeFiles-option-extendedDiagnostics.js +++ b/tests/baselines/reference/tscWatch/watchEnvironment/watchOptions/with-excludeFiles-option-extendedDiagnostics.js @@ -100,7 +100,7 @@ exitCode:: ExitStatus.undefined "use strict"; exports.__esModule = true; var bar_1 = require("bar"); -bar_1.foo(); +(0, bar_1.foo)(); diff --git a/tests/baselines/reference/tscWatch/watchEnvironment/watchOptions/with-excludeFiles-option.js b/tests/baselines/reference/tscWatch/watchEnvironment/watchOptions/with-excludeFiles-option.js index be15b0b3e5405..a63dd9621a318 100644 --- a/tests/baselines/reference/tscWatch/watchEnvironment/watchOptions/with-excludeFiles-option.js +++ b/tests/baselines/reference/tscWatch/watchEnvironment/watchOptions/with-excludeFiles-option.js @@ -81,7 +81,7 @@ exitCode:: ExitStatus.undefined "use strict"; exports.__esModule = true; var bar_1 = require("bar"); -bar_1.foo(); +(0, bar_1.foo)(); From 80ac6737e3924a82b9a9d80fa6e984e50752d17b Mon Sep 17 00:00:00 2001 From: Ron Buckton Date: Tue, 2 Mar 2021 17:57:51 -0800 Subject: [PATCH 3/4] Add evaluator tests --- src/compiler/transformers/module/module.ts | 90 ++++++------ src/harness/evaluatorImpl.ts | 133 +++++++++++++----- src/testRunner/tsconfig.json | 1 + .../unittests/evaluation/externalModules.ts | 84 +++++++++++ 4 files changed, 225 insertions(+), 83 deletions(-) create mode 100644 src/testRunner/unittests/evaluation/externalModules.ts diff --git a/src/compiler/transformers/module/module.ts b/src/compiler/transformers/module/module.ts index 1ef5b7f8e2504..2d1a3b3779536 100644 --- a/src/compiler/transformers/module/module.ts +++ b/src/compiler/transformers/module/module.ts @@ -1,24 +1,6 @@ /*@internal*/ namespace ts { - const enum ImportOrExportBindingReferenceKind { - None, - ImportedHelper, - TopLevelExportBinding, - ImportClause, - ImportSpecifier, - } - - type ImportOrExportBindingReferenceResult = - | { kind: ImportOrExportBindingReferenceKind.None, node: undefined } - | { kind: ImportOrExportBindingReferenceKind.ImportedHelper, node: Identifier } - | { kind: ImportOrExportBindingReferenceKind.TopLevelExportBinding, node: undefined } - | { kind: ImportOrExportBindingReferenceKind.ImportClause, node: ImportClause } - | { kind: ImportOrExportBindingReferenceKind.ImportSpecifier, node: ImportSpecifier }; - - const noReferenceResult: ImportOrExportBindingReferenceResult = { kind: ImportOrExportBindingReferenceKind.None, node: undefined }; - const topLevelExportReferenceResult: ImportOrExportBindingReferenceResult = { kind: ImportOrExportBindingReferenceKind.TopLevelExportBinding, node: undefined }; - export function transformModule(context: TransformationContext) { interface AsynchronousDependencies { aliasedModuleNames: Expression[]; @@ -67,7 +49,7 @@ namespace ts { let currentModuleInfo: ExternalModuleInfo; // The ExternalModuleInfo for the current file. let noSubstitution: boolean[]; // Set of nodes for which substitution rules should be ignored. let needUMDDynamicImportHelper: boolean; - let bindingReferenceCache: ESMap | undefined; + let bindingReferenceCache: ESMap | undefined; return chainBundle(context, transformSourceFile); @@ -1776,49 +1758,61 @@ namespace ts { return node; } - function getImportOrExportBindingReferenceWorker(node: Identifier): ImportOrExportBindingReferenceResult { + /** + * For an Identifier, gets the import or export binding that it references. + * @returns One of the following: + * - An `Identifier` if node references an external helpers module (i.e., `tslib`). + * - A `SourceFile` if the node references an export in the file. + * - An `ImportClause` or `ImportSpecifier` if the node references an import binding. + * - Otherwise, `undefined`. + */ + function getImportOrExportBindingReferenceWorker(node: Identifier): Identifier | SourceFile | ImportClause | ImportSpecifier | undefined { if (getEmitFlags(node) & EmitFlags.HelperName) { const externalHelpersModuleName = getExternalHelpersModuleName(currentSourceFile); if (externalHelpersModuleName) { - return { kind: ImportOrExportBindingReferenceKind.ImportedHelper, node: externalHelpersModuleName }; + return externalHelpersModuleName; } } else if (!(isGeneratedIdentifier(node) && !(node.autoGenerateFlags & GeneratedIdentifierFlags.AllowNameSubstitution)) && !isLocalName(node)) { const exportContainer = resolver.getReferencedExportContainer(node, isExportName(node)); if (exportContainer?.kind === SyntaxKind.SourceFile) { - return topLevelExportReferenceResult; + return exportContainer; } const importDeclaration = resolver.getReferencedImportDeclaration(node); - if (importDeclaration) { - if (isImportClause(importDeclaration)) return { kind: ImportOrExportBindingReferenceKind.ImportClause, node: importDeclaration }; - if (isImportSpecifier(importDeclaration)) return { kind: ImportOrExportBindingReferenceKind.ImportSpecifier, node: importDeclaration }; + if (importDeclaration && (isImportClause(importDeclaration) || isImportSpecifier(importDeclaration))) { + return importDeclaration; } } - return noReferenceResult; + return undefined; } - function getImportOrExportBindingReference(node: Identifier, removeEntry: boolean): ImportOrExportBindingReferenceResult { - bindingReferenceCache ||= new Map(); - let result = bindingReferenceCache.get(node); - if (!result) { + /** + * For an Identifier, gets the import or export binding that it references. + * @param removeEntry When `false`, the result is cached to avoid recomputing the result in a later substitution. + * When `true`, any cached result for the node is removed. + * @returns One of the following: + * - An `Identifier` if node references an external helpers module (i.e., `tslib`). + * - A `SourceFile` if the node references an export in the file. + * - An `ImportClause` or `ImportSpecifier` if the node references an import binding. + * - Otherwise, `undefined`. + */ + function getImportOrExportBindingReference(node: Identifier, removeEntry: boolean): Identifier | SourceFile | ImportClause | ImportSpecifier | undefined { + let result = bindingReferenceCache?.get(node); + if (!result && !bindingReferenceCache?.has(node)) { result = getImportOrExportBindingReferenceWorker(node); if (!removeEntry) { - switch (result.kind) { - case ImportOrExportBindingReferenceKind.ImportedHelper: - case ImportOrExportBindingReferenceKind.ImportClause: - case ImportOrExportBindingReferenceKind.ImportSpecifier: - bindingReferenceCache.set(node, result); - } + bindingReferenceCache ||= new Map(); + bindingReferenceCache.set(node, result); } } else if (removeEntry) { - bindingReferenceCache.delete(node); + bindingReferenceCache?.delete(node); } return result; } function substituteCallExpression(node: CallExpression) { - if (isIdentifier(node.expression) && getImportOrExportBindingReference(node.expression, /*removeEntry*/ false).kind !== ImportOrExportBindingReferenceKind.None) { + if (isIdentifier(node.expression) && getImportOrExportBindingReference(node.expression, /*removeEntry*/ false)) { return isCallChain(node) ? factory.updateCallChain(node, setTextRange(factory.createComma(factory.createNumericLiteral(0), node.expression), node.expression), @@ -1834,7 +1828,7 @@ namespace ts { } function substituteTaggedTemplateExpression(node: TaggedTemplateExpression) { - if (isIdentifier(node.tag) && getImportOrExportBindingReference(node.tag, /*removeEntry*/ false).kind !== ImportOrExportBindingReferenceKind.None) { + if (isIdentifier(node.tag) && getImportOrExportBindingReference(node.tag, /*removeEntry*/ false)) { return factory.updateTaggedTemplateExpression( node, setTextRange(factory.createComma(factory.createNumericLiteral(0), node.tag), node.tag), @@ -1852,10 +1846,10 @@ namespace ts { */ function substituteExpressionIdentifier(node: Identifier): Expression { const result = getImportOrExportBindingReference(node, /*removeEntry*/ true); - switch (result.kind) { - case ImportOrExportBindingReferenceKind.ImportedHelper: - return factory.createPropertyAccessExpression(result.node, node); - case ImportOrExportBindingReferenceKind.TopLevelExportBinding: + switch (result?.kind) { + case SyntaxKind.Identifier: // tslib import + return factory.createPropertyAccessExpression(result, node); + case SyntaxKind.SourceFile: // top-level export return setTextRange( factory.createPropertyAccessExpression( factory.createIdentifier("exports"), @@ -1863,19 +1857,19 @@ namespace ts { ), /*location*/ node ); - case ImportOrExportBindingReferenceKind.ImportClause: + case SyntaxKind.ImportClause: return setTextRange( factory.createPropertyAccessExpression( - factory.getGeneratedNameForNode(result.node.parent), + factory.getGeneratedNameForNode(result.parent), factory.createIdentifier("default") ), /*location*/ node ); - case ImportOrExportBindingReferenceKind.ImportSpecifier: - const name = result.node.propertyName || result.node.name; + case SyntaxKind.ImportSpecifier: + const name = result.propertyName || result.name; return setTextRange( factory.createPropertyAccessExpression( - factory.getGeneratedNameForNode(result.node.parent?.parent?.parent || result.node), + factory.getGeneratedNameForNode(result.parent?.parent?.parent || result), factory.cloneNode(name) ), /*location*/ node diff --git a/src/harness/evaluatorImpl.ts b/src/harness/evaluatorImpl.ts index 260c65567853f..fc89e989eb8a0 100644 --- a/src/harness/evaluatorImpl.ts +++ b/src/harness/evaluatorImpl.ts @@ -4,23 +4,6 @@ namespace evaluator { const sourceFile = vpath.combine(vfs.srcFolder, "source.ts"); const sourceFileJs = vpath.combine(vfs.srcFolder, "source.js"); - function compile(sourceText: string, options?: ts.CompilerOptions) { - const fs = vfs.createFromFileSystem(Harness.IO, /*ignoreCase*/ false); - fs.writeFileSync(sourceFile, sourceText); - const compilerOptions: ts.CompilerOptions = { - target: ts.ScriptTarget.ES5, - module: ts.ModuleKind.CommonJS, - lib: ["lib.esnext.d.ts", "lib.dom.d.ts"], - ...options - }; - const host = new fakes.CompilerHost(fs, compilerOptions); - return compiler.compileFiles(host, [sourceFile], compilerOptions); - } - - function noRequire(id: string) { - throw new Error(`Module '${id}' could not be found.`); - } - // Define a custom "Symbol" constructor to attach missing built-in symbols without // modifying the global "Symbol" constructor const FakeSymbol: SymbolConstructor = ((description?: string) => Symbol(description)) as any; @@ -32,8 +15,17 @@ namespace evaluator { // Add "asyncIterator" if missing if (!ts.hasProperty(FakeSymbol, "asyncIterator")) Object.defineProperty(FakeSymbol, "asyncIterator", { value: Symbol.for("Symbol.asyncIterator"), configurable: true }); - export function evaluateTypeScript(sourceText: string, options?: ts.CompilerOptions, globals?: Record) { - const result = compile(sourceText, options); + export function evaluateTypeScript(source: string | { files: vfs.FileSet, rootFiles: string[], main: string }, options?: ts.CompilerOptions, globals?: Record) { + if (typeof source === "string") source = { files: { [sourceFile]: source }, rootFiles: [sourceFile], main: sourceFile }; + const fs = vfs.createFromFileSystem(Harness.IO, /*ignoreCase*/ false, { files: source.files }); + const compilerOptions: ts.CompilerOptions = { + target: ts.ScriptTarget.ES5, + module: ts.ModuleKind.CommonJS, + lib: ["lib.esnext.d.ts", "lib.dom.d.ts"], + ...options + }; + const host = new fakes.CompilerHost(fs, compilerOptions); + const result = compiler.compileFiles(host, source.rootFiles, compilerOptions); if (ts.some(result.diagnostics)) { assert.ok(/*value*/ false, "Syntax error in evaluation source text:\n" + ts.formatDiagnostics(result.diagnostics, { getCanonicalFileName: file => file, @@ -42,29 +34,100 @@ namespace evaluator { })); } - const output = result.getOutput(sourceFile, "js")!; + const output = result.getOutput(source.main, "js")!; assert.isDefined(output); - return evaluateJavaScript(output.text, globals, output.file); + globals = { Symbol: FakeSymbol, ...globals }; + return createLoader(fs, globals)(output.file); } - export function evaluateJavaScript(sourceText: string, globals?: Record, sourceFile = sourceFileJs) { - globals = { Symbol: FakeSymbol, ...globals }; + function createLoader(fs: vfs.FileSystem, globals: Record) { + interface Module { + exports: any; + } - const globalNames: string[] = []; - const globalArgs: any[] = []; - for (const name in globals) { - if (ts.hasProperty(globals, name)) { - globalNames.push(name); - globalArgs.push(globals[name]); + const moduleCache = new ts.Map(); + return load; + + function evaluate(text: string, file: string, module: Module) { + const globalNames: string[] = []; + const globalArgs: any[] = []; + for (const name in globals) { + if (ts.hasProperty(globals, name)) { + globalNames.push(name); + globalArgs.push(globals[name]); + } + } + const base = vpath.dirname(file); + const localRequire = (id: string) => requireModule(id, base); + const evaluateText = `(function (module, exports, require, __dirname, __filename, ${globalNames.join(", ")}) { ${text} })`; + // eslint-disable-next-line no-eval + const evaluateThunk = (void 0, eval)(evaluateText) as (module: any, exports: any, require: (id: string) => any, dirname: string, filename: string, ...globalArgs: any[]) => void; + evaluateThunk.call(globals, module, module.exports, localRequire, vpath.dirname(file), file, FakeSymbol, ...globalArgs); + } + + function loadModule(file: string): Module { + if (!ts.isExternalModuleNameRelative(file)) throw new Error(`Module '${file}' could not be found.`); + let module = moduleCache.get(file); + if (module) return module; + moduleCache.set(file, module = { exports: {} }); + try { + const sourceText = fs.readFileSync(file, "utf8"); + evaluate(sourceText, file, module); + return module; + } + catch (e) { + moduleCache.delete(file); + throw e; } } - const evaluateText = `(function (module, exports, require, __dirname, __filename, ${globalNames.join(", ")}) { ${sourceText} })`; - // eslint-disable-next-line no-eval - const evaluateThunk = (void 0, eval)(evaluateText) as (module: any, exports: any, require: (id: string) => any, dirname: string, filename: string, ...globalArgs: any[]) => void; - const module: { exports: any; } = { exports: {} }; - evaluateThunk.call(globals, module, module.exports, noRequire, vpath.dirname(sourceFile), sourceFile, FakeSymbol, ...globalArgs); - return module.exports; + function isFile(file: string) { + return fs.existsSync(file) && fs.statSync(file).isFile(); + } + + function loadAsFile(file: string): Module | undefined { + if (isFile(file)) return loadModule(file); + if (isFile(file + ".js")) return loadModule(file + ".js"); + return undefined; + } + + function loadIndex(dir: string): Module | undefined { + const indexFile = vpath.resolve(dir, "index.js"); + if (isFile(indexFile)) return loadModule(indexFile); + return undefined; + } + + function loadAsDirectory(dir: string): Module | undefined { + const packageFile = vpath.resolve(dir, "package.json"); + if (isFile(packageFile)) { + const text = fs.readFileSync(packageFile, "utf8"); + const json = JSON.parse(text); + if (json.main) { + const main = vpath.resolve(dir, json.main); + const result = loadAsFile(main) || loadIndex(main); + if (result === undefined) throw new Error("Module not found"); + } + } + return loadIndex(dir); + } + + function requireModule(id: string, base: string) { + if (!ts.isExternalModuleNameRelative(id)) throw new Error(`Module '${id}' could not be found.`); + const file = vpath.resolve(base, id); + const module = loadAsFile(file) || loadAsDirectory(file); + if (!module) throw new Error(`Module '${id}' could not be found.`); + return module.exports; + } + + function load(file: string) { + return requireModule(file, fs.cwd()); + } + } + + export function evaluateJavaScript(sourceText: string, globals?: Record, sourceFile = sourceFileJs) { + globals = { Symbol: FakeSymbol, ...globals }; + const fs = new vfs.FileSystem(/*ignoreCase*/ false, { files: { [sourceFile]: sourceText } }); + return createLoader(fs, globals)(sourceFile); } } diff --git a/src/testRunner/tsconfig.json b/src/testRunner/tsconfig.json index d18df87b6cdf1..d55da84efb849 100644 --- a/src/testRunner/tsconfig.json +++ b/src/testRunner/tsconfig.json @@ -91,6 +91,7 @@ "unittests/evaluation/asyncGenerator.ts", "unittests/evaluation/awaiter.ts", "unittests/evaluation/destructuring.ts", + "unittests/evaluation/externalModules.ts", "unittests/evaluation/forAwaitOf.ts", "unittests/evaluation/forOf.ts", "unittests/evaluation/optionalCall.ts", diff --git a/src/testRunner/unittests/evaluation/externalModules.ts b/src/testRunner/unittests/evaluation/externalModules.ts new file mode 100644 index 0000000000000..05c01fafb0413 --- /dev/null +++ b/src/testRunner/unittests/evaluation/externalModules.ts @@ -0,0 +1,84 @@ +describe("unittests:: evaluation:: namespaces", () => { + // https://github.com/microsoft/TypeScript/issues/35420 + it("Correct 'this' in function exported from external module", async () => { + const result = evaluator.evaluateTypeScript({ + files: { + "/.src/output.ts": ` + export const output: any[] = []; + `, + "/.src/other.ts": ` + import { output } from "./output"; + export function f(this: any, expected) { + output.push(this === expected); + } + + // 0 + f(undefined); + `, + "/.src/main.ts": ` + export { output } from "./output"; + import { output } from "./output"; + import { f } from "./other"; + import * as other from "./other"; + + // 1 + f(undefined, output); + + // 2 + const obj = {}; + f.call(obj, obj); + + // 3 + other.f(other); + ` + }, + rootFiles: ["/.src/main.ts"], + main: "/.src/main.ts" + }); + assert.equal(result.output[0], true); // `f(undefined)` inside module. Existing behavior is correct. + assert.equal(result.output[1], true); // `f(undefined)` from import. New behavior to match first case. + assert.equal(result.output[2], true); // `f.call(obj, obj)`. Behavior of `.call` (or `.apply`, etc.) should not be affected. + assert.equal(result.output[3], true); // `other.f(other)`. `this` is still namespace because it is left of `.`. + }); + + it("Correct 'this' in function expression exported from external module", async () => { + const result = evaluator.evaluateTypeScript({ + files: { + "/.src/output.ts": ` + export const output: any[] = []; + `, + "/.src/other.ts": ` + import { output } from "./output"; + export const f = function(this: any, expected) { + output.push(this === expected); + } + + // 0 + f(undefined); + `, + "/.src/main.ts": ` + export { output } from "./output"; + import { output } from "./output"; + import { f } from "./other"; + import * as other from "./other"; + + // 1 + f(undefined, output); + + // 2 + const obj = {}; + f.call(obj, obj); + + // 3 + other.f(other); + ` + }, + rootFiles: ["/.src/main.ts"], + main: "/.src/main.ts" + }); + assert.equal(result.output[0], true); // `f(undefined)` inside module. Existing behavior is incorrect. + assert.equal(result.output[1], true); // `f(undefined)` from import. New behavior to match first case. + assert.equal(result.output[2], true); // `f.call(obj, obj)`. Behavior of `.call` (or `.apply`, etc.) should not be affected. + assert.equal(result.output[3], true); // `other.f(other)`. `this` is still namespace because it is left of `.`. + }); +}); From 148754f98569e054e4617af7e0705f2c5b4f8dec Mon Sep 17 00:00:00 2001 From: Ron Buckton Date: Tue, 2 Mar 2021 19:53:55 -0800 Subject: [PATCH 4/4] Fix evaluator tests --- src/testRunner/unittests/evaluation/externalModules.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/testRunner/unittests/evaluation/externalModules.ts b/src/testRunner/unittests/evaluation/externalModules.ts index 05c01fafb0413..8febc2a6704a4 100644 --- a/src/testRunner/unittests/evaluation/externalModules.ts +++ b/src/testRunner/unittests/evaluation/externalModules.ts @@ -1,4 +1,4 @@ -describe("unittests:: evaluation:: namespaces", () => { +describe("unittests:: evaluation:: externalModules", () => { // https://github.com/microsoft/TypeScript/issues/35420 it("Correct 'this' in function exported from external module", async () => { const result = evaluator.evaluateTypeScript({ @@ -22,7 +22,7 @@ describe("unittests:: evaluation:: namespaces", () => { import * as other from "./other"; // 1 - f(undefined, output); + f(undefined); // 2 const obj = {}; @@ -63,7 +63,7 @@ describe("unittests:: evaluation:: namespaces", () => { import * as other from "./other"; // 1 - f(undefined, output); + f(undefined); // 2 const obj = {};