From 426685a6bd397628982711c99a4a35ffd9532eda Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Tue, 12 Nov 2019 15:49:53 -0800 Subject: [PATCH 01/47] Add type-only support for export declarations --- src/compiler/binder.ts | 13 +++++++-- src/compiler/checker.ts | 20 +++++++++---- src/compiler/factory.ts | 9 ++++-- src/compiler/parser.ts | 29 +++++++++++++++---- src/compiler/transformers/ts.ts | 4 +++ src/compiler/types.ts | 1 + src/compiler/utilities.ts | 9 ++++-- .../typeOnly/exportDeclaration.ts | 8 +++++ 8 files changed, 76 insertions(+), 17 deletions(-) create mode 100644 tests/cases/conformance/externalModules/typeOnly/exportDeclaration.ts diff --git a/src/compiler/binder.ts b/src/compiler/binder.ts index e09fa73e3c234..6593f0530dfc0 100644 --- a/src/compiler/binder.ts +++ b/src/compiler/binder.ts @@ -540,7 +540,7 @@ namespace ts { function declareModuleMember(node: Declaration, symbolFlags: SymbolFlags, symbolExcludes: SymbolFlags): Symbol { const hasExportModifier = getCombinedModifierFlags(node) & ModifierFlags.Export; - if (symbolFlags & SymbolFlags.Alias) { + if (symbolFlags & (SymbolFlags.Alias | SymbolFlags.TypeAlias)) { if (node.kind === SyntaxKind.ExportSpecifier || (node.kind === SyntaxKind.ImportEqualsDeclaration && hasExportModifier)) { return declareSymbol(container.symbol.exports!, container.symbol, node, symbolFlags, symbolExcludes); } @@ -2464,9 +2464,10 @@ namespace ts { // Imports and exports case SyntaxKind.ImportEqualsDeclaration: case SyntaxKind.NamespaceImport: + return declareSymbolAndAddToSymbolTable(node, SymbolFlags.Alias, SymbolFlags.AliasExcludes); case SyntaxKind.ImportSpecifier: case SyntaxKind.ExportSpecifier: - return declareSymbolAndAddToSymbolTable(node, SymbolFlags.Alias, SymbolFlags.AliasExcludes); + return bindImportOrExportSpecifier(node as ImportSpecifier | ExportSpecifier); case SyntaxKind.NamespaceExportDeclaration: return bindNamespaceExportDeclaration(node); case SyntaxKind.ImportClause: @@ -2555,6 +2556,14 @@ namespace ts { } } + function bindImportOrExportSpecifier(node: ImportSpecifier | ExportSpecifier) { + // TODO: look for `type` keyword on specifiers, import declaration + const isTypeOnly = tryCast(node, isExportSpecifier)?.parent.parent.isTypeOnly; + const includeFlags = isTypeOnly ? SymbolFlags.TypeAlias : SymbolFlags.Alias; + const excludeFlags = isTypeOnly ? SymbolFlags.TypeAliasExcludes : SymbolFlags.AliasExcludes; + return declareSymbolAndAddToSymbolTable(node, includeFlags, excludeFlags); + } + function bindNamespaceExportDeclaration(node: NamespaceExportDeclaration) { if (node.modifiers && node.modifiers.length) { file.bindDiagnostics.push(createDiagnosticForNode(node, Diagnostics.Modifiers_cannot_appear_here)); diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index bb65f5f3782b2..2464b1bc53e97 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -2444,7 +2444,7 @@ namespace ts { function markExportAsReferenced(node: ImportEqualsDeclaration | ExportSpecifier) { const symbol = getSymbolOfNode(node); - const target = resolveAlias(symbol); + const target = resolveSymbol(symbol); if (target) { const markAlias = target === unknownSymbol || ((target.flags & SymbolFlags.Value) && !isConstEnumOrConstEnumOnlyModule(target)); @@ -8069,9 +8069,17 @@ namespace ts { if (!declaration) { return Debug.fail("Type alias symbol with no valid declaration found"); } - const typeNode = isJSDocTypeAlias(declaration) ? declaration.typeExpression : declaration.type; - // If typeNode is missing, we will error in checkJSDocTypedefTag. - let type = typeNode ? getTypeFromTypeNode(typeNode) : errorType; + + let type: Type; + if (isTypeOnlyExportSpecifier(declaration)) { + const resolvedSymbol = resolveName(declaration, symbol.escapedName, SymbolFlags.Type, undefined, undefined, true); + type = resolvedSymbol ? getTypeOfSymbol(resolvedSymbol) : errorType; + } + else { + const typeNode = isJSDocTypeAlias(declaration) ? declaration.typeExpression : declaration.type; + // If typeNode is missing, we will error in checkJSDocTypedefTag. + type = typeNode ? getTypeFromTypeNode(typeNode) : errorType; + } if (popTypeResolution()) { const typeParameters = getLocalTypeParametersOfClassOrInterfaceOrTypeAlias(symbol); @@ -32691,7 +32699,9 @@ namespace ts { } function checkExportSpecifier(node: ExportSpecifier) { - checkAliasSymbol(node); + if (!isTypeOnlyExportSpecifier(node)) { + checkAliasSymbol(node); + } if (getEmitDeclarations(compilerOptions)) { collectLinkedAliases(node.propertyName || node.name, /*setVisibility*/ true); } diff --git a/src/compiler/factory.ts b/src/compiler/factory.ts index 12437d088fff6..d8b9bb469b56e 100644 --- a/src/compiler/factory.ts +++ b/src/compiler/factory.ts @@ -2327,10 +2327,11 @@ namespace ts { : node; } - export function createExportDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, exportClause: NamedExports | undefined, moduleSpecifier?: Expression) { + export function createExportDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, exportClause: NamedExports | undefined, moduleSpecifier?: Expression, isTypeOnly = false) { const node = createSynthesizedNode(SyntaxKind.ExportDeclaration); node.decorators = asNodeArray(decorators); node.modifiers = asNodeArray(modifiers); + node.isTypeOnly = isTypeOnly; node.exportClause = exportClause; node.moduleSpecifier = moduleSpecifier; return node; @@ -2341,12 +2342,14 @@ namespace ts { decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, exportClause: NamedExports | undefined, - moduleSpecifier: Expression | undefined) { + moduleSpecifier: Expression | undefined, + isTypeOnly = false) { return node.decorators !== decorators || node.modifiers !== modifiers + || node.isTypeOnly !== isTypeOnly || node.exportClause !== exportClause || node.moduleSpecifier !== moduleSpecifier - ? updateNode(createExportDeclaration(decorators, modifiers, exportClause, moduleSpecifier), node) + ? updateNode(createExportDeclaration(decorators, modifiers, exportClause, moduleSpecifier, isTypeOnly), node) : node; } diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index 49cdea63d58a2..dda905c0467ab 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -1483,7 +1483,10 @@ namespace ts { if (token() === SyntaxKind.DefaultKeyword) { return lookAhead(nextTokenCanFollowDefaultKeyword); } - return token() !== SyntaxKind.AsteriskToken && token() !== SyntaxKind.AsKeyword && token() !== SyntaxKind.OpenBraceToken && canFollowModifier(); + if (token() === SyntaxKind.TypeKeyword) { + return lookAhead(nextTokenCanFollowExportModifier); + } + return canFollowExportModifier(); case SyntaxKind.DefaultKeyword: return nextTokenCanFollowDefaultKeyword(); case SyntaxKind.StaticKeyword: @@ -1496,6 +1499,18 @@ namespace ts { } } + function canFollowExportModifier(): boolean { + return token() !== SyntaxKind.AsteriskToken + && token() !== SyntaxKind.AsKeyword + && token() !== SyntaxKind.OpenBraceToken + && canFollowModifier(); + } + + function nextTokenCanFollowExportModifier(): boolean { + nextToken(); + return canFollowExportModifier(); + } + function parseAnyContextualModifier(): boolean { return isModifierKind(token()) && tryParse(nextTokenCanFollowModifier); } @@ -5421,10 +5436,13 @@ namespace ts { return token() === SyntaxKind.StringLiteral || token() === SyntaxKind.AsteriskToken || token() === SyntaxKind.OpenBraceToken || tokenIsIdentifierOrKeyword(token()); case SyntaxKind.ExportKeyword: - nextToken(); - if (token() === SyntaxKind.EqualsToken || token() === SyntaxKind.AsteriskToken || - token() === SyntaxKind.OpenBraceToken || token() === SyntaxKind.DefaultKeyword || - token() === SyntaxKind.AsKeyword) { + let currentToken = nextToken(); + if (currentToken === SyntaxKind.TypeKeyword) { + currentToken = lookAhead(nextToken); + } + if (currentToken === SyntaxKind.EqualsToken || currentToken === SyntaxKind.AsteriskToken || + currentToken === SyntaxKind.OpenBraceToken || currentToken === SyntaxKind.DefaultKeyword || + currentToken === SyntaxKind.AsKeyword) { return true; } continue; @@ -6459,6 +6477,7 @@ namespace ts { function parseExportDeclaration(node: ExportDeclaration): ExportDeclaration { node.kind = SyntaxKind.ExportDeclaration; + node.isTypeOnly = parseOptional(SyntaxKind.TypeKeyword); if (parseOptional(SyntaxKind.AsteriskToken)) { parseExpected(SyntaxKind.FromKeyword); node.moduleSpecifier = parseModuleSpecifier(); diff --git a/src/compiler/transformers/ts.ts b/src/compiler/transformers/ts.ts index 85c907cf76f2d..6f55b5e904408 100644 --- a/src/compiler/transformers/ts.ts +++ b/src/compiler/transformers/ts.ts @@ -2838,6 +2838,10 @@ namespace ts { * @param node The export declaration node. */ function visitExportDeclaration(node: ExportDeclaration): VisitResult { + if (node.isTypeOnly) { + return undefined; + } + if (!node.exportClause) { // Elide a star export if the module it references does not export a value. return compilerOptions.isolatedModules || resolver.moduleExportsSomeValue(node.moduleSpecifier!) ? node : undefined; diff --git a/src/compiler/types.ts b/src/compiler/types.ts index 5d0511f232089..c78f4fbbed657 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -2458,6 +2458,7 @@ namespace ts { export interface ExportDeclaration extends DeclarationStatement, JSDocContainer { kind: SyntaxKind.ExportDeclaration; parent: SourceFile | ModuleBlock; + isTypeOnly: boolean; /** Will not be assigned in the case of `export * from "foo";` */ exportClause?: NamedExports; /** If this is not a StringLiteral it will be a grammar error. */ diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index a7e3c8c34a078..48f3b1ba132b6 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -2294,8 +2294,13 @@ namespace ts { return node.kind === SyntaxKind.JSDocTypedefTag || node.kind === SyntaxKind.JSDocCallbackTag || node.kind === SyntaxKind.JSDocEnumTag; } - export function isTypeAlias(node: Node): node is JSDocTypedefTag | JSDocCallbackTag | JSDocEnumTag | TypeAliasDeclaration { - return isJSDocTypeAlias(node) || isTypeAliasDeclaration(node); + export function isTypeAlias(node: Node): node is JSDocTypedefTag | JSDocCallbackTag | JSDocEnumTag | TypeAliasDeclaration | ExportSpecifier { + return isJSDocTypeAlias(node) || isTypeAliasDeclaration(node) || isTypeOnlyExportSpecifier(node); + } + + export function isTypeOnlyExportSpecifier(node: Node): node is ExportSpecifier { + // TODO: check specifier itself + return isExportSpecifier(node) && node.parent.parent.isTypeOnly; } function getSourceOfAssignment(node: Node): Node | undefined { diff --git a/tests/cases/conformance/externalModules/typeOnly/exportDeclaration.ts b/tests/cases/conformance/externalModules/typeOnly/exportDeclaration.ts new file mode 100644 index 0000000000000..d492ece20901d --- /dev/null +++ b/tests/cases/conformance/externalModules/typeOnly/exportDeclaration.ts @@ -0,0 +1,8 @@ +// @Filename: /a.ts +class A {} +export type { A }; + +// @Filename: /b.ts +import { A } from './a'; +declare const a: A; +new A(); From 856fe0fb2a3955eaac9e1a7408713f13681b83f1 Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Wed, 13 Nov 2019 14:07:05 -0800 Subject: [PATCH 02/47] Use a synthetic type alias instead of binding type-only exports as a type alias --- src/compiler/binder.ts | 13 ++----------- src/compiler/checker.ts | 36 +++++++++++++++++++++++++----------- src/compiler/utilities.ts | 4 ++-- 3 files changed, 29 insertions(+), 24 deletions(-) diff --git a/src/compiler/binder.ts b/src/compiler/binder.ts index 6593f0530dfc0..e09fa73e3c234 100644 --- a/src/compiler/binder.ts +++ b/src/compiler/binder.ts @@ -540,7 +540,7 @@ namespace ts { function declareModuleMember(node: Declaration, symbolFlags: SymbolFlags, symbolExcludes: SymbolFlags): Symbol { const hasExportModifier = getCombinedModifierFlags(node) & ModifierFlags.Export; - if (symbolFlags & (SymbolFlags.Alias | SymbolFlags.TypeAlias)) { + if (symbolFlags & SymbolFlags.Alias) { if (node.kind === SyntaxKind.ExportSpecifier || (node.kind === SyntaxKind.ImportEqualsDeclaration && hasExportModifier)) { return declareSymbol(container.symbol.exports!, container.symbol, node, symbolFlags, symbolExcludes); } @@ -2464,10 +2464,9 @@ namespace ts { // Imports and exports case SyntaxKind.ImportEqualsDeclaration: case SyntaxKind.NamespaceImport: - return declareSymbolAndAddToSymbolTable(node, SymbolFlags.Alias, SymbolFlags.AliasExcludes); case SyntaxKind.ImportSpecifier: case SyntaxKind.ExportSpecifier: - return bindImportOrExportSpecifier(node as ImportSpecifier | ExportSpecifier); + return declareSymbolAndAddToSymbolTable(node, SymbolFlags.Alias, SymbolFlags.AliasExcludes); case SyntaxKind.NamespaceExportDeclaration: return bindNamespaceExportDeclaration(node); case SyntaxKind.ImportClause: @@ -2556,14 +2555,6 @@ namespace ts { } } - function bindImportOrExportSpecifier(node: ImportSpecifier | ExportSpecifier) { - // TODO: look for `type` keyword on specifiers, import declaration - const isTypeOnly = tryCast(node, isExportSpecifier)?.parent.parent.isTypeOnly; - const includeFlags = isTypeOnly ? SymbolFlags.TypeAlias : SymbolFlags.Alias; - const excludeFlags = isTypeOnly ? SymbolFlags.TypeAliasExcludes : SymbolFlags.AliasExcludes; - return declareSymbolAndAddToSymbolTable(node, includeFlags, excludeFlags); - } - function bindNamespaceExportDeclaration(node: NamespaceExportDeclaration) { if (node.modifiers && node.modifiers.length) { file.bindDiagnostics.push(createDiagnosticForNode(node, Diagnostics.Modifiers_cannot_appear_here)); diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 2464b1bc53e97..876130b7e92c4 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -2339,10 +2339,25 @@ namespace ts { return resolveExternalModuleSymbol(node.parent.symbol, dontResolveAlias); } + /** + * Creates a type alias symbol with a target symbol for type-only imports and exports. + * The symbol for `A` in `export type { A }` or `export type { A } from "./mod"` has + * `TypeFlags.Alias` so that alias resolution works as usual, but once the target `A` + * has been resolved, we essentially want to pretend we have a type alias to that target. + */ + function createSyntheticTypeAlias(sourceNode: Declaration, target: Symbol) { + const symbol = createSymbol(SymbolFlags.TypeAlias, target.escapedName); + symbol.declarations = [sourceNode]; + symbol.valueDeclaration = sourceNode; + symbol.immediateTarget = target; + return symbol; + } + function getTargetOfExportSpecifier(node: ExportSpecifier, meaning: SymbolFlags, dontResolveAlias?: boolean) { - return node.parent.parent.moduleSpecifier ? + const target = node.parent.parent.moduleSpecifier ? getExternalModuleMember(node.parent.parent, node, dontResolveAlias) : resolveEntityName(node.propertyName || node.name, meaning, /*ignoreErrors*/ false, dontResolveAlias); + return target && isTypeOnlyExportSpecifier(node) ? createSyntheticTypeAlias(node, target) : target; } function getTargetOfExportAssignment(node: ExportAssignment | BinaryExpression, dontResolveAlias: boolean): Symbol | undefined { @@ -2444,7 +2459,7 @@ namespace ts { function markExportAsReferenced(node: ImportEqualsDeclaration | ExportSpecifier) { const symbol = getSymbolOfNode(node); - const target = resolveSymbol(symbol); + const target = resolveAlias(symbol); if (target) { const markAlias = target === unknownSymbol || ((target.flags & SymbolFlags.Value) && !isConstEnumOrConstEnumOnlyModule(target)); @@ -8065,17 +8080,16 @@ namespace ts { return errorType; } - const declaration = find(symbol.declarations, isTypeAlias); - if (!declaration) { - return Debug.fail("Type alias symbol with no valid declaration found"); - } - let type: Type; - if (isTypeOnlyExportSpecifier(declaration)) { - const resolvedSymbol = resolveName(declaration, symbol.escapedName, SymbolFlags.Type, undefined, undefined, true); - type = resolvedSymbol ? getTypeOfSymbol(resolvedSymbol) : errorType; + let declaration; + if (isTransientSymbol(symbol) && symbol.immediateTarget) { + // Symbol is synthetic type alias for type-only import or export. + // See `createSyntheticTypeAlias`. + type = getTypeOfSymbol(symbol.immediateTarget); + declaration = symbol.valueDeclaration; } else { + declaration = Debug.assertDefined(find(symbol.declarations, isTypeAlias), "Type alias symbol with no valid declaration found"); const typeNode = isJSDocTypeAlias(declaration) ? declaration.typeExpression : declaration.type; // If typeNode is missing, we will error in checkJSDocTypedefTag. type = typeNode ? getTypeFromTypeNode(typeNode) : errorType; @@ -8093,7 +8107,7 @@ namespace ts { } else { type = errorType; - error(isJSDocEnumTag(declaration) ? declaration : declaration.name || declaration, Diagnostics.Type_alias_0_circularly_references_itself, symbolToString(symbol)); + error(isNamedDeclaration(declaration) ? declaration.name : declaration || declaration, Diagnostics.Type_alias_0_circularly_references_itself, symbolToString(symbol)); } links.declaredType = type; } diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index 48f3b1ba132b6..5869bb850341a 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -2294,8 +2294,8 @@ namespace ts { return node.kind === SyntaxKind.JSDocTypedefTag || node.kind === SyntaxKind.JSDocCallbackTag || node.kind === SyntaxKind.JSDocEnumTag; } - export function isTypeAlias(node: Node): node is JSDocTypedefTag | JSDocCallbackTag | JSDocEnumTag | TypeAliasDeclaration | ExportSpecifier { - return isJSDocTypeAlias(node) || isTypeAliasDeclaration(node) || isTypeOnlyExportSpecifier(node); + export function isTypeAlias(node: Node): node is JSDocTypedefTag | JSDocCallbackTag | JSDocEnumTag | TypeAliasDeclaration { + return isJSDocTypeAlias(node) || isTypeAliasDeclaration(node); } export function isTypeOnlyExportSpecifier(node: Node): node is ExportSpecifier { From 9c659f64047105c590bd31d77f6128beed282849 Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Wed, 13 Nov 2019 14:33:48 -0800 Subject: [PATCH 03/47] Works for re-exports! --- .../reference/exportDeclaration.errors.txt | 14 +++++++++ .../baselines/reference/exportDeclaration.js | 24 +++++++++++++++ .../reference/exportDeclaration.symbols | 17 +++++++++++ .../reference/exportDeclaration.types | 18 +++++++++++ ...portDeclaration_moduleSpecifier.errors.txt | 16 ++++++++++ .../exportDeclaration_moduleSpecifier.js | 30 +++++++++++++++++++ .../exportDeclaration_moduleSpecifier.symbols | 18 +++++++++++ .../exportDeclaration_moduleSpecifier.types | 19 ++++++++++++ .../exportDeclaration_moduleSpecifier.ts | 10 +++++++ 9 files changed, 166 insertions(+) create mode 100644 tests/baselines/reference/exportDeclaration.errors.txt create mode 100644 tests/baselines/reference/exportDeclaration.js create mode 100644 tests/baselines/reference/exportDeclaration.symbols create mode 100644 tests/baselines/reference/exportDeclaration.types create mode 100644 tests/baselines/reference/exportDeclaration_moduleSpecifier.errors.txt create mode 100644 tests/baselines/reference/exportDeclaration_moduleSpecifier.js create mode 100644 tests/baselines/reference/exportDeclaration_moduleSpecifier.symbols create mode 100644 tests/baselines/reference/exportDeclaration_moduleSpecifier.types create mode 100644 tests/cases/conformance/externalModules/typeOnly/exportDeclaration_moduleSpecifier.ts diff --git a/tests/baselines/reference/exportDeclaration.errors.txt b/tests/baselines/reference/exportDeclaration.errors.txt new file mode 100644 index 0000000000000..387b348843945 --- /dev/null +++ b/tests/baselines/reference/exportDeclaration.errors.txt @@ -0,0 +1,14 @@ +/b.ts(3,5): error TS2693: 'A' only refers to a type, but is being used as a value here. + + +==== /a.ts (0 errors) ==== + class A {} + export type { A }; + +==== /b.ts (1 errors) ==== + import { A } from './a'; + declare const a: A; + new A(); + ~ +!!! error TS2693: 'A' only refers to a type, but is being used as a value here. + \ No newline at end of file diff --git a/tests/baselines/reference/exportDeclaration.js b/tests/baselines/reference/exportDeclaration.js new file mode 100644 index 0000000000000..2699093d1323d --- /dev/null +++ b/tests/baselines/reference/exportDeclaration.js @@ -0,0 +1,24 @@ +//// [tests/cases/conformance/externalModules/typeOnly/exportDeclaration.ts] //// + +//// [a.ts] +class A {} +export type { A }; + +//// [b.ts] +import { A } from './a'; +declare const a: A; +new A(); + + +//// [a.js] +"use strict"; +exports.__esModule = true; +var A = /** @class */ (function () { + function A() { + } + return A; +}()); +//// [b.js] +"use strict"; +exports.__esModule = true; +new A(); diff --git a/tests/baselines/reference/exportDeclaration.symbols b/tests/baselines/reference/exportDeclaration.symbols new file mode 100644 index 0000000000000..c35f92e71592e --- /dev/null +++ b/tests/baselines/reference/exportDeclaration.symbols @@ -0,0 +1,17 @@ +=== /a.ts === +class A {} +>A : Symbol(A, Decl(a.ts, 0, 0)) + +export type { A }; +>A : Symbol(A, Decl(a.ts, 1, 13)) + +=== /b.ts === +import { A } from './a'; +>A : Symbol(A, Decl(b.ts, 0, 8)) + +declare const a: A; +>a : Symbol(a, Decl(b.ts, 1, 13)) +>A : Symbol(A, Decl(b.ts, 0, 8)) + +new A(); + diff --git a/tests/baselines/reference/exportDeclaration.types b/tests/baselines/reference/exportDeclaration.types new file mode 100644 index 0000000000000..00275af46b1ca --- /dev/null +++ b/tests/baselines/reference/exportDeclaration.types @@ -0,0 +1,18 @@ +=== /a.ts === +class A {} +>A : A + +export type { A }; +>A : any + +=== /b.ts === +import { A } from './a'; +>A : any + +declare const a: A; +>a : typeof A + +new A(); +>new A() : any +>A : any + diff --git a/tests/baselines/reference/exportDeclaration_moduleSpecifier.errors.txt b/tests/baselines/reference/exportDeclaration_moduleSpecifier.errors.txt new file mode 100644 index 0000000000000..6ef18aad95986 --- /dev/null +++ b/tests/baselines/reference/exportDeclaration_moduleSpecifier.errors.txt @@ -0,0 +1,16 @@ +/c.ts(3,5): error TS2693: 'A' only refers to a type, but is being used as a value here. + + +==== /a.ts (0 errors) ==== + export class A {} + +==== /b.ts (0 errors) ==== + export type { A } from './a'; + +==== /c.ts (1 errors) ==== + import { A } from './b'; + declare const a: A; + new A(); + ~ +!!! error TS2693: 'A' only refers to a type, but is being used as a value here. + \ No newline at end of file diff --git a/tests/baselines/reference/exportDeclaration_moduleSpecifier.js b/tests/baselines/reference/exportDeclaration_moduleSpecifier.js new file mode 100644 index 0000000000000..edc093f700b89 --- /dev/null +++ b/tests/baselines/reference/exportDeclaration_moduleSpecifier.js @@ -0,0 +1,30 @@ +//// [tests/cases/conformance/externalModules/typeOnly/exportDeclaration_moduleSpecifier.ts] //// + +//// [a.ts] +export class A {} + +//// [b.ts] +export type { A } from './a'; + +//// [c.ts] +import { A } from './b'; +declare const a: A; +new A(); + + +//// [a.js] +"use strict"; +exports.__esModule = true; +var A = /** @class */ (function () { + function A() { + } + return A; +}()); +exports.A = A; +//// [b.js] +"use strict"; +exports.__esModule = true; +//// [c.js] +"use strict"; +exports.__esModule = true; +new A(); diff --git a/tests/baselines/reference/exportDeclaration_moduleSpecifier.symbols b/tests/baselines/reference/exportDeclaration_moduleSpecifier.symbols new file mode 100644 index 0000000000000..e4917cddc066d --- /dev/null +++ b/tests/baselines/reference/exportDeclaration_moduleSpecifier.symbols @@ -0,0 +1,18 @@ +=== /a.ts === +export class A {} +>A : Symbol(A, Decl(a.ts, 0, 0)) + +=== /b.ts === +export type { A } from './a'; +>A : Symbol(A, Decl(b.ts, 0, 13)) + +=== /c.ts === +import { A } from './b'; +>A : Symbol(A, Decl(c.ts, 0, 8)) + +declare const a: A; +>a : Symbol(a, Decl(c.ts, 1, 13)) +>A : Symbol(A, Decl(c.ts, 0, 8)) + +new A(); + diff --git a/tests/baselines/reference/exportDeclaration_moduleSpecifier.types b/tests/baselines/reference/exportDeclaration_moduleSpecifier.types new file mode 100644 index 0000000000000..7b179e38a6e95 --- /dev/null +++ b/tests/baselines/reference/exportDeclaration_moduleSpecifier.types @@ -0,0 +1,19 @@ +=== /a.ts === +export class A {} +>A : A + +=== /b.ts === +export type { A } from './a'; +>A : any + +=== /c.ts === +import { A } from './b'; +>A : any + +declare const a: A; +>a : typeof import("/a").A + +new A(); +>new A() : any +>A : any + diff --git a/tests/cases/conformance/externalModules/typeOnly/exportDeclaration_moduleSpecifier.ts b/tests/cases/conformance/externalModules/typeOnly/exportDeclaration_moduleSpecifier.ts new file mode 100644 index 0000000000000..d33b6fe990047 --- /dev/null +++ b/tests/cases/conformance/externalModules/typeOnly/exportDeclaration_moduleSpecifier.ts @@ -0,0 +1,10 @@ +// @Filename: /a.ts +export class A {} + +// @Filename: /b.ts +export type { A } from './a'; + +// @Filename: /c.ts +import { A } from './b'; +declare const a: A; +new A(); From a3d16f6af79619c9f0df893cb2b2cd31be0ad64f Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Wed, 13 Nov 2019 15:00:19 -0800 Subject: [PATCH 04/47] isolatedModules works fine --- ...Declaration_moduleSpecifier-isolatedModules.js | 15 +++++++++++++++ ...ration_moduleSpecifier-isolatedModules.symbols | 8 ++++++++ ...laration_moduleSpecifier-isolatedModules.types | 8 ++++++++ ...Declaration_moduleSpecifier-isolatedModules.ts | 7 +++++++ 4 files changed, 38 insertions(+) create mode 100644 tests/baselines/reference/exportDeclaration_moduleSpecifier-isolatedModules.js create mode 100644 tests/baselines/reference/exportDeclaration_moduleSpecifier-isolatedModules.symbols create mode 100644 tests/baselines/reference/exportDeclaration_moduleSpecifier-isolatedModules.types create mode 100644 tests/cases/conformance/externalModules/typeOnly/exportDeclaration_moduleSpecifier-isolatedModules.ts diff --git a/tests/baselines/reference/exportDeclaration_moduleSpecifier-isolatedModules.js b/tests/baselines/reference/exportDeclaration_moduleSpecifier-isolatedModules.js new file mode 100644 index 0000000000000..2915e1f0eb8b7 --- /dev/null +++ b/tests/baselines/reference/exportDeclaration_moduleSpecifier-isolatedModules.js @@ -0,0 +1,15 @@ +//// [tests/cases/conformance/externalModules/typeOnly/exportDeclaration_moduleSpecifier-isolatedModules.ts] //// + +//// [a.ts] +export type A = {}; + +//// [b.ts] +export type { A } from './a'; // should not error, but would without `type` + + +//// [a.js] +"use strict"; +exports.__esModule = true; +//// [b.js] +"use strict"; +exports.__esModule = true; diff --git a/tests/baselines/reference/exportDeclaration_moduleSpecifier-isolatedModules.symbols b/tests/baselines/reference/exportDeclaration_moduleSpecifier-isolatedModules.symbols new file mode 100644 index 0000000000000..17a4593a0e9bf --- /dev/null +++ b/tests/baselines/reference/exportDeclaration_moduleSpecifier-isolatedModules.symbols @@ -0,0 +1,8 @@ +=== /a.ts === +export type A = {}; +>A : Symbol(A, Decl(a.ts, 0, 0)) + +=== /b.ts === +export type { A } from './a'; // should not error, but would without `type` +>A : Symbol(A, Decl(b.ts, 0, 13)) + diff --git a/tests/baselines/reference/exportDeclaration_moduleSpecifier-isolatedModules.types b/tests/baselines/reference/exportDeclaration_moduleSpecifier-isolatedModules.types new file mode 100644 index 0000000000000..3e7307013f27a --- /dev/null +++ b/tests/baselines/reference/exportDeclaration_moduleSpecifier-isolatedModules.types @@ -0,0 +1,8 @@ +=== /a.ts === +export type A = {}; +>A : A + +=== /b.ts === +export type { A } from './a'; // should not error, but would without `type` +>A : any + diff --git a/tests/cases/conformance/externalModules/typeOnly/exportDeclaration_moduleSpecifier-isolatedModules.ts b/tests/cases/conformance/externalModules/typeOnly/exportDeclaration_moduleSpecifier-isolatedModules.ts new file mode 100644 index 0000000000000..e625e9065a0fc --- /dev/null +++ b/tests/cases/conformance/externalModules/typeOnly/exportDeclaration_moduleSpecifier-isolatedModules.ts @@ -0,0 +1,7 @@ +// @isolatedModules: true + +// @Filename: /a.ts +export type A = {}; + +// @Filename: /b.ts +export type { A } from './a'; // should not error, but would without `type` From edfc798f41341c7a9899de6a33ee06ff6629198e Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Wed, 13 Nov 2019 15:39:54 -0800 Subject: [PATCH 05/47] Diagnostic for type-only exporting a value --- src/compiler/checker.ts | 19 +++++++++++++++---- src/compiler/diagnosticMessages.json | 4 ++++ .../exportDeclaration_value.errors.txt | 18 ++++++++++++++++++ .../reference/exportDeclaration_value.js | 19 +++++++++++++++++++ .../reference/exportDeclaration_value.symbols | 14 ++++++++++++++ .../reference/exportDeclaration_value.types | 16 ++++++++++++++++ .../typeOnly/exportDeclaration_value.ts | 7 +++++++ 7 files changed, 93 insertions(+), 4 deletions(-) create mode 100644 tests/baselines/reference/exportDeclaration_value.errors.txt create mode 100644 tests/baselines/reference/exportDeclaration_value.js create mode 100644 tests/baselines/reference/exportDeclaration_value.symbols create mode 100644 tests/baselines/reference/exportDeclaration_value.types create mode 100644 tests/cases/conformance/externalModules/typeOnly/exportDeclaration_value.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 876130b7e92c4..2b98fd7da4665 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -2345,7 +2345,20 @@ namespace ts { * `TypeFlags.Alias` so that alias resolution works as usual, but once the target `A` * has been resolved, we essentially want to pretend we have a type alias to that target. */ - function createSyntheticTypeAlias(sourceNode: Declaration, target: Symbol) { + function createSyntheticTypeAlias(sourceNode: ExportSpecifier | ImportSpecifier, target: Symbol) { + if (!(target.flags & SymbolFlags.Type)) { + const nameText = idText(sourceNode.name); + addRelatedInfo( + error( + sourceNode.name, + Diagnostics.Type_only_0_must_be_a_type_but_1_is_a_value, + isExportSpecifier(sourceNode) ? "export" : "import", + nameText), + createDiagnosticForNode( + target.valueDeclaration ?? target.declarations[0], + Diagnostics._0_is_declared_here, + nameText)); + } const symbol = createSymbol(SymbolFlags.TypeAlias, target.escapedName); symbol.declarations = [sourceNode]; symbol.valueDeclaration = sourceNode; @@ -32713,9 +32726,7 @@ namespace ts { } function checkExportSpecifier(node: ExportSpecifier) { - if (!isTypeOnlyExportSpecifier(node)) { - checkAliasSymbol(node); - } + checkAliasSymbol(node); if (getEmitDeclarations(compilerOptions)) { collectLinkedAliases(node.propertyName || node.name, /*setVisibility*/ true); } diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index 4fb13c564bc22..bc1ab9d025c69 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -1051,6 +1051,10 @@ "category": "Error", "code": 1360 }, + "Type-only {0} must be a type, but '{1}' is a value.": { + "category": "Error", + "code": 1361 + }, "The types of '{0}' are incompatible between these types.": { "category": "Error", diff --git a/tests/baselines/reference/exportDeclaration_value.errors.txt b/tests/baselines/reference/exportDeclaration_value.errors.txt new file mode 100644 index 0000000000000..0f4409e794ff6 --- /dev/null +++ b/tests/baselines/reference/exportDeclaration_value.errors.txt @@ -0,0 +1,18 @@ +/a.ts(2,15): error TS1361: Type-only export must be a type, but 'A' is a value. +/b.ts(1,15): error TS1361: Type-only export must be a type, but 'AA' is a value. + + +==== /a.ts (1 errors) ==== + const A = {}; + export type { A }; + ~ +!!! error TS1361: Type-only export must be a type, but 'A' is a value. +!!! related TS2728 /a.ts:1:7: 'A' is declared here. + export const AA = {}; + +==== /b.ts (1 errors) ==== + export type { AA } from './a'; + ~~ +!!! error TS1361: Type-only export must be a type, but 'AA' is a value. +!!! related TS2728 /a.ts:3:14: 'AA' is declared here. + \ No newline at end of file diff --git a/tests/baselines/reference/exportDeclaration_value.js b/tests/baselines/reference/exportDeclaration_value.js new file mode 100644 index 0000000000000..8abeef1a7b279 --- /dev/null +++ b/tests/baselines/reference/exportDeclaration_value.js @@ -0,0 +1,19 @@ +//// [tests/cases/conformance/externalModules/typeOnly/exportDeclaration_value.ts] //// + +//// [a.ts] +const A = {}; +export type { A }; +export const AA = {}; + +//// [b.ts] +export type { AA } from './a'; + + +//// [a.js] +"use strict"; +exports.__esModule = true; +var A = {}; +exports.AA = {}; +//// [b.js] +"use strict"; +exports.__esModule = true; diff --git a/tests/baselines/reference/exportDeclaration_value.symbols b/tests/baselines/reference/exportDeclaration_value.symbols new file mode 100644 index 0000000000000..505dba2c5591b --- /dev/null +++ b/tests/baselines/reference/exportDeclaration_value.symbols @@ -0,0 +1,14 @@ +=== /a.ts === +const A = {}; +>A : Symbol(A, Decl(a.ts, 0, 5)) + +export type { A }; +>A : Symbol(A, Decl(a.ts, 1, 13)) + +export const AA = {}; +>AA : Symbol(AA, Decl(a.ts, 2, 12)) + +=== /b.ts === +export type { AA } from './a'; +>AA : Symbol(AA, Decl(b.ts, 0, 13)) + diff --git a/tests/baselines/reference/exportDeclaration_value.types b/tests/baselines/reference/exportDeclaration_value.types new file mode 100644 index 0000000000000..524b6fd57fb21 --- /dev/null +++ b/tests/baselines/reference/exportDeclaration_value.types @@ -0,0 +1,16 @@ +=== /a.ts === +const A = {}; +>A : {} +>{} : {} + +export type { A }; +>A : any + +export const AA = {}; +>AA : {} +>{} : {} + +=== /b.ts === +export type { AA } from './a'; +>AA : any + diff --git a/tests/cases/conformance/externalModules/typeOnly/exportDeclaration_value.ts b/tests/cases/conformance/externalModules/typeOnly/exportDeclaration_value.ts new file mode 100644 index 0000000000000..1ae4c63b31049 --- /dev/null +++ b/tests/cases/conformance/externalModules/typeOnly/exportDeclaration_value.ts @@ -0,0 +1,7 @@ +// @Filename: /a.ts +const A = {}; +export type { A }; +export const AA = {}; + +// @Filename: /b.ts +export type { AA } from './a'; From 84238f923f00f03ead00c60ff9c934aba1ab515d Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Thu, 14 Nov 2019 11:52:59 -0800 Subject: [PATCH 06/47] Start isolated modules codefix --- src/compiler/checker.ts | 2 +- src/compiler/diagnosticMessages.json | 10 ++++- src/compiler/emitter.ts | 4 ++ .../codefixes/convertToTypeOnlyExport.ts | 38 +++++++++++++++++++ src/services/tsconfig.json | 1 + .../codeFixConvertToTypeOnlyExport.ts | 16 ++++++++ 6 files changed, 69 insertions(+), 2 deletions(-) create mode 100644 src/services/codefixes/convertToTypeOnlyExport.ts create mode 100644 tests/cases/fourslash/codeFixConvertToTypeOnlyExport.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 2b98fd7da4665..68fe49f379f5d 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -32604,7 +32604,7 @@ namespace ts { && node.kind === SyntaxKind.ExportSpecifier && !(target.flags & SymbolFlags.Value) && !(node.flags & NodeFlags.Ambient)) { - error(node, Diagnostics.Cannot_re_export_a_type_when_the_isolatedModules_flag_is_provided); + error(node, Diagnostics.Re_exporting_a_type_when_the_isolatedModules_flag_is_provided_requires_using_an_explicit_type_only_export); } } } diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index bc1ab9d025c69..99f575c92f14c 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -635,7 +635,7 @@ "category": "Error", "code": 1203 }, - "Cannot re-export a type when the '--isolatedModules' flag is provided.": { + "Re-exporting a type when the '--isolatedModules' flag is provided requires using an explicit type-only export.": { "category": "Error", "code": 1205 }, @@ -1055,6 +1055,14 @@ "category": "Error", "code": 1361 }, + "Convert to type-only export": { + "category": "Message", + "code": 1362 + }, + "Convert all re-exported types to type-only exports": { + "category": "Message", + "code": 1363 + }, "The types of '{0}' are incompatible between these types.": { "category": "Error", diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index 843b803623074..602a5032be9cd 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -3075,6 +3075,10 @@ namespace ts { function emitExportDeclaration(node: ExportDeclaration) { let nextPos = emitTokenWithComment(SyntaxKind.ExportKeyword, node.pos, writeKeyword, node); writeSpace(); + if (node.isTypeOnly) { + nextPos = emitTokenWithComment(SyntaxKind.TypeKeyword, nextPos, writeKeyword, node); + writeSpace(); + } if (node.exportClause) { emit(node.exportClause); } diff --git a/src/services/codefixes/convertToTypeOnlyExport.ts b/src/services/codefixes/convertToTypeOnlyExport.ts new file mode 100644 index 0000000000000..8a16b63973bfa --- /dev/null +++ b/src/services/codefixes/convertToTypeOnlyExport.ts @@ -0,0 +1,38 @@ +/* @internal */ +namespace ts.codefix { + const errorCodes = [Diagnostics.Re_exporting_a_type_when_the_isolatedModules_flag_is_provided_requires_using_an_explicit_type_only_export.code]; + const fixId = "convertToTypeOnlyExport"; + registerCodeFix({ + errorCodes, + getCodeActions: context => { + const changes = textChanges.ChangeTracker.with(context, t => fixSingleExport(t, context)); + if (changes.length) { + return [createCodeFixAction(fixId, changes, Diagnostics.Convert_to_type_only_export, fixId, Diagnostics.Convert_all_re_exported_types_to_type_only_exports)]; + } + }, + fixIds: [fixId], + // getAllCodeActions: context => codeFixAll(context, errorCodes, (changes, diag) => { + // // TODO + // }) + }); + + function fixSingleExport(changes: textChanges.ChangeTracker, { sourceFile, span }: CodeFixContext) { + const exportSpecifier = tryCast(getTokenAtPosition(sourceFile, span.start).parent, isExportSpecifier); + const exportDeclaration = exportSpecifier?.parent.parent; + if (exportDeclaration?.exportClause?.elements.length === 1) { + changes.replaceNode( + sourceFile, + exportDeclaration!, + updateExportDeclaration( + exportDeclaration!, + exportDeclaration!.decorators, + exportDeclaration!.modifiers, + exportDeclaration!.exportClause, + exportDeclaration!.moduleSpecifier, + /*isTypeOnly*/ true)); + } + else { + // TODO: update individual export specifier + } + } +} diff --git a/src/services/tsconfig.json b/src/services/tsconfig.json index a75a96c961eae..42157d1ed1375 100644 --- a/src/services/tsconfig.json +++ b/src/services/tsconfig.json @@ -57,6 +57,7 @@ "codefixes/convertToAsyncFunction.ts", "codefixes/convertToEs6Module.ts", "codefixes/correctQualifiedNameToIndexedAccessType.ts", + "codefixes/convertToTypeOnlyExport.ts", "codefixes/fixClassIncorrectlyImplementsInterface.ts", "codefixes/importFixes.ts", "codefixes/fixSpelling.ts", diff --git a/tests/cases/fourslash/codeFixConvertToTypeOnlyExport.ts b/tests/cases/fourslash/codeFixConvertToTypeOnlyExport.ts new file mode 100644 index 0000000000000..52bfd625df12d --- /dev/null +++ b/tests/cases/fourslash/codeFixConvertToTypeOnlyExport.ts @@ -0,0 +1,16 @@ +/// + +// @isolatedModules: true + +// @Filename: /a.ts +////export type A = {}; + +// @Filename: /b.ts +////export { /**/A } from './a'; + +goTo.file('/b.ts'); +verify.codeFix({ + errorCode: ts.Diagnostics.Re_exporting_a_type_when_the_isolatedModules_flag_is_provided_requires_using_an_explicit_type_only_export.code, + description: ts.Diagnostics.Convert_to_type_only_export.message, + newFileContent: `export type { A } from './a';` +}); From 5d2bc5d324ac311182ac2d8407d8afd4b1d4930a Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Fri, 15 Nov 2019 10:41:12 -0800 Subject: [PATCH 07/47] Update for LKG control flow changes --- src/services/codefixes/convertToTypeOnlyExport.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/services/codefixes/convertToTypeOnlyExport.ts b/src/services/codefixes/convertToTypeOnlyExport.ts index 8a16b63973bfa..fe726c6f3655e 100644 --- a/src/services/codefixes/convertToTypeOnlyExport.ts +++ b/src/services/codefixes/convertToTypeOnlyExport.ts @@ -22,13 +22,13 @@ namespace ts.codefix { if (exportDeclaration?.exportClause?.elements.length === 1) { changes.replaceNode( sourceFile, - exportDeclaration!, + exportDeclaration, updateExportDeclaration( - exportDeclaration!, - exportDeclaration!.decorators, - exportDeclaration!.modifiers, - exportDeclaration!.exportClause, - exportDeclaration!.moduleSpecifier, + exportDeclaration, + exportDeclaration.decorators, + exportDeclaration.modifiers, + exportDeclaration.exportClause, + exportDeclaration.moduleSpecifier, /*isTypeOnly*/ true)); } else { From e736045596e3396fcf1d4baa992eaf46c9e5cdeb Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Mon, 18 Nov 2019 12:13:01 -0800 Subject: [PATCH 08/47] Type-only import clause parsing --- src/compiler/factory.ts | 6 ++-- src/compiler/parser.ts | 28 ++++++++++++++++--- src/compiler/types.ts | 1 + .../reference/importDefaultNamedType.js | 21 ++++++++++++++ .../reference/importDefaultNamedType.symbols | 8 ++++++ .../reference/importDefaultNamedType.types | 8 ++++++ .../typeOnly/importClause_default.ts | 7 +++++ .../typeOnly/importDefaultNamedType.ts | 5 ++++ 8 files changed, 78 insertions(+), 6 deletions(-) create mode 100644 tests/baselines/reference/importDefaultNamedType.js create mode 100644 tests/baselines/reference/importDefaultNamedType.symbols create mode 100644 tests/baselines/reference/importDefaultNamedType.types create mode 100644 tests/cases/conformance/externalModules/typeOnly/importClause_default.ts create mode 100644 tests/cases/conformance/externalModules/typeOnly/importDefaultNamedType.ts diff --git a/src/compiler/factory.ts b/src/compiler/factory.ts index d8b9bb469b56e..0f00c5cb62f60 100644 --- a/src/compiler/factory.ts +++ b/src/compiler/factory.ts @@ -2258,16 +2258,18 @@ namespace ts { : node; } - export function createImportClause(name: Identifier | undefined, namedBindings: NamedImportBindings | undefined): ImportClause { + export function createImportClause(name: Identifier | undefined, namedBindings: NamedImportBindings | undefined, isTypeOnly = false): ImportClause { const node = createSynthesizedNode(SyntaxKind.ImportClause); node.name = name; node.namedBindings = namedBindings; + node.isTypeOnly = isTypeOnly; return node; } - export function updateImportClause(node: ImportClause, name: Identifier | undefined, namedBindings: NamedImportBindings | undefined) { + export function updateImportClause(node: ImportClause, name: Identifier | undefined, namedBindings: NamedImportBindings | undefined, isTypeOnly = false) { return node.name !== name || node.namedBindings !== namedBindings + || node.isTypeOnly !== isTypeOnly ? updateNode(createImportClause(name, namedBindings), node) : node; } diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index dda905c0467ab..9f1fad90d641f 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -6322,9 +6322,9 @@ namespace ts { const afterImportPos = scanner.getStartPos(); let identifier: Identifier | undefined; - if (isIdentifier()) { + if (isIdentifier() && (token() !== SyntaxKind.TypeKeyword || lookAhead(nextTokenAfterImportedIdentifierProducesImportDeclaration))) { identifier = parseIdentifier(); - if (token() !== SyntaxKind.CommaToken && token() !== SyntaxKind.FromKeyword) { + if (!tokenAfterImportedIdentifierProducesImportDeclaration()) { return parseImportEqualsDeclaration(node, identifier); } } @@ -6335,8 +6335,9 @@ namespace ts { // import ImportClause from ModuleSpecifier ; // import ModuleSpecifier; if (identifier || // import id - token() === SyntaxKind.AsteriskToken || // import * - token() === SyntaxKind.OpenBraceToken) { // import { + token() === SyntaxKind.AsteriskToken || // import * + token() === SyntaxKind.OpenBraceToken || // import { + token() === SyntaxKind.TypeKeyword) { // import type (node).importClause = parseImportClause(identifier, afterImportPos); parseExpected(SyntaxKind.FromKeyword); } @@ -6346,6 +6347,17 @@ namespace ts { return finishNode(node); } + function tokenAfterImportedIdentifierProducesImportDeclaration() { + // In `import id ___`, the current token decides whether to produce + // an ImportDeclaration or ImportEqualsDeclaration. + return token() === SyntaxKind.CommaToken || token() === SyntaxKind.FromKeyword; + } + + function nextTokenAfterImportedIdentifierProducesImportDeclaration() { + nextToken(); + return tokenAfterImportedIdentifierProducesImportDeclaration(); + } + function parseImportEqualsDeclaration(node: ImportEqualsDeclaration, identifier: Identifier): ImportEqualsDeclaration { node.kind = SyntaxKind.ImportEqualsDeclaration; node.name = identifier; @@ -6364,6 +6376,14 @@ namespace ts { // ImportedDefaultBinding, NamedImports const importClause = createNode(SyntaxKind.ImportClause, fullStart); + if (token() === SyntaxKind.TypeKeyword) { + importClause.isTypeOnly = true; + nextToken(); + if (isIdentifier()) { + identifier = parseIdentifier(); + } + } + if (identifier) { // ImportedDefaultBinding: // ImportedBinding diff --git a/src/compiler/types.ts b/src/compiler/types.ts index c78f4fbbed657..445b5f1e5cc24 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -2440,6 +2440,7 @@ namespace ts { export interface ImportClause extends NamedDeclaration { kind: SyntaxKind.ImportClause; parent: ImportDeclaration; + isTypeOnly: boolean; name?: Identifier; // Default binding namedBindings?: NamedImportBindings; } diff --git a/tests/baselines/reference/importDefaultNamedType.js b/tests/baselines/reference/importDefaultNamedType.js new file mode 100644 index 0000000000000..72f4f462ce4a5 --- /dev/null +++ b/tests/baselines/reference/importDefaultNamedType.js @@ -0,0 +1,21 @@ +//// [tests/cases/conformance/externalModules/typeOnly/importDefaultNamedType.ts] //// + +//// [a.ts] +export default class A {} + +//// [b.ts] +import type from './a'; + + +//// [a.js] +"use strict"; +exports.__esModule = true; +var A = /** @class */ (function () { + function A() { + } + return A; +}()); +exports["default"] = A; +//// [b.js] +"use strict"; +exports.__esModule = true; diff --git a/tests/baselines/reference/importDefaultNamedType.symbols b/tests/baselines/reference/importDefaultNamedType.symbols new file mode 100644 index 0000000000000..c8c17d5584615 --- /dev/null +++ b/tests/baselines/reference/importDefaultNamedType.symbols @@ -0,0 +1,8 @@ +=== /a.ts === +export default class A {} +>A : Symbol(A, Decl(a.ts, 0, 0)) + +=== /b.ts === +import type from './a'; +>type : Symbol(type, Decl(b.ts, 0, 6)) + diff --git a/tests/baselines/reference/importDefaultNamedType.types b/tests/baselines/reference/importDefaultNamedType.types new file mode 100644 index 0000000000000..496fc7fe53334 --- /dev/null +++ b/tests/baselines/reference/importDefaultNamedType.types @@ -0,0 +1,8 @@ +=== /a.ts === +export default class A {} +>A : A + +=== /b.ts === +import type from './a'; +>type : typeof type + diff --git a/tests/cases/conformance/externalModules/typeOnly/importClause_default.ts b/tests/cases/conformance/externalModules/typeOnly/importClause_default.ts new file mode 100644 index 0000000000000..6606125cd5b97 --- /dev/null +++ b/tests/cases/conformance/externalModules/typeOnly/importClause_default.ts @@ -0,0 +1,7 @@ +// @Filename: /a.ts +export default class A {} + +// @Filename: /b.ts +import type A from './a'; +new A(); +let a: A; diff --git a/tests/cases/conformance/externalModules/typeOnly/importDefaultNamedType.ts b/tests/cases/conformance/externalModules/typeOnly/importDefaultNamedType.ts new file mode 100644 index 0000000000000..507ad447710d4 --- /dev/null +++ b/tests/cases/conformance/externalModules/typeOnly/importDefaultNamedType.ts @@ -0,0 +1,5 @@ +// @Filename: /a.ts +export default class A {} + +// @Filename: /b.ts +import type from './a'; From 558dd49fda8c145c8a3b3f164e3fc9e02e6d089c Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Mon, 18 Nov 2019 14:26:51 -0800 Subject: [PATCH 09/47] Type-only default import checking --- src/compiler/checker.ts | 20 +++++++++++---- .../reference/importClause_default.errors.txt | 13 ++++++++++ .../reference/importClause_default.js | 25 +++++++++++++++++++ .../reference/importClause_default.symbols | 13 ++++++++++ .../reference/importClause_default.types | 15 +++++++++++ 5 files changed, 81 insertions(+), 5 deletions(-) create mode 100644 tests/baselines/reference/importClause_default.errors.txt create mode 100644 tests/baselines/reference/importClause_default.js create mode 100644 tests/baselines/reference/importClause_default.symbols create mode 100644 tests/baselines/reference/importClause_default.types diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 68fe49f379f5d..138dd2e2904e6 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -2210,9 +2210,18 @@ namespace ts { } else if (hasSyntheticDefault) { // per emit behavior, a synthetic default overrides a "real" .default member if `__esModule` is not present - return resolveExternalModuleSymbol(moduleSymbol, dontResolveAlias) || resolveSymbol(moduleSymbol, dontResolveAlias); + return maybeTypeOnly( + resolveExternalModuleSymbol(moduleSymbol, dontResolveAlias) || + resolveSymbol(moduleSymbol, dontResolveAlias)); } - return exportDefaultSymbol; + return maybeTypeOnly(exportDefaultSymbol); + } + + function maybeTypeOnly(symbol: Symbol | undefined) { + if (symbol && node.isTypeOnly && node.name) { + return createSyntheticTypeAlias(node.name, symbol); + } + return symbol; } } @@ -2345,12 +2354,13 @@ namespace ts { * `TypeFlags.Alias` so that alias resolution works as usual, but once the target `A` * has been resolved, we essentially want to pretend we have a type alias to that target. */ - function createSyntheticTypeAlias(sourceNode: ExportSpecifier | ImportSpecifier, target: Symbol) { + function createSyntheticTypeAlias(sourceNode: ExportSpecifier | Identifier, target: Symbol) { if (!(target.flags & SymbolFlags.Type)) { - const nameText = idText(sourceNode.name); + const identifier = isExportSpecifier(sourceNode) ? sourceNode.name : sourceNode; + const nameText = idText(identifier); addRelatedInfo( error( - sourceNode.name, + identifier, Diagnostics.Type_only_0_must_be_a_type_but_1_is_a_value, isExportSpecifier(sourceNode) ? "export" : "import", nameText), diff --git a/tests/baselines/reference/importClause_default.errors.txt b/tests/baselines/reference/importClause_default.errors.txt new file mode 100644 index 0000000000000..763a33671ac87 --- /dev/null +++ b/tests/baselines/reference/importClause_default.errors.txt @@ -0,0 +1,13 @@ +/b.ts(2,5): error TS2693: 'A' only refers to a type, but is being used as a value here. + + +==== /a.ts (0 errors) ==== + export default class A {} + +==== /b.ts (1 errors) ==== + import type A from './a'; + new A(); + ~ +!!! error TS2693: 'A' only refers to a type, but is being used as a value here. + let a: A; + \ No newline at end of file diff --git a/tests/baselines/reference/importClause_default.js b/tests/baselines/reference/importClause_default.js new file mode 100644 index 0000000000000..d7e3df836cbb4 --- /dev/null +++ b/tests/baselines/reference/importClause_default.js @@ -0,0 +1,25 @@ +//// [tests/cases/conformance/externalModules/typeOnly/importClause_default.ts] //// + +//// [a.ts] +export default class A {} + +//// [b.ts] +import type A from './a'; +new A(); +let a: A; + + +//// [a.js] +"use strict"; +exports.__esModule = true; +var A = /** @class */ (function () { + function A() { + } + return A; +}()); +exports["default"] = A; +//// [b.js] +"use strict"; +exports.__esModule = true; +new A(); +var a; diff --git a/tests/baselines/reference/importClause_default.symbols b/tests/baselines/reference/importClause_default.symbols new file mode 100644 index 0000000000000..f461aff631c1e --- /dev/null +++ b/tests/baselines/reference/importClause_default.symbols @@ -0,0 +1,13 @@ +=== /a.ts === +export default class A {} +>A : Symbol(A, Decl(a.ts, 0, 0)) + +=== /b.ts === +import type A from './a'; +>A : Symbol(A, Decl(b.ts, 0, 6)) + +new A(); +let a: A; +>a : Symbol(a, Decl(b.ts, 2, 3)) +>A : Symbol(A, Decl(b.ts, 0, 6)) + diff --git a/tests/baselines/reference/importClause_default.types b/tests/baselines/reference/importClause_default.types new file mode 100644 index 0000000000000..b794c65ac41f7 --- /dev/null +++ b/tests/baselines/reference/importClause_default.types @@ -0,0 +1,15 @@ +=== /a.ts === +export default class A {} +>A : A + +=== /b.ts === +import type A from './a'; +>A : any + +new A(); +>new A() : any +>A : any + +let a: A; +>a : typeof import("/a").default + From 151a397f769a4a4e3edc38893157ae9ff012d7ab Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Mon, 18 Nov 2019 14:50:48 -0800 Subject: [PATCH 10/47] Type-only named imports --- src/compiler/checker.ts | 8 +++-- src/compiler/diagnosticMessages.json | 2 +- .../exportDeclaration_value.errors.txt | 8 ++--- .../importClause_namedImports.errors.txt | 21 ++++++++++++ .../reference/importClause_namedImports.js | 30 +++++++++++++++++ .../importClause_namedImports.symbols | 29 ++++++++++++++++ .../reference/importClause_namedImports.types | 33 +++++++++++++++++++ .../typeOnly/importClause_namedImports.ts | 11 +++++++ 8 files changed, 135 insertions(+), 7 deletions(-) create mode 100644 tests/baselines/reference/importClause_namedImports.errors.txt create mode 100644 tests/baselines/reference/importClause_namedImports.js create mode 100644 tests/baselines/reference/importClause_namedImports.symbols create mode 100644 tests/baselines/reference/importClause_namedImports.types create mode 100644 tests/cases/conformance/externalModules/typeOnly/importClause_namedImports.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 138dd2e2904e6..816384a06d2c0 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -2341,7 +2341,11 @@ namespace ts { } function getTargetOfImportSpecifier(node: ImportSpecifier, dontResolveAlias: boolean): Symbol | undefined { - return getExternalModuleMember(node.parent.parent.parent, node, dontResolveAlias); + const resolved = getExternalModuleMember(node.parent.parent.parent, node, dontResolveAlias); + if (resolved && node.parent.parent.isTypeOnly) { + return createSyntheticTypeAlias(node.name, resolved); + } + return resolved; } function getTargetOfNamespaceExportDeclaration(node: NamespaceExportDeclaration, dontResolveAlias: boolean): Symbol { @@ -2361,7 +2365,7 @@ namespace ts { addRelatedInfo( error( identifier, - Diagnostics.Type_only_0_must_be_a_type_but_1_is_a_value, + Diagnostics.Type_only_0_must_reference_a_type_but_1_is_a_value, isExportSpecifier(sourceNode) ? "export" : "import", nameText), createDiagnosticForNode( diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index 99f575c92f14c..3eea16051f73f 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -1051,7 +1051,7 @@ "category": "Error", "code": 1360 }, - "Type-only {0} must be a type, but '{1}' is a value.": { + "Type-only {0} must reference a type, but '{1}' is a value.": { "category": "Error", "code": 1361 }, diff --git a/tests/baselines/reference/exportDeclaration_value.errors.txt b/tests/baselines/reference/exportDeclaration_value.errors.txt index 0f4409e794ff6..d759ad8c7c57b 100644 --- a/tests/baselines/reference/exportDeclaration_value.errors.txt +++ b/tests/baselines/reference/exportDeclaration_value.errors.txt @@ -1,18 +1,18 @@ -/a.ts(2,15): error TS1361: Type-only export must be a type, but 'A' is a value. -/b.ts(1,15): error TS1361: Type-only export must be a type, but 'AA' is a value. +/a.ts(2,15): error TS1361: Type-only export must reference a type, but 'A' is a value. +/b.ts(1,15): error TS1361: Type-only export must reference a type, but 'AA' is a value. ==== /a.ts (1 errors) ==== const A = {}; export type { A }; ~ -!!! error TS1361: Type-only export must be a type, but 'A' is a value. +!!! error TS1361: Type-only export must reference a type, but 'A' is a value. !!! related TS2728 /a.ts:1:7: 'A' is declared here. export const AA = {}; ==== /b.ts (1 errors) ==== export type { AA } from './a'; ~~ -!!! error TS1361: Type-only export must be a type, but 'AA' is a value. +!!! error TS1361: Type-only export must reference a type, but 'AA' is a value. !!! related TS2728 /a.ts:3:14: 'AA' is declared here. \ No newline at end of file diff --git a/tests/baselines/reference/importClause_namedImports.errors.txt b/tests/baselines/reference/importClause_namedImports.errors.txt new file mode 100644 index 0000000000000..c5cc2bb326006 --- /dev/null +++ b/tests/baselines/reference/importClause_namedImports.errors.txt @@ -0,0 +1,21 @@ +/d.ts(1,21): error TS1361: Type-only import must reference a type, but 'C' is a value. +/d.ts(2,5): error TS2693: 'A' only refers to a type, but is being used as a value here. + + +==== /abc.ts (0 errors) ==== + export class A {} + export type B = { b: string }; + export const C = ""; + +==== /d.ts (2 errors) ==== + import type { A, B, C } from './abc'; + ~ +!!! error TS1361: Type-only import must reference a type, but 'C' is a value. +!!! related TS2728 /abc.ts:3:14: 'C' is declared here. + new A(); + ~ +!!! error TS2693: 'A' only refers to a type, but is being used as a value here. + declare let a: A; + declare let b: B; + b.b; + \ No newline at end of file diff --git a/tests/baselines/reference/importClause_namedImports.js b/tests/baselines/reference/importClause_namedImports.js new file mode 100644 index 0000000000000..af9017f73130d --- /dev/null +++ b/tests/baselines/reference/importClause_namedImports.js @@ -0,0 +1,30 @@ +//// [tests/cases/conformance/externalModules/typeOnly/importClause_namedImports.ts] //// + +//// [abc.ts] +export class A {} +export type B = { b: string }; +export const C = ""; + +//// [d.ts] +import type { A, B, C } from './abc'; +new A(); +declare let a: A; +declare let b: B; +b.b; + + +//// [abc.js] +"use strict"; +exports.__esModule = true; +var A = /** @class */ (function () { + function A() { + } + return A; +}()); +exports.A = A; +exports.C = ""; +//// [d.js] +"use strict"; +exports.__esModule = true; +new A(); +b.b; diff --git a/tests/baselines/reference/importClause_namedImports.symbols b/tests/baselines/reference/importClause_namedImports.symbols new file mode 100644 index 0000000000000..6abb3cec6cac4 --- /dev/null +++ b/tests/baselines/reference/importClause_namedImports.symbols @@ -0,0 +1,29 @@ +=== /abc.ts === +export class A {} +>A : Symbol(A, Decl(abc.ts, 0, 0)) + +export type B = { b: string }; +>B : Symbol(B, Decl(abc.ts, 0, 17)) +>b : Symbol(b, Decl(abc.ts, 1, 18)) + +export const C = ""; +>C : Symbol(C, Decl(abc.ts, 2, 12)) + +=== /d.ts === +import type { A, B, C } from './abc'; +>A : Symbol(A, Decl(d.ts, 0, 13)) +>B : Symbol(B, Decl(d.ts, 0, 16)) +>C : Symbol(C, Decl(d.ts, 0, 19)) + +new A(); +declare let a: A; +>a : Symbol(a, Decl(d.ts, 2, 11)) +>A : Symbol(A, Decl(d.ts, 0, 13)) + +declare let b: B; +>b : Symbol(b, Decl(d.ts, 3, 11)) +>B : Symbol(B, Decl(d.ts, 0, 16)) + +b.b; +>b : Symbol(b, Decl(d.ts, 3, 11)) + diff --git a/tests/baselines/reference/importClause_namedImports.types b/tests/baselines/reference/importClause_namedImports.types new file mode 100644 index 0000000000000..9a8e415065d62 --- /dev/null +++ b/tests/baselines/reference/importClause_namedImports.types @@ -0,0 +1,33 @@ +=== /abc.ts === +export class A {} +>A : A + +export type B = { b: string }; +>B : B +>b : string + +export const C = ""; +>C : "" +>"" : "" + +=== /d.ts === +import type { A, B, C } from './abc'; +>A : any +>B : any +>C : any + +new A(); +>new A() : any +>A : any + +declare let a: A; +>a : typeof import("/abc").A + +declare let b: B; +>b : any + +b.b; +>b.b : any +>b : any +>b : any + diff --git a/tests/cases/conformance/externalModules/typeOnly/importClause_namedImports.ts b/tests/cases/conformance/externalModules/typeOnly/importClause_namedImports.ts new file mode 100644 index 0000000000000..c2642701a35ec --- /dev/null +++ b/tests/cases/conformance/externalModules/typeOnly/importClause_namedImports.ts @@ -0,0 +1,11 @@ +// @Filename: /abc.ts +export class A {} +export type B = { b: string }; +export const C = ""; + +// @Filename: /d.ts +import type { A, B, C } from './abc'; +new A(); +declare let a: A; +declare let b: B; +b.b; From 85390d7dcd8a41a682721a9f9eb6dda514735867 Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Mon, 18 Nov 2019 14:57:36 -0800 Subject: [PATCH 11/47] Fix isolated modules error --- src/compiler/checker.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 816384a06d2c0..5e0afd2670a88 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -32616,6 +32616,7 @@ namespace ts { // Don't allow to re-export something with no value side when `--isolatedModules` is set. if (compilerOptions.isolatedModules && node.kind === SyntaxKind.ExportSpecifier + && !node.parent.parent.isTypeOnly && !(target.flags & SymbolFlags.Value) && !(node.flags & NodeFlags.Ambient)) { error(node, Diagnostics.Re_exporting_a_type_when_the_isolatedModules_flag_is_provided_requires_using_an_explicit_type_only_export); From e1304537c59c238dfdf09fcff449c84e0698aacc Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Mon, 18 Nov 2019 15:55:15 -0800 Subject: [PATCH 12/47] Filter namespaces down to type-only --- src/compiler/checker.ts | 47 +++++++++++++++---- .../filterNamespace_import.errors.txt | 24 ++++++++++ .../reference/filterNamespace_import.js | 40 ++++++++++++++++ .../reference/filterNamespace_import.symbols | 33 +++++++++++++ .../reference/filterNamespace_import.types | 41 ++++++++++++++++ .../importClause_namedImports.symbols | 2 + .../reference/importClause_namedImports.types | 8 ++-- .../typeOnly/filterNamespace_import.ts | 15 ++++++ 8 files changed, 197 insertions(+), 13 deletions(-) create mode 100644 tests/baselines/reference/filterNamespace_import.errors.txt create mode 100644 tests/baselines/reference/filterNamespace_import.js create mode 100644 tests/baselines/reference/filterNamespace_import.symbols create mode 100644 tests/baselines/reference/filterNamespace_import.types create mode 100644 tests/cases/conformance/externalModules/typeOnly/filterNamespace_import.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 5e0afd2670a88..2c071f061397a 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -2219,7 +2219,7 @@ namespace ts { function maybeTypeOnly(symbol: Symbol | undefined) { if (symbol && node.isTypeOnly && node.name) { - return createSyntheticTypeAlias(node.name, symbol); + return createTypeOnlyImportOrExport(node.name, symbol); } return symbol; } @@ -2343,7 +2343,7 @@ namespace ts { function getTargetOfImportSpecifier(node: ImportSpecifier, dontResolveAlias: boolean): Symbol | undefined { const resolved = getExternalModuleMember(node.parent.parent.parent, node, dontResolveAlias); if (resolved && node.parent.parent.isTypeOnly) { - return createSyntheticTypeAlias(node.name, resolved); + return createTypeOnlyImportOrExport(node.name, resolved); } return resolved; } @@ -2358,8 +2358,9 @@ namespace ts { * `TypeFlags.Alias` so that alias resolution works as usual, but once the target `A` * has been resolved, we essentially want to pretend we have a type alias to that target. */ - function createSyntheticTypeAlias(sourceNode: ExportSpecifier | Identifier, target: Symbol) { - if (!(target.flags & SymbolFlags.Type)) { + function createTypeOnlyImportOrExport(sourceNode: ExportSpecifier | Identifier, target: Symbol) { + const symbol = createTypeOnlySymbol(target); + if (!symbol) { const identifier = isExportSpecifier(sourceNode) ? sourceNode.name : sourceNode; const nameText = idText(identifier); addRelatedInfo( @@ -2373,18 +2374,46 @@ namespace ts { Diagnostics._0_is_declared_here, nameText)); } - const symbol = createSymbol(SymbolFlags.TypeAlias, target.escapedName); - symbol.declarations = [sourceNode]; - symbol.valueDeclaration = sourceNode; - symbol.immediateTarget = target; + return symbol; } + function createTypeOnlySymbol(target: Symbol): Symbol | undefined { + if (target.flags & SymbolFlags.ValueModule) { + return createNamespaceModuleForModule(target); + } + if (target.flags & SymbolFlags.NamespaceModule || !(target.flags & SymbolFlags.Value)) { + return target; + } + if (target.flags & SymbolFlags.Type) { + const alias = createSymbol(SymbolFlags.TypeAlias, target.escapedName); + alias.declarations = emptyArray; + alias.immediateTarget = target; + return alias; + } + } + + function createNamespaceModuleForModule(moduleSymbol: Symbol) { + Debug.assert(!!(moduleSymbol.flags & SymbolFlags.ValueModule)); + const filtered = createSymbol(SymbolFlags.NamespaceModule, moduleSymbol.escapedName); + filtered.declarations = moduleSymbol.declarations; + if (moduleSymbol.exports) { + filtered.exports = createSymbolTable(); + moduleSymbol.exports.forEach((exportSymbol, key) => { + const typeOnlyExport = createTypeOnlySymbol(exportSymbol); + if (typeOnlyExport) { + filtered.exports!.set(key, typeOnlyExport); + } + }); + } + return filtered; + } + function getTargetOfExportSpecifier(node: ExportSpecifier, meaning: SymbolFlags, dontResolveAlias?: boolean) { const target = node.parent.parent.moduleSpecifier ? getExternalModuleMember(node.parent.parent, node, dontResolveAlias) : resolveEntityName(node.propertyName || node.name, meaning, /*ignoreErrors*/ false, dontResolveAlias); - return target && isTypeOnlyExportSpecifier(node) ? createSyntheticTypeAlias(node, target) : target; + return target && isTypeOnlyExportSpecifier(node) ? createTypeOnlyImportOrExport(node, target) : target; } function getTargetOfExportAssignment(node: ExportAssignment | BinaryExpression, dontResolveAlias: boolean): Symbol | undefined { diff --git a/tests/baselines/reference/filterNamespace_import.errors.txt b/tests/baselines/reference/filterNamespace_import.errors.txt new file mode 100644 index 0000000000000..7f2f458491a00 --- /dev/null +++ b/tests/baselines/reference/filterNamespace_import.errors.txt @@ -0,0 +1,24 @@ +/a.ts(2,1): error TS2708: Cannot use namespace 'ns' as a value. +/a.ts(3,1): error TS2708: Cannot use namespace 'ns' as a value. + + +==== /ns.ts (0 errors) ==== + namespace ns { + export type Type = string; + export class Class {} + export const Value = ""; + } + + export default ns; + +==== /a.ts (2 errors) ==== + import type ns from './ns'; + ns.Class; // Error + ~~ +!!! error TS2708: Cannot use namespace 'ns' as a value. + ns.Value; // Error + ~~ +!!! error TS2708: Cannot use namespace 'ns' as a value. + let c: ns.Class; + let t: ns.Type = ""; + \ No newline at end of file diff --git a/tests/baselines/reference/filterNamespace_import.js b/tests/baselines/reference/filterNamespace_import.js new file mode 100644 index 0000000000000..397959cdb640c --- /dev/null +++ b/tests/baselines/reference/filterNamespace_import.js @@ -0,0 +1,40 @@ +//// [tests/cases/conformance/externalModules/typeOnly/filterNamespace_import.ts] //// + +//// [ns.ts] +namespace ns { + export type Type = string; + export class Class {} + export const Value = ""; +} + +export default ns; + +//// [a.ts] +import type ns from './ns'; +ns.Class; // Error +ns.Value; // Error +let c: ns.Class; +let t: ns.Type = ""; + + +//// [ns.js] +"use strict"; +exports.__esModule = true; +var ns; +(function (ns) { + var Class = /** @class */ (function () { + function Class() { + } + return Class; + }()); + ns.Class = Class; + ns.Value = ""; +})(ns || (ns = {})); +exports["default"] = ns; +//// [a.js] +"use strict"; +exports.__esModule = true; +ns.Class; // Error +ns.Value; // Error +var c; +var t = ""; diff --git a/tests/baselines/reference/filterNamespace_import.symbols b/tests/baselines/reference/filterNamespace_import.symbols new file mode 100644 index 0000000000000..466b3302218be --- /dev/null +++ b/tests/baselines/reference/filterNamespace_import.symbols @@ -0,0 +1,33 @@ +=== /ns.ts === +namespace ns { +>ns : Symbol(ns, Decl(ns.ts, 0, 0)) + + export type Type = string; +>Type : Symbol(Type, Decl(ns.ts, 0, 14)) + + export class Class {} +>Class : Symbol(Class, Decl(ns.ts, 1, 28)) + + export const Value = ""; +>Value : Symbol(Value, Decl(ns.ts, 3, 14)) +} + +export default ns; +>ns : Symbol(ns, Decl(ns.ts, 0, 0)) + +=== /a.ts === +import type ns from './ns'; +>ns : Symbol(ns, Decl(a.ts, 0, 6)) + +ns.Class; // Error +ns.Value; // Error +let c: ns.Class; +>c : Symbol(c, Decl(a.ts, 3, 3)) +>ns : Symbol(ns, Decl(a.ts, 0, 6)) +>Class : Symbol(ns.Class) + +let t: ns.Type = ""; +>t : Symbol(t, Decl(a.ts, 4, 3)) +>ns : Symbol(ns, Decl(a.ts, 0, 6)) +>Type : Symbol(ns.Type, Decl(ns.ts, 0, 14)) + diff --git a/tests/baselines/reference/filterNamespace_import.types b/tests/baselines/reference/filterNamespace_import.types new file mode 100644 index 0000000000000..13b92019aae6a --- /dev/null +++ b/tests/baselines/reference/filterNamespace_import.types @@ -0,0 +1,41 @@ +=== /ns.ts === +namespace ns { +>ns : typeof ns + + export type Type = string; +>Type : string + + export class Class {} +>Class : Class + + export const Value = ""; +>Value : "" +>"" : "" +} + +export default ns; +>ns : typeof ns + +=== /a.ts === +import type ns from './ns'; +>ns : any + +ns.Class; // Error +>ns.Class : any +>ns : any +>Class : any + +ns.Value; // Error +>ns.Value : any +>ns : any +>Value : any + +let c: ns.Class; +>c : typeof import("/ns").default.Class +>ns : any + +let t: ns.Type = ""; +>t : string +>ns : any +>"" : "" + diff --git a/tests/baselines/reference/importClause_namedImports.symbols b/tests/baselines/reference/importClause_namedImports.symbols index 6abb3cec6cac4..a21e8d8cba2bb 100644 --- a/tests/baselines/reference/importClause_namedImports.symbols +++ b/tests/baselines/reference/importClause_namedImports.symbols @@ -25,5 +25,7 @@ declare let b: B; >B : Symbol(B, Decl(d.ts, 0, 16)) b.b; +>b.b : Symbol(b, Decl(abc.ts, 1, 18)) >b : Symbol(b, Decl(d.ts, 3, 11)) +>b : Symbol(b, Decl(abc.ts, 1, 18)) diff --git a/tests/baselines/reference/importClause_namedImports.types b/tests/baselines/reference/importClause_namedImports.types index 9a8e415065d62..df1caead1fffb 100644 --- a/tests/baselines/reference/importClause_namedImports.types +++ b/tests/baselines/reference/importClause_namedImports.types @@ -24,10 +24,10 @@ declare let a: A; >a : typeof import("/abc").A declare let b: B; ->b : any +>b : B b.b; ->b.b : any ->b : any ->b : any +>b.b : string +>b : B +>b : string diff --git a/tests/cases/conformance/externalModules/typeOnly/filterNamespace_import.ts b/tests/cases/conformance/externalModules/typeOnly/filterNamespace_import.ts new file mode 100644 index 0000000000000..8cb117aa34035 --- /dev/null +++ b/tests/cases/conformance/externalModules/typeOnly/filterNamespace_import.ts @@ -0,0 +1,15 @@ +// @Filename: /ns.ts +namespace ns { + export type Type = string; + export class Class {} + export const Value = ""; +} + +export default ns; + +// @Filename: /a.ts +import type ns from './ns'; +ns.Class; // Error +ns.Value; // Error +let c: ns.Class; +let t: ns.Type = ""; From 1db2773c296a910e3088567a0c80e85ef294788d Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Tue, 19 Nov 2019 12:11:32 -0800 Subject: [PATCH 13/47] Fix class references --- src/compiler/checker.ts | 4 ++-- tests/baselines/reference/exportDeclaration.types | 2 +- .../reference/exportDeclaration_moduleSpecifier.types | 2 +- tests/baselines/reference/filterNamespace_import.types | 2 +- .../reference/importClause_default.errors.txt | 4 ++-- tests/baselines/reference/importClause_default.js | 6 +++--- tests/baselines/reference/importClause_default.symbols | 6 ++++-- tests/baselines/reference/importClause_default.types | 10 +++++++--- .../reference/importClause_namedImports.types | 2 +- .../externalModules/typeOnly/importClause_default.ts | 4 ++-- 10 files changed, 24 insertions(+), 18 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 2c071f061397a..a7ad61c65561f 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -2382,7 +2382,7 @@ namespace ts { if (target.flags & SymbolFlags.ValueModule) { return createNamespaceModuleForModule(target); } - if (target.flags & SymbolFlags.NamespaceModule || !(target.flags & SymbolFlags.Value)) { + if (!(target.flags & SymbolFlags.Value)) { return target; } if (target.flags & SymbolFlags.Type) { @@ -8141,7 +8141,7 @@ namespace ts { if (isTransientSymbol(symbol) && symbol.immediateTarget) { // Symbol is synthetic type alias for type-only import or export. // See `createSyntheticTypeAlias`. - type = getTypeOfSymbol(symbol.immediateTarget); + type = getDeclaredTypeOfSymbol(symbol.immediateTarget); declaration = symbol.valueDeclaration; } else { diff --git a/tests/baselines/reference/exportDeclaration.types b/tests/baselines/reference/exportDeclaration.types index 00275af46b1ca..bd576425ae596 100644 --- a/tests/baselines/reference/exportDeclaration.types +++ b/tests/baselines/reference/exportDeclaration.types @@ -10,7 +10,7 @@ import { A } from './a'; >A : any declare const a: A; ->a : typeof A +>a : A new A(); >new A() : any diff --git a/tests/baselines/reference/exportDeclaration_moduleSpecifier.types b/tests/baselines/reference/exportDeclaration_moduleSpecifier.types index 7b179e38a6e95..74876d3a10cae 100644 --- a/tests/baselines/reference/exportDeclaration_moduleSpecifier.types +++ b/tests/baselines/reference/exportDeclaration_moduleSpecifier.types @@ -11,7 +11,7 @@ import { A } from './b'; >A : any declare const a: A; ->a : typeof import("/a").A +>a : import("/a").A new A(); >new A() : any diff --git a/tests/baselines/reference/filterNamespace_import.types b/tests/baselines/reference/filterNamespace_import.types index 13b92019aae6a..61934924b8e78 100644 --- a/tests/baselines/reference/filterNamespace_import.types +++ b/tests/baselines/reference/filterNamespace_import.types @@ -31,7 +31,7 @@ ns.Value; // Error >Value : any let c: ns.Class; ->c : typeof import("/ns").default.Class +>c : import("/ns").default.Class >ns : any let t: ns.Type = ""; diff --git a/tests/baselines/reference/importClause_default.errors.txt b/tests/baselines/reference/importClause_default.errors.txt index 763a33671ac87..99345c4102f4c 100644 --- a/tests/baselines/reference/importClause_default.errors.txt +++ b/tests/baselines/reference/importClause_default.errors.txt @@ -2,12 +2,12 @@ ==== /a.ts (0 errors) ==== - export default class A {} + export default class A { a!: string } ==== /b.ts (1 errors) ==== import type A from './a'; new A(); ~ !!! error TS2693: 'A' only refers to a type, but is being used as a value here. - let a: A; + let a: A = { a: '' }; \ No newline at end of file diff --git a/tests/baselines/reference/importClause_default.js b/tests/baselines/reference/importClause_default.js index d7e3df836cbb4..d9e7c54331d4f 100644 --- a/tests/baselines/reference/importClause_default.js +++ b/tests/baselines/reference/importClause_default.js @@ -1,12 +1,12 @@ //// [tests/cases/conformance/externalModules/typeOnly/importClause_default.ts] //// //// [a.ts] -export default class A {} +export default class A { a!: string } //// [b.ts] import type A from './a'; new A(); -let a: A; +let a: A = { a: '' }; //// [a.js] @@ -22,4 +22,4 @@ exports["default"] = A; "use strict"; exports.__esModule = true; new A(); -var a; +var a = { a: '' }; diff --git a/tests/baselines/reference/importClause_default.symbols b/tests/baselines/reference/importClause_default.symbols index f461aff631c1e..3c13a061eaa23 100644 --- a/tests/baselines/reference/importClause_default.symbols +++ b/tests/baselines/reference/importClause_default.symbols @@ -1,13 +1,15 @@ === /a.ts === -export default class A {} +export default class A { a!: string } >A : Symbol(A, Decl(a.ts, 0, 0)) +>a : Symbol(A.a, Decl(a.ts, 0, 24)) === /b.ts === import type A from './a'; >A : Symbol(A, Decl(b.ts, 0, 6)) new A(); -let a: A; +let a: A = { a: '' }; >a : Symbol(a, Decl(b.ts, 2, 3)) >A : Symbol(A, Decl(b.ts, 0, 6)) +>a : Symbol(a, Decl(b.ts, 2, 12)) diff --git a/tests/baselines/reference/importClause_default.types b/tests/baselines/reference/importClause_default.types index b794c65ac41f7..c5a31df512e6d 100644 --- a/tests/baselines/reference/importClause_default.types +++ b/tests/baselines/reference/importClause_default.types @@ -1,6 +1,7 @@ === /a.ts === -export default class A {} +export default class A { a!: string } >A : A +>a : string === /b.ts === import type A from './a'; @@ -10,6 +11,9 @@ new A(); >new A() : any >A : any -let a: A; ->a : typeof import("/a").default +let a: A = { a: '' }; +>a : import("/a").default +>{ a: '' } : { a: string; } +>a : string +>'' : "" diff --git a/tests/baselines/reference/importClause_namedImports.types b/tests/baselines/reference/importClause_namedImports.types index df1caead1fffb..d67d77c8955b7 100644 --- a/tests/baselines/reference/importClause_namedImports.types +++ b/tests/baselines/reference/importClause_namedImports.types @@ -21,7 +21,7 @@ new A(); >A : any declare let a: A; ->a : typeof import("/abc").A +>a : import("/abc").A declare let b: B; >b : B diff --git a/tests/cases/conformance/externalModules/typeOnly/importClause_default.ts b/tests/cases/conformance/externalModules/typeOnly/importClause_default.ts index 6606125cd5b97..b3f5a5259e4cf 100644 --- a/tests/cases/conformance/externalModules/typeOnly/importClause_default.ts +++ b/tests/cases/conformance/externalModules/typeOnly/importClause_default.ts @@ -1,7 +1,7 @@ // @Filename: /a.ts -export default class A {} +export default class A { a!: string } // @Filename: /b.ts import type A from './a'; new A(); -let a: A; +let a: A = { a: '' }; From bd73f2702de6cd85c78b78ba049707c92a488c4c Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Tue, 19 Nov 2019 12:27:19 -0800 Subject: [PATCH 14/47] Test nested namespaces --- .../filterNamespace_import.errors.txt | 6 ++++++ .../reference/filterNamespace_import.js | 16 ++++++++++++++++ .../reference/filterNamespace_import.symbols | 18 ++++++++++++++++++ .../reference/filterNamespace_import.types | 19 +++++++++++++++++++ .../typeOnly/filterNamespace_import.ts | 6 ++++++ 5 files changed, 65 insertions(+) diff --git a/tests/baselines/reference/filterNamespace_import.errors.txt b/tests/baselines/reference/filterNamespace_import.errors.txt index 7f2f458491a00..b9e9a09f8c790 100644 --- a/tests/baselines/reference/filterNamespace_import.errors.txt +++ b/tests/baselines/reference/filterNamespace_import.errors.txt @@ -7,6 +7,11 @@ export type Type = string; export class Class {} export const Value = ""; + export namespace nested { + export class NestedClass { + a!: string; + } + } } export default ns; @@ -21,4 +26,5 @@ !!! error TS2708: Cannot use namespace 'ns' as a value. let c: ns.Class; let t: ns.Type = ""; + let n: ns.nested.NestedClass = { a: '' }; \ No newline at end of file diff --git a/tests/baselines/reference/filterNamespace_import.js b/tests/baselines/reference/filterNamespace_import.js index 397959cdb640c..094cabd326760 100644 --- a/tests/baselines/reference/filterNamespace_import.js +++ b/tests/baselines/reference/filterNamespace_import.js @@ -5,6 +5,11 @@ namespace ns { export type Type = string; export class Class {} export const Value = ""; + export namespace nested { + export class NestedClass { + a!: string; + } + } } export default ns; @@ -15,6 +20,7 @@ ns.Class; // Error ns.Value; // Error let c: ns.Class; let t: ns.Type = ""; +let n: ns.nested.NestedClass = { a: '' }; //// [ns.js] @@ -29,6 +35,15 @@ var ns; }()); ns.Class = Class; ns.Value = ""; + var nested; + (function (nested) { + var NestedClass = /** @class */ (function () { + function NestedClass() { + } + return NestedClass; + }()); + nested.NestedClass = NestedClass; + })(nested = ns.nested || (ns.nested = {})); })(ns || (ns = {})); exports["default"] = ns; //// [a.js] @@ -38,3 +53,4 @@ ns.Class; // Error ns.Value; // Error var c; var t = ""; +var n = { a: '' }; diff --git a/tests/baselines/reference/filterNamespace_import.symbols b/tests/baselines/reference/filterNamespace_import.symbols index 466b3302218be..f38ea7cc983c9 100644 --- a/tests/baselines/reference/filterNamespace_import.symbols +++ b/tests/baselines/reference/filterNamespace_import.symbols @@ -10,6 +10,17 @@ namespace ns { export const Value = ""; >Value : Symbol(Value, Decl(ns.ts, 3, 14)) + + export namespace nested { +>nested : Symbol(nested, Decl(ns.ts, 3, 26)) + + export class NestedClass { +>NestedClass : Symbol(NestedClass, Decl(ns.ts, 4, 27)) + + a!: string; +>a : Symbol(NestedClass.a, Decl(ns.ts, 5, 30)) + } + } } export default ns; @@ -31,3 +42,10 @@ let t: ns.Type = ""; >ns : Symbol(ns, Decl(a.ts, 0, 6)) >Type : Symbol(ns.Type, Decl(ns.ts, 0, 14)) +let n: ns.nested.NestedClass = { a: '' }; +>n : Symbol(n, Decl(a.ts, 5, 3)) +>ns : Symbol(ns, Decl(a.ts, 0, 6)) +>nested : Symbol(ns.nested, Decl(ns.ts, 3, 26)) +>NestedClass : Symbol(NestedClass) +>a : Symbol(a, Decl(a.ts, 5, 32)) + diff --git a/tests/baselines/reference/filterNamespace_import.types b/tests/baselines/reference/filterNamespace_import.types index 61934924b8e78..ef9ad8a6e269b 100644 --- a/tests/baselines/reference/filterNamespace_import.types +++ b/tests/baselines/reference/filterNamespace_import.types @@ -11,6 +11,17 @@ namespace ns { export const Value = ""; >Value : "" >"" : "" + + export namespace nested { +>nested : typeof nested + + export class NestedClass { +>NestedClass : NestedClass + + a!: string; +>a : string + } + } } export default ns; @@ -39,3 +50,11 @@ let t: ns.Type = ""; >ns : any >"" : "" +let n: ns.nested.NestedClass = { a: '' }; +>n : import("/ns").default.nested.NestedClass +>ns : any +>nested : any +>{ a: '' } : { a: string; } +>a : string +>'' : "" + diff --git a/tests/cases/conformance/externalModules/typeOnly/filterNamespace_import.ts b/tests/cases/conformance/externalModules/typeOnly/filterNamespace_import.ts index 8cb117aa34035..b0cd26e0a8a6c 100644 --- a/tests/cases/conformance/externalModules/typeOnly/filterNamespace_import.ts +++ b/tests/cases/conformance/externalModules/typeOnly/filterNamespace_import.ts @@ -3,6 +3,11 @@ namespace ns { export type Type = string; export class Class {} export const Value = ""; + export namespace nested { + export class NestedClass { + a!: string; + } + } } export default ns; @@ -13,3 +18,4 @@ ns.Class; // Error ns.Value; // Error let c: ns.Class; let t: ns.Type = ""; +let n: ns.nested.NestedClass = { a: '' }; From fa72cf5659000ca8b84e3a99cb0054af9a129e3b Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Tue, 19 Nov 2019 14:41:28 -0800 Subject: [PATCH 15/47] Test circular type-only imports/exports --- src/compiler/checker.ts | 22 ++++++------ src/compiler/utilities.ts | 5 --- .../baselines/reference/circular1.errors.txt | 11 ++++++ tests/baselines/reference/circular1.symbols | 8 +++++ tests/baselines/reference/circular1.types | 8 +++++ .../baselines/reference/circular2.errors.txt | 16 +++++++++ tests/baselines/reference/circular2.symbols | 16 +++++++++ tests/baselines/reference/circular2.types | 14 ++++++++ .../baselines/reference/circular3.errors.txt | 13 +++++++ tests/baselines/reference/circular3.symbols | 16 +++++++++ tests/baselines/reference/circular3.types | 16 +++++++++ .../baselines/reference/circular4.errors.txt | 24 +++++++++++++ tests/baselines/reference/circular4.symbols | 36 +++++++++++++++++++ tests/baselines/reference/circular4.types | 26 ++++++++++++++ .../externalModules/typeOnly/circular1.ts | 7 ++++ .../externalModules/typeOnly/circular2.ts | 9 +++++ .../externalModules/typeOnly/circular3.ts | 9 +++++ .../externalModules/typeOnly/circular4.ts | 17 +++++++++ 18 files changed, 258 insertions(+), 15 deletions(-) create mode 100644 tests/baselines/reference/circular1.errors.txt create mode 100644 tests/baselines/reference/circular1.symbols create mode 100644 tests/baselines/reference/circular1.types create mode 100644 tests/baselines/reference/circular2.errors.txt create mode 100644 tests/baselines/reference/circular2.symbols create mode 100644 tests/baselines/reference/circular2.types create mode 100644 tests/baselines/reference/circular3.errors.txt create mode 100644 tests/baselines/reference/circular3.symbols create mode 100644 tests/baselines/reference/circular3.types create mode 100644 tests/baselines/reference/circular4.errors.txt create mode 100644 tests/baselines/reference/circular4.symbols create mode 100644 tests/baselines/reference/circular4.types create mode 100644 tests/cases/conformance/externalModules/typeOnly/circular1.ts create mode 100644 tests/cases/conformance/externalModules/typeOnly/circular2.ts create mode 100644 tests/cases/conformance/externalModules/typeOnly/circular3.ts create mode 100644 tests/cases/conformance/externalModules/typeOnly/circular4.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index a7ad61c65561f..44d45540c1991 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -2360,19 +2360,21 @@ namespace ts { */ function createTypeOnlyImportOrExport(sourceNode: ExportSpecifier | Identifier, target: Symbol) { const symbol = createTypeOnlySymbol(target); - if (!symbol) { + if (!symbol && target !== unknownSymbol) { const identifier = isExportSpecifier(sourceNode) ? sourceNode.name : sourceNode; const nameText = idText(identifier); - addRelatedInfo( - error( - identifier, - Diagnostics.Type_only_0_must_reference_a_type_but_1_is_a_value, - isExportSpecifier(sourceNode) ? "export" : "import", - nameText), - createDiagnosticForNode( - target.valueDeclaration ?? target.declarations[0], + const diagnostic = error( + identifier, + Diagnostics.Type_only_0_must_reference_a_type_but_1_is_a_value, + isExportSpecifier(sourceNode) ? "export" : "import", + nameText); + const targetDeclaration = target.valueDeclaration ?? target.declarations?.[0]; + if (targetDeclaration) { + addRelatedInfo(diagnostic, createDiagnosticForNode( + targetDeclaration, Diagnostics._0_is_declared_here, nameText)); + } } return symbol; @@ -2413,7 +2415,7 @@ namespace ts { const target = node.parent.parent.moduleSpecifier ? getExternalModuleMember(node.parent.parent, node, dontResolveAlias) : resolveEntityName(node.propertyName || node.name, meaning, /*ignoreErrors*/ false, dontResolveAlias); - return target && isTypeOnlyExportSpecifier(node) ? createTypeOnlyImportOrExport(node, target) : target; + return target && node.parent.parent.isTypeOnly ? createTypeOnlyImportOrExport(node, target) : target; } function getTargetOfExportAssignment(node: ExportAssignment | BinaryExpression, dontResolveAlias: boolean): Symbol | undefined { diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index 5869bb850341a..a7e3c8c34a078 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -2298,11 +2298,6 @@ namespace ts { return isJSDocTypeAlias(node) || isTypeAliasDeclaration(node); } - export function isTypeOnlyExportSpecifier(node: Node): node is ExportSpecifier { - // TODO: check specifier itself - return isExportSpecifier(node) && node.parent.parent.isTypeOnly; - } - function getSourceOfAssignment(node: Node): Node | undefined { return isExpressionStatement(node) && node.expression && isBinaryExpression(node.expression) && diff --git a/tests/baselines/reference/circular1.errors.txt b/tests/baselines/reference/circular1.errors.txt new file mode 100644 index 0000000000000..eb583371b3d72 --- /dev/null +++ b/tests/baselines/reference/circular1.errors.txt @@ -0,0 +1,11 @@ +/b.ts(1,15): error TS2303: Circular definition of import alias 'A'. + + +==== /a.ts (0 errors) ==== + export type { A } from './b'; + +==== /b.ts (1 errors) ==== + export type { A } from './a'; + ~ +!!! error TS2303: Circular definition of import alias 'A'. + \ No newline at end of file diff --git a/tests/baselines/reference/circular1.symbols b/tests/baselines/reference/circular1.symbols new file mode 100644 index 0000000000000..be98e672c1bcc --- /dev/null +++ b/tests/baselines/reference/circular1.symbols @@ -0,0 +1,8 @@ +=== /a.ts === +export type { A } from './b'; +>A : Symbol(A, Decl(a.ts, 0, 13)) + +=== /b.ts === +export type { A } from './a'; +>A : Symbol(A, Decl(b.ts, 0, 13)) + diff --git a/tests/baselines/reference/circular1.types b/tests/baselines/reference/circular1.types new file mode 100644 index 0000000000000..32a8ee27d8ce0 --- /dev/null +++ b/tests/baselines/reference/circular1.types @@ -0,0 +1,8 @@ +=== /a.ts === +export type { A } from './b'; +>A : any + +=== /b.ts === +export type { A } from './a'; +>A : any + diff --git a/tests/baselines/reference/circular2.errors.txt b/tests/baselines/reference/circular2.errors.txt new file mode 100644 index 0000000000000..9906fc8fa88e0 --- /dev/null +++ b/tests/baselines/reference/circular2.errors.txt @@ -0,0 +1,16 @@ +/a.ts(2,13): error TS2456: Type alias 'A' circularly references itself. +/b.ts(2,13): error TS2456: Type alias 'B' circularly references itself. + + +==== /a.ts (1 errors) ==== + import type { B } from './b'; + export type A = B; + ~ +!!! error TS2456: Type alias 'A' circularly references itself. + +==== /b.ts (1 errors) ==== + import type { A } from './a'; + export type B = A; + ~ +!!! error TS2456: Type alias 'B' circularly references itself. + \ No newline at end of file diff --git a/tests/baselines/reference/circular2.symbols b/tests/baselines/reference/circular2.symbols new file mode 100644 index 0000000000000..1303d78e0a6a6 --- /dev/null +++ b/tests/baselines/reference/circular2.symbols @@ -0,0 +1,16 @@ +=== /a.ts === +import type { B } from './b'; +>B : Symbol(B, Decl(a.ts, 0, 13)) + +export type A = B; +>A : Symbol(A, Decl(a.ts, 0, 29)) +>B : Symbol(B, Decl(a.ts, 0, 13)) + +=== /b.ts === +import type { A } from './a'; +>A : Symbol(A, Decl(b.ts, 0, 13)) + +export type B = A; +>B : Symbol(B, Decl(b.ts, 0, 29)) +>A : Symbol(A, Decl(b.ts, 0, 13)) + diff --git a/tests/baselines/reference/circular2.types b/tests/baselines/reference/circular2.types new file mode 100644 index 0000000000000..cea0b396bd042 --- /dev/null +++ b/tests/baselines/reference/circular2.types @@ -0,0 +1,14 @@ +=== /a.ts === +import type { B } from './b'; +>B : any + +export type A = B; +>A : any + +=== /b.ts === +import type { A } from './a'; +>A : any + +export type B = A; +>B : any + diff --git a/tests/baselines/reference/circular3.errors.txt b/tests/baselines/reference/circular3.errors.txt new file mode 100644 index 0000000000000..5da3e364065b2 --- /dev/null +++ b/tests/baselines/reference/circular3.errors.txt @@ -0,0 +1,13 @@ +/b.ts(1,15): error TS2303: Circular definition of import alias 'B'. + + +==== /a.ts (0 errors) ==== + import type { A } from './b'; + export type { A as B }; + +==== /b.ts (1 errors) ==== + import type { B } from './a'; + ~ +!!! error TS2303: Circular definition of import alias 'B'. + export type { B as A }; + \ No newline at end of file diff --git a/tests/baselines/reference/circular3.symbols b/tests/baselines/reference/circular3.symbols new file mode 100644 index 0000000000000..6cdec14d30cbd --- /dev/null +++ b/tests/baselines/reference/circular3.symbols @@ -0,0 +1,16 @@ +=== /a.ts === +import type { A } from './b'; +>A : Symbol(A, Decl(a.ts, 0, 13)) + +export type { A as B }; +>A : Symbol(A, Decl(a.ts, 0, 13)) +>B : Symbol(B, Decl(a.ts, 1, 13)) + +=== /b.ts === +import type { B } from './a'; +>B : Symbol(B, Decl(b.ts, 0, 13)) + +export type { B as A }; +>B : Symbol(B, Decl(b.ts, 0, 13)) +>A : Symbol(A, Decl(b.ts, 1, 13)) + diff --git a/tests/baselines/reference/circular3.types b/tests/baselines/reference/circular3.types new file mode 100644 index 0000000000000..1c63897fba59d --- /dev/null +++ b/tests/baselines/reference/circular3.types @@ -0,0 +1,16 @@ +=== /a.ts === +import type { A } from './b'; +>A : any + +export type { A as B }; +>A : any +>B : any + +=== /b.ts === +import type { B } from './a'; +>B : any + +export type { B as A }; +>B : any +>A : any + diff --git a/tests/baselines/reference/circular4.errors.txt b/tests/baselines/reference/circular4.errors.txt new file mode 100644 index 0000000000000..b55cab7bf7c56 --- /dev/null +++ b/tests/baselines/reference/circular4.errors.txt @@ -0,0 +1,24 @@ +/a.ts(4,17): error TS2456: Type alias 'T' circularly references itself. +/b.ts(4,17): error TS2456: Type alias 'T' circularly references itself. + + +==== /a.ts (1 errors) ==== + import type { ns2 } from './b'; + export namespace ns1 { + export namespace nested { + export type T = ns2.nested.T; + ~ +!!! error TS2456: Type alias 'T' circularly references itself. + } + } + +==== /b.ts (1 errors) ==== + import type { ns1 } from './a'; + export namespace ns2 { + export namespace nested { + export type T = ns1.nested.T; + ~ +!!! error TS2456: Type alias 'T' circularly references itself. + } + } + \ No newline at end of file diff --git a/tests/baselines/reference/circular4.symbols b/tests/baselines/reference/circular4.symbols new file mode 100644 index 0000000000000..980ac1720f256 --- /dev/null +++ b/tests/baselines/reference/circular4.symbols @@ -0,0 +1,36 @@ +=== /a.ts === +import type { ns2 } from './b'; +>ns2 : Symbol(ns2, Decl(a.ts, 0, 13)) + +export namespace ns1 { +>ns1 : Symbol(ns1, Decl(a.ts, 0, 31)) + + export namespace nested { +>nested : Symbol(nested, Decl(a.ts, 1, 22)) + + export type T = ns2.nested.T; +>T : Symbol(T, Decl(a.ts, 2, 27)) +>ns2 : Symbol(ns2, Decl(a.ts, 0, 13)) +>nested : Symbol(ns2.nested, Decl(b.ts, 1, 22)) +>T : Symbol(ns2.nested.T, Decl(b.ts, 2, 27)) + } +} + +=== /b.ts === +import type { ns1 } from './a'; +>ns1 : Symbol(ns1, Decl(b.ts, 0, 13)) + +export namespace ns2 { +>ns2 : Symbol(ns2, Decl(b.ts, 0, 31)) + + export namespace nested { +>nested : Symbol(nested, Decl(b.ts, 1, 22)) + + export type T = ns1.nested.T; +>T : Symbol(T, Decl(b.ts, 2, 27)) +>ns1 : Symbol(ns1, Decl(b.ts, 0, 13)) +>nested : Symbol(ns1.nested, Decl(a.ts, 1, 22)) +>T : Symbol(ns1.nested.T, Decl(a.ts, 2, 27)) + } +} + diff --git a/tests/baselines/reference/circular4.types b/tests/baselines/reference/circular4.types new file mode 100644 index 0000000000000..491c36e6c16b1 --- /dev/null +++ b/tests/baselines/reference/circular4.types @@ -0,0 +1,26 @@ +=== /a.ts === +import type { ns2 } from './b'; +>ns2 : any + +export namespace ns1 { + export namespace nested { + export type T = ns2.nested.T; +>T : any +>ns2 : any +>nested : any + } +} + +=== /b.ts === +import type { ns1 } from './a'; +>ns1 : any + +export namespace ns2 { + export namespace nested { + export type T = ns1.nested.T; +>T : any +>ns1 : any +>nested : any + } +} + diff --git a/tests/cases/conformance/externalModules/typeOnly/circular1.ts b/tests/cases/conformance/externalModules/typeOnly/circular1.ts new file mode 100644 index 0000000000000..51fe382040e3e --- /dev/null +++ b/tests/cases/conformance/externalModules/typeOnly/circular1.ts @@ -0,0 +1,7 @@ +// @noEmit: true + +// @Filename: /a.ts +export type { A } from './b'; + +// @Filename: /b.ts +export type { A } from './a'; diff --git a/tests/cases/conformance/externalModules/typeOnly/circular2.ts b/tests/cases/conformance/externalModules/typeOnly/circular2.ts new file mode 100644 index 0000000000000..a11f0a48fe0a7 --- /dev/null +++ b/tests/cases/conformance/externalModules/typeOnly/circular2.ts @@ -0,0 +1,9 @@ +// @noEmit: true + +// @Filename: /a.ts +import type { B } from './b'; +export type A = B; + +// @Filename: /b.ts +import type { A } from './a'; +export type B = A; diff --git a/tests/cases/conformance/externalModules/typeOnly/circular3.ts b/tests/cases/conformance/externalModules/typeOnly/circular3.ts new file mode 100644 index 0000000000000..0cd40f250098c --- /dev/null +++ b/tests/cases/conformance/externalModules/typeOnly/circular3.ts @@ -0,0 +1,9 @@ +// @noEmit: true + +// @Filename: /a.ts +import type { A } from './b'; +export type { A as B }; + +// @Filename: /b.ts +import type { B } from './a'; +export type { B as A }; diff --git a/tests/cases/conformance/externalModules/typeOnly/circular4.ts b/tests/cases/conformance/externalModules/typeOnly/circular4.ts new file mode 100644 index 0000000000000..5dab72f03cf69 --- /dev/null +++ b/tests/cases/conformance/externalModules/typeOnly/circular4.ts @@ -0,0 +1,17 @@ +// @noEmit: true + +// @Filename: /a.ts +import type { ns2 } from './b'; +export namespace ns1 { + export namespace nested { + export type T = ns2.nested.T; + } +} + +// @Filename: /b.ts +import type { ns1 } from './a'; +export namespace ns2 { + export namespace nested { + export type T = ns1.nested.T; + } +} From 6de5150464c5751a0b1a035d6d62cfb8c2691e4c Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Wed, 20 Nov 2019 09:46:06 -0800 Subject: [PATCH 16/47] Fix getTypeAtLocation for type-only import/export specifiers --- src/compiler/checker.ts | 14 +++++-- src/compiler/utilities.ts | 15 +++++++ .../reference/api/tsserverlibrary.d.ts | 10 +++-- tests/baselines/reference/api/typescript.d.ts | 10 +++-- tests/baselines/reference/chained.errors.txt | 27 ++++++++++++ tests/baselines/reference/chained.js | 40 ++++++++++++++++++ tests/baselines/reference/chained.symbols | 39 ++++++++++++++++++ tests/baselines/reference/chained.types | 41 +++++++++++++++++++ .../reference/exportDeclaration.types | 2 +- ...tion_moduleSpecifier-isolatedModules.types | 2 +- .../exportDeclaration_moduleSpecifier.types | 2 +- .../reference/importClause_default.types | 2 +- .../reference/importClause_namedImports.types | 4 +- .../isolatedModulesReExportType.errors.txt | 8 ++-- tests/baselines/reference/renamed.errors.txt | 17 ++++++++ tests/baselines/reference/renamed.js | 29 +++++++++++++ tests/baselines/reference/renamed.symbols | 23 +++++++++++ tests/baselines/reference/renamed.types | 23 +++++++++++ .../externalModules/typeOnly/chained.ts | 17 ++++++++ .../externalModules/typeOnly/renamed.ts | 11 +++++ 20 files changed, 315 insertions(+), 21 deletions(-) create mode 100644 tests/baselines/reference/chained.errors.txt create mode 100644 tests/baselines/reference/chained.js create mode 100644 tests/baselines/reference/chained.symbols create mode 100644 tests/baselines/reference/chained.types create mode 100644 tests/baselines/reference/renamed.errors.txt create mode 100644 tests/baselines/reference/renamed.js create mode 100644 tests/baselines/reference/renamed.symbols create mode 100644 tests/baselines/reference/renamed.types create mode 100644 tests/cases/conformance/externalModules/typeOnly/chained.ts create mode 100644 tests/cases/conformance/externalModules/typeOnly/renamed.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 44d45540c1991..1c2d6886c7301 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -33435,10 +33435,10 @@ namespace ts { function isTypeDeclarationName(name: Node): boolean { return name.kind === SyntaxKind.Identifier && isTypeDeclaration(name.parent) && - (name.parent).name === name; + name.parent.name === name; } - function isTypeDeclaration(node: Node): node is TypeParameterDeclaration | ClassDeclaration | InterfaceDeclaration | TypeAliasDeclaration | EnumDeclaration { + function isTypeDeclaration(node: Node): node is TypeParameterDeclaration | ClassDeclaration | InterfaceDeclaration | TypeAliasDeclaration | EnumDeclaration | ImportClause | ImportSpecifier | ExportSpecifier { switch (node.kind) { case SyntaxKind.TypeParameter: case SyntaxKind.ClassDeclaration: @@ -33446,6 +33446,11 @@ namespace ts { case SyntaxKind.TypeAliasDeclaration: case SyntaxKind.EnumDeclaration: return true; + case SyntaxKind.ImportClause: + return (node as ImportClause).isTypeOnly; + case SyntaxKind.ImportSpecifier: + case SyntaxKind.ExportSpecifier: + return (node as ImportSpecifier | ExportSpecifier).parent.parent.isTypeOnly; default: return false; } @@ -33831,7 +33836,10 @@ namespace ts { if (isDeclarationNameOrImportPropertyName(node)) { const symbol = getSymbolAtLocation(node); - return symbol ? getTypeOfSymbol(symbol) : errorType; + if (symbol) { + return isTypeOnlyImportOrExportName(node) ? getDeclaredTypeOfSymbol(symbol) : getTypeOfSymbol(symbol); + } + return errorType; } if (isBindingPattern(node)) { diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index a7e3c8c34a078..f5754b86d04bb 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -6559,6 +6559,21 @@ namespace ts { return isImportSpecifier(node) || isExportSpecifier(node); } + export function isTypeOnlyImportOrExportName(node: Node): boolean { + if (node.kind !== SyntaxKind.Identifier) { + return false; + } + switch (node.parent.kind) { + case SyntaxKind.ImportSpecifier: + case SyntaxKind.ExportSpecifier: + return (node.parent as ImportSpecifier | ExportSpecifier).parent.parent.isTypeOnly; + case SyntaxKind.ImportClause: + return (node.parent as ImportClause).isTypeOnly; + default: + return false; + } + } + export function isStringTextContainingNode(node: Node): node is StringLiteral | TemplateLiteralToken { return node.kind === SyntaxKind.StringLiteral || isTemplateLiteralKind(node.kind); } diff --git a/tests/baselines/reference/api/tsserverlibrary.d.ts b/tests/baselines/reference/api/tsserverlibrary.d.ts index 258ced899165a..6cd85f8794b69 100644 --- a/tests/baselines/reference/api/tsserverlibrary.d.ts +++ b/tests/baselines/reference/api/tsserverlibrary.d.ts @@ -1484,6 +1484,7 @@ declare namespace ts { export interface ImportClause extends NamedDeclaration { kind: SyntaxKind.ImportClause; parent: ImportDeclaration; + isTypeOnly: boolean; name?: Identifier; namedBindings?: NamedImportBindings; } @@ -1499,6 +1500,7 @@ declare namespace ts { export interface ExportDeclaration extends DeclarationStatement, JSDocContainer { kind: SyntaxKind.ExportDeclaration; parent: SourceFile | ModuleBlock; + isTypeOnly: boolean; /** Will not be assigned in the case of `export * from "foo";` */ exportClause?: NamedExports; /** If this is not a StringLiteral it will be a grammar error. */ @@ -4105,8 +4107,8 @@ declare namespace ts { function updateImportEqualsDeclaration(node: ImportEqualsDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: Identifier, moduleReference: ModuleReference): ImportEqualsDeclaration; function createImportDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, importClause: ImportClause | undefined, moduleSpecifier: Expression): ImportDeclaration; function updateImportDeclaration(node: ImportDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, importClause: ImportClause | undefined, moduleSpecifier: Expression): ImportDeclaration; - function createImportClause(name: Identifier | undefined, namedBindings: NamedImportBindings | undefined): ImportClause; - function updateImportClause(node: ImportClause, name: Identifier | undefined, namedBindings: NamedImportBindings | undefined): ImportClause; + function createImportClause(name: Identifier | undefined, namedBindings: NamedImportBindings | undefined, isTypeOnly?: boolean): ImportClause; + function updateImportClause(node: ImportClause, name: Identifier | undefined, namedBindings: NamedImportBindings | undefined, isTypeOnly?: boolean): ImportClause; function createNamespaceImport(name: Identifier): NamespaceImport; function updateNamespaceImport(node: NamespaceImport, name: Identifier): NamespaceImport; function createNamedImports(elements: readonly ImportSpecifier[]): NamedImports; @@ -4115,8 +4117,8 @@ declare namespace ts { function updateImportSpecifier(node: ImportSpecifier, propertyName: Identifier | undefined, name: Identifier): ImportSpecifier; function createExportAssignment(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, isExportEquals: boolean | undefined, expression: Expression): ExportAssignment; function updateExportAssignment(node: ExportAssignment, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, expression: Expression): ExportAssignment; - function createExportDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, exportClause: NamedExports | undefined, moduleSpecifier?: Expression): ExportDeclaration; - function updateExportDeclaration(node: ExportDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, exportClause: NamedExports | undefined, moduleSpecifier: Expression | undefined): ExportDeclaration; + function createExportDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, exportClause: NamedExports | undefined, moduleSpecifier?: Expression, isTypeOnly?: boolean): ExportDeclaration; + function updateExportDeclaration(node: ExportDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, exportClause: NamedExports | undefined, moduleSpecifier: Expression | undefined, isTypeOnly?: boolean): ExportDeclaration; function createNamedExports(elements: readonly ExportSpecifier[]): NamedExports; function updateNamedExports(node: NamedExports, elements: readonly ExportSpecifier[]): NamedExports; function createExportSpecifier(propertyName: string | Identifier | undefined, name: string | Identifier): ExportSpecifier; diff --git a/tests/baselines/reference/api/typescript.d.ts b/tests/baselines/reference/api/typescript.d.ts index 94a41969ed696..b07257b299440 100644 --- a/tests/baselines/reference/api/typescript.d.ts +++ b/tests/baselines/reference/api/typescript.d.ts @@ -1484,6 +1484,7 @@ declare namespace ts { export interface ImportClause extends NamedDeclaration { kind: SyntaxKind.ImportClause; parent: ImportDeclaration; + isTypeOnly: boolean; name?: Identifier; namedBindings?: NamedImportBindings; } @@ -1499,6 +1500,7 @@ declare namespace ts { export interface ExportDeclaration extends DeclarationStatement, JSDocContainer { kind: SyntaxKind.ExportDeclaration; parent: SourceFile | ModuleBlock; + isTypeOnly: boolean; /** Will not be assigned in the case of `export * from "foo";` */ exportClause?: NamedExports; /** If this is not a StringLiteral it will be a grammar error. */ @@ -4105,8 +4107,8 @@ declare namespace ts { function updateImportEqualsDeclaration(node: ImportEqualsDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: Identifier, moduleReference: ModuleReference): ImportEqualsDeclaration; function createImportDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, importClause: ImportClause | undefined, moduleSpecifier: Expression): ImportDeclaration; function updateImportDeclaration(node: ImportDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, importClause: ImportClause | undefined, moduleSpecifier: Expression): ImportDeclaration; - function createImportClause(name: Identifier | undefined, namedBindings: NamedImportBindings | undefined): ImportClause; - function updateImportClause(node: ImportClause, name: Identifier | undefined, namedBindings: NamedImportBindings | undefined): ImportClause; + function createImportClause(name: Identifier | undefined, namedBindings: NamedImportBindings | undefined, isTypeOnly?: boolean): ImportClause; + function updateImportClause(node: ImportClause, name: Identifier | undefined, namedBindings: NamedImportBindings | undefined, isTypeOnly?: boolean): ImportClause; function createNamespaceImport(name: Identifier): NamespaceImport; function updateNamespaceImport(node: NamespaceImport, name: Identifier): NamespaceImport; function createNamedImports(elements: readonly ImportSpecifier[]): NamedImports; @@ -4115,8 +4117,8 @@ declare namespace ts { function updateImportSpecifier(node: ImportSpecifier, propertyName: Identifier | undefined, name: Identifier): ImportSpecifier; function createExportAssignment(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, isExportEquals: boolean | undefined, expression: Expression): ExportAssignment; function updateExportAssignment(node: ExportAssignment, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, expression: Expression): ExportAssignment; - function createExportDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, exportClause: NamedExports | undefined, moduleSpecifier?: Expression): ExportDeclaration; - function updateExportDeclaration(node: ExportDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, exportClause: NamedExports | undefined, moduleSpecifier: Expression | undefined): ExportDeclaration; + function createExportDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, exportClause: NamedExports | undefined, moduleSpecifier?: Expression, isTypeOnly?: boolean): ExportDeclaration; + function updateExportDeclaration(node: ExportDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, exportClause: NamedExports | undefined, moduleSpecifier: Expression | undefined, isTypeOnly?: boolean): ExportDeclaration; function createNamedExports(elements: readonly ExportSpecifier[]): NamedExports; function updateNamedExports(node: NamedExports, elements: readonly ExportSpecifier[]): NamedExports; function createExportSpecifier(propertyName: string | Identifier | undefined, name: string | Identifier): ExportSpecifier; diff --git a/tests/baselines/reference/chained.errors.txt b/tests/baselines/reference/chained.errors.txt new file mode 100644 index 0000000000000..8d684afbb9475 --- /dev/null +++ b/tests/baselines/reference/chained.errors.txt @@ -0,0 +1,27 @@ +/d.ts(2,5): error TS2693: 'D' only refers to a type, but is being used as a value here. +/d.ts(3,7): error TS2741: Property 'a' is missing in type '{}' but required in type 'A'. + + +==== /a.ts (0 errors) ==== + class A { a!: string } + export type { A as B }; + export type Z = A; + +==== /b.ts (0 errors) ==== + import { Z as Y } from './a'; + export { B as C } from './a'; + +==== /c.ts (0 errors) ==== + import type { C } from './b'; + export { C as D }; + +==== /d.ts (2 errors) ==== + import { D } from './c'; + new D(); + ~ +!!! error TS2693: 'D' only refers to a type, but is being used as a value here. + const d: D = {}; + ~ +!!! error TS2741: Property 'a' is missing in type '{}' but required in type 'A'. +!!! related TS2728 /a.ts:1:11: 'a' is declared here. + \ No newline at end of file diff --git a/tests/baselines/reference/chained.js b/tests/baselines/reference/chained.js new file mode 100644 index 0000000000000..e37d6361b2441 --- /dev/null +++ b/tests/baselines/reference/chained.js @@ -0,0 +1,40 @@ +//// [tests/cases/conformance/externalModules/typeOnly/chained.ts] //// + +//// [a.ts] +class A { a!: string } +export type { A as B }; +export type Z = A; + +//// [b.ts] +import { Z as Y } from './a'; +export { B as C } from './a'; + +//// [c.ts] +import type { C } from './b'; +export { C as D }; + +//// [d.ts] +import { D } from './c'; +new D(); +const d: D = {}; + + +//// [a.js] +"use strict"; +exports.__esModule = true; +var A = /** @class */ (function () { + function A() { + } + return A; +}()); +//// [b.js] +"use strict"; +exports.__esModule = true; +//// [c.js] +"use strict"; +exports.__esModule = true; +//// [d.js] +"use strict"; +exports.__esModule = true; +new D(); +var d = {}; diff --git a/tests/baselines/reference/chained.symbols b/tests/baselines/reference/chained.symbols new file mode 100644 index 0000000000000..9ba6d5bed2142 --- /dev/null +++ b/tests/baselines/reference/chained.symbols @@ -0,0 +1,39 @@ +=== /a.ts === +class A { a!: string } +>A : Symbol(A, Decl(a.ts, 0, 0)) +>a : Symbol(A.a, Decl(a.ts, 0, 9)) + +export type { A as B }; +>A : Symbol(A) +>B : Symbol(B, Decl(a.ts, 1, 13)) + +export type Z = A; +>Z : Symbol(Z, Decl(a.ts, 1, 23)) +>A : Symbol(A, Decl(a.ts, 0, 0)) + +=== /b.ts === +import { Z as Y } from './a'; +>Z : Symbol(Y, Decl(a.ts, 1, 23)) +>Y : Symbol(Y, Decl(b.ts, 0, 8)) + +export { B as C } from './a'; +>B : Symbol(B, Decl(a.ts, 1, 13)) +>C : Symbol(C, Decl(b.ts, 1, 8)) + +=== /c.ts === +import type { C } from './b'; +>C : Symbol(C, Decl(c.ts, 0, 13)) + +export { C as D }; +>C : Symbol(C, Decl(c.ts, 0, 13)) +>D : Symbol(D, Decl(c.ts, 1, 8)) + +=== /d.ts === +import { D } from './c'; +>D : Symbol(D, Decl(d.ts, 0, 8)) + +new D(); +const d: D = {}; +>d : Symbol(d, Decl(d.ts, 2, 5)) +>D : Symbol(D, Decl(d.ts, 0, 8)) + diff --git a/tests/baselines/reference/chained.types b/tests/baselines/reference/chained.types new file mode 100644 index 0000000000000..5e52f608b821b --- /dev/null +++ b/tests/baselines/reference/chained.types @@ -0,0 +1,41 @@ +=== /a.ts === +class A { a!: string } +>A : A +>a : string + +export type { A as B }; +>A : A +>B : A + +export type Z = A; +>Z : A + +=== /b.ts === +import { Z as Y } from './a'; +>Z : any +>Y : any + +export { B as C } from './a'; +>B : any +>C : any + +=== /c.ts === +import type { C } from './b'; +>C : A + +export { C as D }; +>C : any +>D : any + +=== /d.ts === +import { D } from './c'; +>D : any + +new D(); +>new D() : any +>D : any + +const d: D = {}; +>d : A +>{} : {} + diff --git a/tests/baselines/reference/exportDeclaration.types b/tests/baselines/reference/exportDeclaration.types index bd576425ae596..277082b8586a8 100644 --- a/tests/baselines/reference/exportDeclaration.types +++ b/tests/baselines/reference/exportDeclaration.types @@ -3,7 +3,7 @@ class A {} >A : A export type { A }; ->A : any +>A : A === /b.ts === import { A } from './a'; diff --git a/tests/baselines/reference/exportDeclaration_moduleSpecifier-isolatedModules.types b/tests/baselines/reference/exportDeclaration_moduleSpecifier-isolatedModules.types index 3e7307013f27a..78d90f12023c3 100644 --- a/tests/baselines/reference/exportDeclaration_moduleSpecifier-isolatedModules.types +++ b/tests/baselines/reference/exportDeclaration_moduleSpecifier-isolatedModules.types @@ -4,5 +4,5 @@ export type A = {}; === /b.ts === export type { A } from './a'; // should not error, but would without `type` ->A : any +>A : import("/a").A diff --git a/tests/baselines/reference/exportDeclaration_moduleSpecifier.types b/tests/baselines/reference/exportDeclaration_moduleSpecifier.types index 74876d3a10cae..b870b2804f582 100644 --- a/tests/baselines/reference/exportDeclaration_moduleSpecifier.types +++ b/tests/baselines/reference/exportDeclaration_moduleSpecifier.types @@ -4,7 +4,7 @@ export class A {} === /b.ts === export type { A } from './a'; ->A : any +>A : import("/a").A === /c.ts === import { A } from './b'; diff --git a/tests/baselines/reference/importClause_default.types b/tests/baselines/reference/importClause_default.types index c5a31df512e6d..47ab1c72d607a 100644 --- a/tests/baselines/reference/importClause_default.types +++ b/tests/baselines/reference/importClause_default.types @@ -5,7 +5,7 @@ export default class A { a!: string } === /b.ts === import type A from './a'; ->A : any +>A : import("/a").default new A(); >new A() : any diff --git a/tests/baselines/reference/importClause_namedImports.types b/tests/baselines/reference/importClause_namedImports.types index d67d77c8955b7..a9c43fcf582ad 100644 --- a/tests/baselines/reference/importClause_namedImports.types +++ b/tests/baselines/reference/importClause_namedImports.types @@ -12,8 +12,8 @@ export const C = ""; === /d.ts === import type { A, B, C } from './abc'; ->A : any ->B : any +>A : import("/abc").A +>B : B >C : any new A(); diff --git a/tests/baselines/reference/isolatedModulesReExportType.errors.txt b/tests/baselines/reference/isolatedModulesReExportType.errors.txt index dc035a84c2fc9..cc9e4c932eda5 100644 --- a/tests/baselines/reference/isolatedModulesReExportType.errors.txt +++ b/tests/baselines/reference/isolatedModulesReExportType.errors.txt @@ -1,12 +1,12 @@ -/user.ts(2,10): error TS1205: Cannot re-export a type when the '--isolatedModules' flag is provided. -/user.ts(17,10): error TS1205: Cannot re-export a type when the '--isolatedModules' flag is provided. +/user.ts(2,10): error TS1205: Re-exporting a type when the '--isolatedModules' flag is provided requires using an explicit type-only export. +/user.ts(17,10): error TS1205: Re-exporting a type when the '--isolatedModules' flag is provided requires using an explicit type-only export. ==== /user.ts (2 errors) ==== // Error, can't re-export something that's only a type. export { T } from "./exportT"; ~ -!!! error TS1205: Cannot re-export a type when the '--isolatedModules' flag is provided. +!!! error TS1205: Re-exporting a type when the '--isolatedModules' flag is provided requires using an explicit type-only export. export import T2 = require("./exportEqualsT"); // OK, has a value side @@ -23,7 +23,7 @@ import { T } from "./exportT"; export { T as T4 }; ~~~~~~~ -!!! error TS1205: Cannot re-export a type when the '--isolatedModules' flag is provided. +!!! error TS1205: Re-exporting a type when the '--isolatedModules' flag is provided requires using an explicit type-only export. ==== /exportT.ts (0 errors) ==== export type T = number; diff --git a/tests/baselines/reference/renamed.errors.txt b/tests/baselines/reference/renamed.errors.txt new file mode 100644 index 0000000000000..8f75a47757714 --- /dev/null +++ b/tests/baselines/reference/renamed.errors.txt @@ -0,0 +1,17 @@ +/c.ts(2,7): error TS2741: Property 'a' is missing in type '{}' but required in type 'A'. + + +==== /a.ts (0 errors) ==== + class A { a!: string } + export type { A as B }; + +==== /b.ts (0 errors) ==== + export type { B as C } from './a'; + +==== /c.ts (1 errors) ==== + import type { C as D } from './b'; + const d: D = {}; + ~ +!!! error TS2741: Property 'a' is missing in type '{}' but required in type 'A'. +!!! related TS2728 /a.ts:1:11: 'a' is declared here. + \ No newline at end of file diff --git a/tests/baselines/reference/renamed.js b/tests/baselines/reference/renamed.js new file mode 100644 index 0000000000000..b4e539bacb721 --- /dev/null +++ b/tests/baselines/reference/renamed.js @@ -0,0 +1,29 @@ +//// [tests/cases/conformance/externalModules/typeOnly/renamed.ts] //// + +//// [a.ts] +class A { a!: string } +export type { A as B }; + +//// [b.ts] +export type { B as C } from './a'; + +//// [c.ts] +import type { C as D } from './b'; +const d: D = {}; + + +//// [a.js] +"use strict"; +exports.__esModule = true; +var A = /** @class */ (function () { + function A() { + } + return A; +}()); +//// [b.js] +"use strict"; +exports.__esModule = true; +//// [c.js] +"use strict"; +exports.__esModule = true; +var d = {}; diff --git a/tests/baselines/reference/renamed.symbols b/tests/baselines/reference/renamed.symbols new file mode 100644 index 0000000000000..8af253a8c0370 --- /dev/null +++ b/tests/baselines/reference/renamed.symbols @@ -0,0 +1,23 @@ +=== /a.ts === +class A { a!: string } +>A : Symbol(A, Decl(a.ts, 0, 0)) +>a : Symbol(A.a, Decl(a.ts, 0, 9)) + +export type { A as B }; +>A : Symbol(A) +>B : Symbol(B, Decl(a.ts, 1, 13)) + +=== /b.ts === +export type { B as C } from './a'; +>B : Symbol(B, Decl(a.ts, 1, 13)) +>C : Symbol(C, Decl(b.ts, 0, 13)) + +=== /c.ts === +import type { C as D } from './b'; +>C : Symbol(C, Decl(b.ts, 0, 13)) +>D : Symbol(D, Decl(c.ts, 0, 13)) + +const d: D = {}; +>d : Symbol(d, Decl(c.ts, 1, 5)) +>D : Symbol(D, Decl(c.ts, 0, 13)) + diff --git a/tests/baselines/reference/renamed.types b/tests/baselines/reference/renamed.types new file mode 100644 index 0000000000000..85a9bfcc4002c --- /dev/null +++ b/tests/baselines/reference/renamed.types @@ -0,0 +1,23 @@ +=== /a.ts === +class A { a!: string } +>A : A +>a : string + +export type { A as B }; +>A : A +>B : A + +=== /b.ts === +export type { B as C } from './a'; +>B : A +>C : A + +=== /c.ts === +import type { C as D } from './b'; +>C : A +>D : A + +const d: D = {}; +>d : A +>{} : {} + diff --git a/tests/cases/conformance/externalModules/typeOnly/chained.ts b/tests/cases/conformance/externalModules/typeOnly/chained.ts new file mode 100644 index 0000000000000..57a0faad738aa --- /dev/null +++ b/tests/cases/conformance/externalModules/typeOnly/chained.ts @@ -0,0 +1,17 @@ +// @Filename: /a.ts +class A { a!: string } +export type { A as B }; +export type Z = A; + +// @Filename: /b.ts +import { Z as Y } from './a'; +export { B as C } from './a'; + +// @Filename: /c.ts +import type { C } from './b'; +export { C as D }; + +// @Filename: /d.ts +import { D } from './c'; +new D(); +const d: D = {}; diff --git a/tests/cases/conformance/externalModules/typeOnly/renamed.ts b/tests/cases/conformance/externalModules/typeOnly/renamed.ts new file mode 100644 index 0000000000000..266407b69e613 --- /dev/null +++ b/tests/cases/conformance/externalModules/typeOnly/renamed.ts @@ -0,0 +1,11 @@ +// @strict: true +// @Filename: /a.ts +class A { a!: string } +export type { A as B }; + +// @Filename: /b.ts +export type { B as C } from './a'; + +// @Filename: /c.ts +import type { C as D } from './b'; +const d: D = {}; From 9bf28fee92a8c502e18eebce013cbae0e2fe2d2f Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Wed, 20 Nov 2019 10:59:18 -0800 Subject: [PATCH 17/47] Fix type-only generic imports --- src/compiler/checker.ts | 20 +++++++++- tests/baselines/reference/generic.errors.txt | 20 ++++++++++ tests/baselines/reference/generic.js | 30 +++++++++++++++ tests/baselines/reference/generic.symbols | 37 ++++++++++++++++++ tests/baselines/reference/generic.types | 38 +++++++++++++++++++ .../externalModules/typeOnly/generic.ts | 11 ++++++ 6 files changed, 155 insertions(+), 1 deletion(-) create mode 100644 tests/baselines/reference/generic.errors.txt create mode 100644 tests/baselines/reference/generic.js create mode 100644 tests/baselines/reference/generic.symbols create mode 100644 tests/baselines/reference/generic.types create mode 100644 tests/cases/conformance/externalModules/typeOnly/generic.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 1c2d6886c7301..e67780ee0ab10 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -2387,6 +2387,17 @@ namespace ts { if (!(target.flags & SymbolFlags.Value)) { return target; } + // if (target.flags & SymbolFlags.Class) { + + // } + // if (target.flags & SymbolFlags.Enum) { + + // } + // if (target.flags & SymbolFlags.EnumMember) { + + // } + // Debug.assert(!(target.flags & SymbolFlags.Type)); + if (target.flags & SymbolFlags.Type) { const alias = createSymbol(SymbolFlags.TypeAlias, target.escapedName); alias.declarations = emptyArray; @@ -8129,6 +8140,10 @@ namespace ts { return links.declaredType; } + function isTypeOnlyAlias(symbol: Symbol): symbol is TransientSymbol & { immediateTarget: Symbol } { + return isTransientSymbol(symbol) && !!symbol.immediateTarget; + } + function getDeclaredTypeOfTypeAlias(symbol: Symbol): Type { const links = getSymbolLinks(symbol); if (!links.declaredType) { @@ -8140,7 +8155,7 @@ namespace ts { let type: Type; let declaration; - if (isTransientSymbol(symbol) && symbol.immediateTarget) { + if (isTypeOnlyAlias(symbol)) { // Symbol is synthetic type alias for type-only import or export. // See `createSyntheticTypeAlias`. type = getDeclaredTypeOfSymbol(symbol.immediateTarget); @@ -10876,6 +10891,9 @@ namespace ts { if (symbol.flags & (SymbolFlags.Class | SymbolFlags.Interface)) { return getTypeFromClassOrInterfaceReference(node, symbol); } + if (isTypeOnlyAlias(symbol)) { + return getTypeReferenceType(node, symbol.immediateTarget); + } if (symbol.flags & SymbolFlags.TypeAlias) { return getTypeFromTypeAliasReference(node, symbol); } diff --git a/tests/baselines/reference/generic.errors.txt b/tests/baselines/reference/generic.errors.txt new file mode 100644 index 0000000000000..0b1c394dec78d --- /dev/null +++ b/tests/baselines/reference/generic.errors.txt @@ -0,0 +1,20 @@ +/b.ts(5,5): error TS2741: Property 'a' is missing in type '{}' but required in type 'A'. +/b.ts(6,8): error TS2314: Generic type 'A' requires 1 type argument(s). + + +==== /a.ts (0 errors) ==== + export class A { a!: T } + export type { A as B }; + +==== /b.ts (2 errors) ==== + import type { A } from './a'; + import { B } from './a'; + let a: A = { a: "" }; + let b: B = { a: 3 }; + let c: A = {}; + ~ +!!! error TS2741: Property 'a' is missing in type '{}' but required in type 'A'. +!!! related TS2728 /a.ts:1:21: 'a' is declared here. + let d: B = { a: "" }; + ~ +!!! error TS2314: Generic type 'A' requires 1 type argument(s). \ No newline at end of file diff --git a/tests/baselines/reference/generic.js b/tests/baselines/reference/generic.js new file mode 100644 index 0000000000000..ba9093b688330 --- /dev/null +++ b/tests/baselines/reference/generic.js @@ -0,0 +1,30 @@ +//// [tests/cases/conformance/externalModules/typeOnly/generic.ts] //// + +//// [a.ts] +export class A { a!: T } +export type { A as B }; + +//// [b.ts] +import type { A } from './a'; +import { B } from './a'; +let a: A = { a: "" }; +let b: B = { a: 3 }; +let c: A = {}; +let d: B = { a: "" }; + +//// [a.js] +"use strict"; +exports.__esModule = true; +var A = /** @class */ (function () { + function A() { + } + return A; +}()); +exports.A = A; +//// [b.js] +"use strict"; +exports.__esModule = true; +var a = { a: "" }; +var b = { a: 3 }; +var c = {}; +var d = { a: "" }; diff --git a/tests/baselines/reference/generic.symbols b/tests/baselines/reference/generic.symbols new file mode 100644 index 0000000000000..88625de90732d --- /dev/null +++ b/tests/baselines/reference/generic.symbols @@ -0,0 +1,37 @@ +=== /a.ts === +export class A { a!: T } +>A : Symbol(A, Decl(a.ts, 0, 0)) +>T : Symbol(T, Decl(a.ts, 0, 15)) +>a : Symbol(A.a, Decl(a.ts, 0, 19)) +>T : Symbol(T, Decl(a.ts, 0, 15)) + +export type { A as B }; +>A : Symbol(A) +>B : Symbol(B, Decl(a.ts, 1, 13)) + +=== /b.ts === +import type { A } from './a'; +>A : Symbol(A, Decl(b.ts, 0, 13)) + +import { B } from './a'; +>B : Symbol(B, Decl(b.ts, 1, 8)) + +let a: A = { a: "" }; +>a : Symbol(a, Decl(b.ts, 2, 3)) +>A : Symbol(A, Decl(b.ts, 0, 13)) +>a : Symbol(a, Decl(b.ts, 2, 20)) + +let b: B = { a: 3 }; +>b : Symbol(b, Decl(b.ts, 3, 3)) +>B : Symbol(B, Decl(b.ts, 1, 8)) +>a : Symbol(a, Decl(b.ts, 3, 20)) + +let c: A = {}; +>c : Symbol(c, Decl(b.ts, 4, 3)) +>A : Symbol(A, Decl(b.ts, 0, 13)) + +let d: B = { a: "" }; +>d : Symbol(d, Decl(b.ts, 5, 3)) +>B : Symbol(B, Decl(b.ts, 1, 8)) +>a : Symbol(a, Decl(b.ts, 5, 12)) + diff --git a/tests/baselines/reference/generic.types b/tests/baselines/reference/generic.types new file mode 100644 index 0000000000000..abe6f1da4a0a5 --- /dev/null +++ b/tests/baselines/reference/generic.types @@ -0,0 +1,38 @@ +=== /a.ts === +export class A { a!: T } +>A : A +>a : T + +export type { A as B }; +>A : A +>B : A + +=== /b.ts === +import type { A } from './a'; +>A : import("/a").A + +import { B } from './a'; +>B : any + +let a: A = { a: "" }; +>a : import("/a").A +>{ a: "" } : { a: string; } +>a : string +>"" : "" + +let b: B = { a: 3 }; +>b : import("/a").A +>{ a: 3 } : { a: number; } +>a : number +>3 : 3 + +let c: A = {}; +>c : import("/a").A +>{} : {} + +let d: B = { a: "" }; +>d : any +>{ a: "" } : { a: string; } +>a : string +>"" : "" + diff --git a/tests/cases/conformance/externalModules/typeOnly/generic.ts b/tests/cases/conformance/externalModules/typeOnly/generic.ts new file mode 100644 index 0000000000000..5ea17492f1b8f --- /dev/null +++ b/tests/cases/conformance/externalModules/typeOnly/generic.ts @@ -0,0 +1,11 @@ +// @Filename: /a.ts +export class A { a!: T } +export type { A as B }; + +// @Filename: /b.ts +import type { A } from './a'; +import { B } from './a'; +let a: A = { a: "" }; +let b: B = { a: 3 }; +let c: A = {}; +let d: B = { a: "" }; \ No newline at end of file From ed5dcf4a86e1eb930b8e5558c96a0c2c45ba679a Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Wed, 20 Nov 2019 11:02:16 -0800 Subject: [PATCH 18/47] Update public APIs --- tests/baselines/reference/api/tsserverlibrary.d.ts | 1 + tests/baselines/reference/api/typescript.d.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/tests/baselines/reference/api/tsserverlibrary.d.ts b/tests/baselines/reference/api/tsserverlibrary.d.ts index 6cd85f8794b69..97909c3fc5740 100644 --- a/tests/baselines/reference/api/tsserverlibrary.d.ts +++ b/tests/baselines/reference/api/tsserverlibrary.d.ts @@ -3663,6 +3663,7 @@ declare namespace ts { function isTemplateLiteralToken(node: Node): node is TemplateLiteralToken; function isTemplateMiddleOrTemplateTail(node: Node): node is TemplateMiddle | TemplateTail; function isImportOrExportSpecifier(node: Node): node is ImportSpecifier | ExportSpecifier; + function isTypeOnlyImportOrExportName(node: Node): boolean; function isStringTextContainingNode(node: Node): node is StringLiteral | TemplateLiteralToken; function isModifier(node: Node): node is Modifier; function isEntityName(node: Node): node is EntityName; diff --git a/tests/baselines/reference/api/typescript.d.ts b/tests/baselines/reference/api/typescript.d.ts index b07257b299440..bd2fa5def471b 100644 --- a/tests/baselines/reference/api/typescript.d.ts +++ b/tests/baselines/reference/api/typescript.d.ts @@ -3663,6 +3663,7 @@ declare namespace ts { function isTemplateLiteralToken(node: Node): node is TemplateLiteralToken; function isTemplateMiddleOrTemplateTail(node: Node): node is TemplateMiddle | TemplateTail; function isImportOrExportSpecifier(node: Node): node is ImportSpecifier | ExportSpecifier; + function isTypeOnlyImportOrExportName(node: Node): boolean; function isStringTextContainingNode(node: Node): node is StringLiteral | TemplateLiteralToken; function isModifier(node: Node): node is Modifier; function isEntityName(node: Node): node is EntityName; From 3b45e987652fd63295c990bd140cb5895c7edf7b Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Wed, 20 Nov 2019 11:05:03 -0800 Subject: [PATCH 19/47] Remove unused WIP comment --- src/compiler/checker.ts | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index e67780ee0ab10..e75564eb3516b 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -2387,17 +2387,6 @@ namespace ts { if (!(target.flags & SymbolFlags.Value)) { return target; } - // if (target.flags & SymbolFlags.Class) { - - // } - // if (target.flags & SymbolFlags.Enum) { - - // } - // if (target.flags & SymbolFlags.EnumMember) { - - // } - // Debug.assert(!(target.flags & SymbolFlags.Type)); - if (target.flags & SymbolFlags.Type) { const alias = createSymbol(SymbolFlags.TypeAlias, target.escapedName); alias.declarations = emptyArray; From 48de63b793a34fccaee3952cd615ff1f7f609195 Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Wed, 20 Nov 2019 11:38:39 -0800 Subject: [PATCH 20/47] Type-only namespace imports --- src/compiler/checker.ts | 3 +- .../importClause_namespaceImport.errors.txt | 34 ++++++++++++++ .../reference/importClause_namespaceImport.js | 43 +++++++++++++++++ .../importClause_namespaceImport.symbols | 42 +++++++++++++++++ .../importClause_namespaceImport.types | 47 +++++++++++++++++++ .../typeOnly/importClause_namespaceImport.ts | 14 ++++++ 6 files changed, 182 insertions(+), 1 deletion(-) create mode 100644 tests/baselines/reference/importClause_namespaceImport.errors.txt create mode 100644 tests/baselines/reference/importClause_namespaceImport.js create mode 100644 tests/baselines/reference/importClause_namespaceImport.symbols create mode 100644 tests/baselines/reference/importClause_namespaceImport.types create mode 100644 tests/cases/conformance/externalModules/typeOnly/importClause_namespaceImport.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index e75564eb3516b..20b1935b9ee2e 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -2227,7 +2227,8 @@ namespace ts { function getTargetOfNamespaceImport(node: NamespaceImport, dontResolveAlias: boolean): Symbol | undefined { const moduleSpecifier = node.parent.parent.moduleSpecifier; - return resolveESModuleSymbol(resolveExternalModuleName(node, moduleSpecifier), moduleSpecifier, dontResolveAlias, /*suppressUsageError*/ false); + const moduleSymbol = resolveESModuleSymbol(resolveExternalModuleName(node, moduleSpecifier), moduleSpecifier, dontResolveAlias, /*suppressUsageError*/ false); + return moduleSymbol && node.parent.isTypeOnly ? createTypeOnlySymbol(moduleSymbol) : moduleSymbol; } // This function creates a synthetic symbol that combines the value side of one symbol with the diff --git a/tests/baselines/reference/importClause_namespaceImport.errors.txt b/tests/baselines/reference/importClause_namespaceImport.errors.txt new file mode 100644 index 0000000000000..04d8dceddd02c --- /dev/null +++ b/tests/baselines/reference/importClause_namespaceImport.errors.txt @@ -0,0 +1,34 @@ +/b.ts(2,1): error TS2708: Cannot use namespace 'types' as a value. +/b.ts(3,1): error TS2708: Cannot use namespace 'types' as a value. +/b.ts(4,14): error TS2694: Namespace '"/a"' has no exported member 'Value'. +/b.ts(5,7): error TS2741: Property 'a' is missing in type '{}' but required in type 'A'. +/b.ts(6,7): error TS2741: Property 'b' is missing in type '{}' but required in type 'B'. + + +==== /a.ts (0 errors) ==== + export class A { a!: string } + export class B { b!: number } + export type C = T; + export const Value = {}; + +==== /b.ts (5 errors) ==== + import type * as types from './a'; + types; + ~~~~~ +!!! error TS2708: Cannot use namespace 'types' as a value. + types.Value; + ~~~~~ +!!! error TS2708: Cannot use namespace 'types' as a value. + let v: types.Value; + ~~~~~ +!!! error TS2694: Namespace '"/a"' has no exported member 'Value'. + const a: types.A = {}; + ~ +!!! error TS2741: Property 'a' is missing in type '{}' but required in type 'A'. +!!! related TS2728 /a.ts:1:18: 'a' is declared here. + const b: types.B = {}; + ~ +!!! error TS2741: Property 'b' is missing in type '{}' but required in type 'B'. +!!! related TS2728 /a.ts:2:18: 'b' is declared here. + const c: types.C = ""; + \ No newline at end of file diff --git a/tests/baselines/reference/importClause_namespaceImport.js b/tests/baselines/reference/importClause_namespaceImport.js new file mode 100644 index 0000000000000..4e1410e999d86 --- /dev/null +++ b/tests/baselines/reference/importClause_namespaceImport.js @@ -0,0 +1,43 @@ +//// [tests/cases/conformance/externalModules/typeOnly/importClause_namespaceImport.ts] //// + +//// [a.ts] +export class A { a!: string } +export class B { b!: number } +export type C = T; +export const Value = {}; + +//// [b.ts] +import type * as types from './a'; +types; +types.Value; +let v: types.Value; +const a: types.A = {}; +const b: types.B = {}; +const c: types.C = ""; + + +//// [a.js] +"use strict"; +exports.__esModule = true; +var A = /** @class */ (function () { + function A() { + } + return A; +}()); +exports.A = A; +var B = /** @class */ (function () { + function B() { + } + return B; +}()); +exports.B = B; +exports.Value = {}; +//// [b.js] +"use strict"; +exports.__esModule = true; +types; +types.Value; +var v; +var a = {}; +var b = {}; +var c = ""; diff --git a/tests/baselines/reference/importClause_namespaceImport.symbols b/tests/baselines/reference/importClause_namespaceImport.symbols new file mode 100644 index 0000000000000..4242b05a4ca9d --- /dev/null +++ b/tests/baselines/reference/importClause_namespaceImport.symbols @@ -0,0 +1,42 @@ +=== /a.ts === +export class A { a!: string } +>A : Symbol(A, Decl(a.ts, 0, 0)) +>a : Symbol(A.a, Decl(a.ts, 0, 16)) + +export class B { b!: number } +>B : Symbol(B, Decl(a.ts, 0, 29)) +>b : Symbol(B.b, Decl(a.ts, 1, 16)) + +export type C = T; +>C : Symbol(C, Decl(a.ts, 1, 29)) +>T : Symbol(T, Decl(a.ts, 2, 14)) +>T : Symbol(T, Decl(a.ts, 2, 14)) + +export const Value = {}; +>Value : Symbol(Value, Decl(a.ts, 3, 12)) + +=== /b.ts === +import type * as types from './a'; +>types : Symbol(types, Decl(b.ts, 0, 11)) + +types; +types.Value; +let v: types.Value; +>v : Symbol(v, Decl(b.ts, 3, 3)) +>types : Symbol(types, Decl(b.ts, 0, 11)) + +const a: types.A = {}; +>a : Symbol(a, Decl(b.ts, 4, 5)) +>types : Symbol(types, Decl(b.ts, 0, 11)) +>A : Symbol(types.A) + +const b: types.B = {}; +>b : Symbol(b, Decl(b.ts, 5, 5)) +>types : Symbol(types, Decl(b.ts, 0, 11)) +>B : Symbol(types.B) + +const c: types.C = ""; +>c : Symbol(c, Decl(b.ts, 6, 5)) +>types : Symbol(types, Decl(b.ts, 0, 11)) +>C : Symbol(types.C, Decl(a.ts, 1, 29)) + diff --git a/tests/baselines/reference/importClause_namespaceImport.types b/tests/baselines/reference/importClause_namespaceImport.types new file mode 100644 index 0000000000000..319edbd5632c3 --- /dev/null +++ b/tests/baselines/reference/importClause_namespaceImport.types @@ -0,0 +1,47 @@ +=== /a.ts === +export class A { a!: string } +>A : A +>a : string + +export class B { b!: number } +>B : B +>b : number + +export type C = T; +>C : T + +export const Value = {}; +>Value : {} +>{} : {} + +=== /b.ts === +import type * as types from './a'; +>types : any + +types; +>types : any + +types.Value; +>types.Value : any +>types : any +>Value : any + +let v: types.Value; +>v : any +>types : any + +const a: types.A = {}; +>a : import("/a").A +>types : any +>{} : {} + +const b: types.B = {}; +>b : import("/a").B +>types : any +>{} : {} + +const c: types.C = ""; +>c : string +>types : any +>"" : "" + diff --git a/tests/cases/conformance/externalModules/typeOnly/importClause_namespaceImport.ts b/tests/cases/conformance/externalModules/typeOnly/importClause_namespaceImport.ts new file mode 100644 index 0000000000000..d9a6313c4d1c2 --- /dev/null +++ b/tests/cases/conformance/externalModules/typeOnly/importClause_namespaceImport.ts @@ -0,0 +1,14 @@ +// @Filename: /a.ts +export class A { a!: string } +export class B { b!: number } +export type C = T; +export const Value = {}; + +// @Filename: /b.ts +import type * as types from './a'; +types; +types.Value; +let v: types.Value; +const a: types.A = {}; +const b: types.B = {}; +const c: types.C = ""; From 113823d52ad85cb459fde64c7cecbdfbf1621296 Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Wed, 20 Nov 2019 14:42:24 -0800 Subject: [PATCH 21/47] Fix factory update calls --- src/compiler/factory.ts | 4 ++-- src/compiler/transformers/declarations.ts | 17 +++++++++++++---- src/compiler/transformers/ts.ts | 8 ++++++-- src/compiler/visitor.ts | 6 ++++-- src/services/organizeImports.ts | 5 +++-- src/services/refactors/moveToNewFile.ts | 2 +- src/testRunner/unittests/transform.ts | 2 +- 7 files changed, 30 insertions(+), 14 deletions(-) diff --git a/src/compiler/factory.ts b/src/compiler/factory.ts index 0f00c5cb62f60..748ec0b750b1d 100644 --- a/src/compiler/factory.ts +++ b/src/compiler/factory.ts @@ -2266,7 +2266,7 @@ namespace ts { return node; } - export function updateImportClause(node: ImportClause, name: Identifier | undefined, namedBindings: NamedImportBindings | undefined, isTypeOnly = false) { + export function updateImportClause(node: ImportClause, name: Identifier | undefined, namedBindings: NamedImportBindings | undefined, isTypeOnly: boolean) { return node.name !== name || node.namedBindings !== namedBindings || node.isTypeOnly !== isTypeOnly @@ -2345,7 +2345,7 @@ namespace ts { modifiers: readonly Modifier[] | undefined, exportClause: NamedExports | undefined, moduleSpecifier: Expression | undefined, - isTypeOnly = false) { + isTypeOnly: boolean) { return node.decorators !== decorators || node.modifiers !== modifiers || node.isTypeOnly !== isTypeOnly diff --git a/src/compiler/transformers/declarations.ts b/src/compiler/transformers/declarations.ts index e6413af8e85ea..fc63aa5be0368 100644 --- a/src/compiler/transformers/declarations.ts +++ b/src/compiler/transformers/declarations.ts @@ -686,7 +686,8 @@ namespace ts { return visibleDefaultBinding && updateImportDeclaration(decl, /*decorators*/ undefined, decl.modifiers, updateImportClause( decl.importClause, visibleDefaultBinding, - /*namedBindings*/ undefined + /*namedBindings*/ undefined, + decl.importClause.isTypeOnly, ), rewriteModuleSpecifier(decl, decl.moduleSpecifier)); } if (decl.importClause.namedBindings.kind === SyntaxKind.NamespaceImport) { @@ -695,7 +696,8 @@ namespace ts { return visibleDefaultBinding || namedBindings ? updateImportDeclaration(decl, /*decorators*/ undefined, decl.modifiers, updateImportClause( decl.importClause, visibleDefaultBinding, - namedBindings + namedBindings, + decl.importClause.isTypeOnly, ), rewriteModuleSpecifier(decl, decl.moduleSpecifier)) : undefined; } // Named imports (optionally with visible default) @@ -708,7 +710,8 @@ namespace ts { updateImportClause( decl.importClause, visibleDefaultBinding, - bindingList && bindingList.length ? updateNamedImports(decl.importClause.namedBindings, bindingList) : undefined + bindingList && bindingList.length ? updateNamedImports(decl.importClause.namedBindings, bindingList) : undefined, + decl.importClause.isTypeOnly, ), rewriteModuleSpecifier(decl, decl.moduleSpecifier) ); @@ -1018,7 +1021,13 @@ namespace ts { resultHasScopeMarker = true; // Always visible if the parent node isn't dropped for being not visible // Rewrite external module names if necessary - return updateExportDeclaration(input, /*decorators*/ undefined, input.modifiers, input.exportClause, rewriteModuleSpecifier(input, input.moduleSpecifier)); + return updateExportDeclaration( + input, + /*decorators*/ undefined, + input.modifiers, + input.exportClause, + rewriteModuleSpecifier(input, input.moduleSpecifier), + input.isTypeOnly); } case SyntaxKind.ExportAssignment: { // Always visible if the parent node isn't dropped for being not visible diff --git a/src/compiler/transformers/ts.ts b/src/compiler/transformers/ts.ts index 6f55b5e904408..0fd220d9501f9 100644 --- a/src/compiler/transformers/ts.ts +++ b/src/compiler/transformers/ts.ts @@ -2785,10 +2785,13 @@ namespace ts { * @param node The import clause node. */ function visitImportClause(node: ImportClause): VisitResult { + if (node.isTypeOnly) { + return undefined; + } // Elide the import clause if we elide both its name and its named bindings. const name = resolver.isReferencedAliasDeclaration(node) ? node.name : undefined; const namedBindings = visitNode(node.namedBindings, visitNamedImportBindings, isNamedImportBindings); - return (name || namedBindings) ? updateImportClause(node, name, namedBindings) : undefined; + return (name || namedBindings) ? updateImportClause(node, name, namedBindings, /*isTypeOnly*/ false) : undefined; } /** @@ -2860,7 +2863,8 @@ namespace ts { /*decorators*/ undefined, /*modifiers*/ undefined, exportClause, - node.moduleSpecifier) + node.moduleSpecifier, + node.isTypeOnly) : undefined; } diff --git a/src/compiler/visitor.ts b/src/compiler/visitor.ts index f9ce78293e442..01c910e7df1d7 100644 --- a/src/compiler/visitor.ts +++ b/src/compiler/visitor.ts @@ -792,7 +792,8 @@ namespace ts { case SyntaxKind.ImportClause: return updateImportClause(node, visitNode((node).name, visitor, isIdentifier), - visitNode((node).namedBindings, visitor, isNamedImportBindings)); + visitNode((node).namedBindings, visitor, isNamedImportBindings), + (node as ImportClause).isTypeOnly); case SyntaxKind.NamespaceImport: return updateNamespaceImport(node, @@ -818,7 +819,8 @@ namespace ts { nodesVisitor((node).decorators, visitor, isDecorator), nodesVisitor((node).modifiers, visitor, isModifier), visitNode((node).exportClause, visitor, isNamedExports), - visitNode((node).moduleSpecifier, visitor, isExpression)); + visitNode((node).moduleSpecifier, visitor, isExpression), + (node as ExportDeclaration).isTypeOnly); case SyntaxKind.NamedExports: return updateNamedExports(node, diff --git a/src/services/organizeImports.ts b/src/services/organizeImports.ts index 6db5c9eeadc8c..c7436e88f1372 100644 --- a/src/services/organizeImports.ts +++ b/src/services/organizeImports.ts @@ -318,7 +318,8 @@ namespace ts.OrganizeImports { exportDecl.decorators, exportDecl.modifiers, updateNamedExports(exportDecl.exportClause!, sortedExportSpecifiers), - exportDecl.moduleSpecifier)); + exportDecl.moduleSpecifier, + exportDecl.isTypeOnly)); return coalescedExports; @@ -358,7 +359,7 @@ namespace ts.OrganizeImports { importDeclaration, importDeclaration.decorators, importDeclaration.modifiers, - updateImportClause(importDeclaration.importClause!, name, namedBindings), // TODO: GH#18217 + updateImportClause(importDeclaration.importClause!, name, namedBindings, importDeclaration.importClause!.isTypeOnly), // TODO: GH#18217 importDeclaration.moduleSpecifier); } diff --git a/src/services/refactors/moveToNewFile.ts b/src/services/refactors/moveToNewFile.ts index b187a0f953b59..a575d86fc4793 100644 --- a/src/services/refactors/moveToNewFile.ts +++ b/src/services/refactors/moveToNewFile.ts @@ -353,7 +353,7 @@ namespace ts.refactor { changes.replaceNode( sourceFile, importDecl.importClause, - updateImportClause(importDecl.importClause, name, /*namedBindings*/ undefined) + updateImportClause(importDecl.importClause, name, /*namedBindings*/ undefined, importDecl.importClause.isTypeOnly) ); } else if (namedBindings.kind === SyntaxKind.NamedImports) { diff --git a/src/testRunner/unittests/transform.ts b/src/testRunner/unittests/transform.ts index fd5b54d3565f5..b244b942a503c 100644 --- a/src/testRunner/unittests/transform.ts +++ b/src/testRunner/unittests/transform.ts @@ -231,7 +231,7 @@ namespace ts { const exports = [{ name: "x" }]; const exportSpecifiers = exports.map(e => createExportSpecifier(e.name, e.name)); const exportClause = createNamedExports(exportSpecifiers); - const newEd = updateExportDeclaration(ed, ed.decorators, ed.modifiers, exportClause, ed.moduleSpecifier); + const newEd = updateExportDeclaration(ed, ed.decorators, ed.modifiers, exportClause, ed.moduleSpecifier, ed.isTypeOnly); return newEd as Node as T; } From d69eed0c40ac23bc6336007f4b0153f78662ae84 Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Thu, 21 Nov 2019 11:36:44 -0800 Subject: [PATCH 22/47] Add grammar errors for JS usage and mixing default and named bindings --- src/compiler/checker.ts | 9 ++++++++- src/compiler/diagnosticMessages.json | 12 ++++++++++-- src/compiler/program.ts | 12 ++++++++++++ .../externalModules/typeOnly/grammarErrors.ts | 15 +++++++++++++++ 4 files changed, 45 insertions(+), 3 deletions(-) create mode 100644 tests/cases/conformance/externalModules/typeOnly/grammarErrors.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 20b1935b9ee2e..4fcf516b9d102 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -32679,7 +32679,7 @@ namespace ts { } if (checkExternalImportOrExportDeclaration(node)) { const importClause = node.importClause; - if (importClause) { + if (importClause && checkGrammarImportClause(importClause)) { if (importClause.name) { checkImportBinding(importClause); } @@ -36324,6 +36324,13 @@ namespace ts { return ambientModulesCache; } + function checkGrammarImportClause(node: ImportClause): boolean { + if (node.isTypeOnly && node.name && node.namedBindings) { + return grammarErrorOnNode(node, Diagnostics.Type_only_import_can_specify_a_default_import_or_named_bindings_but_not_both); + } + return false; + } + function checkGrammarImportCallExpression(node: ImportCall): boolean { if (moduleKind === ModuleKind.ES2015) { return grammarErrorOnNode(node, Diagnostics.Dynamic_imports_are_only_supported_when_the_module_flag_is_set_to_esnext_commonjs_amd_system_or_umd); diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index 3eea16051f73f..dd0ae54af6da6 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -1055,13 +1055,21 @@ "category": "Error", "code": 1361 }, + "Type-only import can specify a default import or named bindings, but not both.": { + "category": "Error", + "code": 1362 + }, "Convert to type-only export": { "category": "Message", - "code": 1362 + "code": 1363 }, "Convert all re-exported types to type-only exports": { "category": "Message", - "code": 1363 + "code": 1364 + }, + "Split into two separate import declarations": { + "category": "Message", + "code": 1365 }, "The types of '{0}' are incompatible between these types.": { diff --git a/src/compiler/program.ts b/src/compiler/program.ts index 2af18fb6bbb55..828752d5031a4 100644 --- a/src/compiler/program.ts +++ b/src/compiler/program.ts @@ -1817,6 +1817,18 @@ namespace ts { } switch (node.kind) { + case SyntaxKind.ImportClause: + if ((node as ImportClause).isTypeOnly) { + diagnostics.push(createDiagnosticForNode(node.parent, Diagnostics._0_can_only_be_used_in_a_ts_file, "import type")); + return; + } + break; + case SyntaxKind.ExportDeclaration: + if ((node as ExportDeclaration).isTypeOnly) { + diagnostics.push(createDiagnosticForNode(node, Diagnostics._0_can_only_be_used_in_a_ts_file, "export type")); + return; + } + break; case SyntaxKind.ImportEqualsDeclaration: diagnostics.push(createDiagnosticForNode(node, Diagnostics.import_can_only_be_used_in_TypeScript_files)); return; diff --git a/tests/cases/conformance/externalModules/typeOnly/grammarErrors.ts b/tests/cases/conformance/externalModules/typeOnly/grammarErrors.ts new file mode 100644 index 0000000000000..e16efa45f9115 --- /dev/null +++ b/tests/cases/conformance/externalModules/typeOnly/grammarErrors.ts @@ -0,0 +1,15 @@ +// @noTypesAndSymbols: true +// @allowJs: true +// @checkJs: true + +// @Filename: /a.ts +export default class A {} +export class B {} +export class C {} + +// @Filename: /b.ts +import type A, { B, C } from './a'; + +// @Filename: /a.js +import type A from './a'; +export type { A }; From c048c9ab99685de6a0c13500647817ae9d865a07 Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Thu, 21 Nov 2019 11:37:18 -0800 Subject: [PATCH 23/47] Update updateExportDeclaration API baseline --- tests/baselines/reference/api/tsserverlibrary.d.ts | 4 ++-- tests/baselines/reference/api/typescript.d.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/baselines/reference/api/tsserverlibrary.d.ts b/tests/baselines/reference/api/tsserverlibrary.d.ts index 97909c3fc5740..433ee261443f5 100644 --- a/tests/baselines/reference/api/tsserverlibrary.d.ts +++ b/tests/baselines/reference/api/tsserverlibrary.d.ts @@ -4109,7 +4109,7 @@ declare namespace ts { function createImportDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, importClause: ImportClause | undefined, moduleSpecifier: Expression): ImportDeclaration; function updateImportDeclaration(node: ImportDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, importClause: ImportClause | undefined, moduleSpecifier: Expression): ImportDeclaration; function createImportClause(name: Identifier | undefined, namedBindings: NamedImportBindings | undefined, isTypeOnly?: boolean): ImportClause; - function updateImportClause(node: ImportClause, name: Identifier | undefined, namedBindings: NamedImportBindings | undefined, isTypeOnly?: boolean): ImportClause; + function updateImportClause(node: ImportClause, name: Identifier | undefined, namedBindings: NamedImportBindings | undefined, isTypeOnly: boolean): ImportClause; function createNamespaceImport(name: Identifier): NamespaceImport; function updateNamespaceImport(node: NamespaceImport, name: Identifier): NamespaceImport; function createNamedImports(elements: readonly ImportSpecifier[]): NamedImports; @@ -4119,7 +4119,7 @@ declare namespace ts { function createExportAssignment(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, isExportEquals: boolean | undefined, expression: Expression): ExportAssignment; function updateExportAssignment(node: ExportAssignment, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, expression: Expression): ExportAssignment; function createExportDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, exportClause: NamedExports | undefined, moduleSpecifier?: Expression, isTypeOnly?: boolean): ExportDeclaration; - function updateExportDeclaration(node: ExportDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, exportClause: NamedExports | undefined, moduleSpecifier: Expression | undefined, isTypeOnly?: boolean): ExportDeclaration; + function updateExportDeclaration(node: ExportDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, exportClause: NamedExports | undefined, moduleSpecifier: Expression | undefined, isTypeOnly: boolean): ExportDeclaration; function createNamedExports(elements: readonly ExportSpecifier[]): NamedExports; function updateNamedExports(node: NamedExports, elements: readonly ExportSpecifier[]): NamedExports; function createExportSpecifier(propertyName: string | Identifier | undefined, name: string | Identifier): ExportSpecifier; diff --git a/tests/baselines/reference/api/typescript.d.ts b/tests/baselines/reference/api/typescript.d.ts index bd2fa5def471b..efd5c832e3b8c 100644 --- a/tests/baselines/reference/api/typescript.d.ts +++ b/tests/baselines/reference/api/typescript.d.ts @@ -4109,7 +4109,7 @@ declare namespace ts { function createImportDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, importClause: ImportClause | undefined, moduleSpecifier: Expression): ImportDeclaration; function updateImportDeclaration(node: ImportDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, importClause: ImportClause | undefined, moduleSpecifier: Expression): ImportDeclaration; function createImportClause(name: Identifier | undefined, namedBindings: NamedImportBindings | undefined, isTypeOnly?: boolean): ImportClause; - function updateImportClause(node: ImportClause, name: Identifier | undefined, namedBindings: NamedImportBindings | undefined, isTypeOnly?: boolean): ImportClause; + function updateImportClause(node: ImportClause, name: Identifier | undefined, namedBindings: NamedImportBindings | undefined, isTypeOnly: boolean): ImportClause; function createNamespaceImport(name: Identifier): NamespaceImport; function updateNamespaceImport(node: NamespaceImport, name: Identifier): NamespaceImport; function createNamedImports(elements: readonly ImportSpecifier[]): NamedImports; @@ -4119,7 +4119,7 @@ declare namespace ts { function createExportAssignment(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, isExportEquals: boolean | undefined, expression: Expression): ExportAssignment; function updateExportAssignment(node: ExportAssignment, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, expression: Expression): ExportAssignment; function createExportDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, exportClause: NamedExports | undefined, moduleSpecifier?: Expression, isTypeOnly?: boolean): ExportDeclaration; - function updateExportDeclaration(node: ExportDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, exportClause: NamedExports | undefined, moduleSpecifier: Expression | undefined, isTypeOnly?: boolean): ExportDeclaration; + function updateExportDeclaration(node: ExportDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, exportClause: NamedExports | undefined, moduleSpecifier: Expression | undefined, isTypeOnly: boolean): ExportDeclaration; function createNamedExports(elements: readonly ExportSpecifier[]): NamedExports; function updateNamedExports(node: NamedExports, elements: readonly ExportSpecifier[]): NamedExports; function createExportSpecifier(propertyName: string | Identifier | undefined, name: string | Identifier): ExportSpecifier; From 2227f4e0bc09c367bdf6a5361d10ccba02f10e16 Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Thu, 21 Nov 2019 13:03:22 -0800 Subject: [PATCH 24/47] Fix grammar checking import clauses --- src/compiler/checker.ts | 2 +- .../reference/grammarErrors.errors.txt | 29 +++++++++++++++++++ tests/baselines/reference/grammarErrors.js | 18 ++++++++++++ 3 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 tests/baselines/reference/grammarErrors.errors.txt create mode 100644 tests/baselines/reference/grammarErrors.js diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 4fcf516b9d102..45e671266d8e0 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -32679,7 +32679,7 @@ namespace ts { } if (checkExternalImportOrExportDeclaration(node)) { const importClause = node.importClause; - if (importClause && checkGrammarImportClause(importClause)) { + if (importClause && !checkGrammarImportClause(importClause)) { if (importClause.name) { checkImportBinding(importClause); } diff --git a/tests/baselines/reference/grammarErrors.errors.txt b/tests/baselines/reference/grammarErrors.errors.txt new file mode 100644 index 0000000000000..191ea1ddb2b2a --- /dev/null +++ b/tests/baselines/reference/grammarErrors.errors.txt @@ -0,0 +1,29 @@ +error TS5055: Cannot write file '/a.js' because it would overwrite input file. + Adding a tsconfig.json file will help organize projects that contain both TypeScript and JavaScript files. Learn more at https://aka.ms/tsconfig. +error TS5056: Cannot write file '/a.js' because it would be overwritten by multiple input files. +/a.js(1,1): error TS8009: 'import type' can only be used in a .ts file. +/a.js(2,1): error TS8009: 'export type' can only be used in a .ts file. +/b.ts(1,8): error TS1362: Type-only import can specify a default import or named bindings, but not both. + + +!!! error TS5055: Cannot write file '/a.js' because it would overwrite input file. +!!! error TS5055: Adding a tsconfig.json file will help organize projects that contain both TypeScript and JavaScript files. Learn more at https://aka.ms/tsconfig. +!!! error TS5056: Cannot write file '/a.js' because it would be overwritten by multiple input files. +==== /a.ts (0 errors) ==== + export default class A {} + export class B {} + export class C {} + +==== /b.ts (1 errors) ==== + import type A, { B, C } from './a'; + ~~~~~~~~~~~~~~~~ +!!! error TS1362: Type-only import can specify a default import or named bindings, but not both. + +==== /a.js (2 errors) ==== + import type A from './a'; + ~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS8009: 'import type' can only be used in a .ts file. + export type { A }; + ~~~~~~~~~~~~~~~~~~ +!!! error TS8009: 'export type' can only be used in a .ts file. + \ No newline at end of file diff --git a/tests/baselines/reference/grammarErrors.js b/tests/baselines/reference/grammarErrors.js new file mode 100644 index 0000000000000..bb1e4e1d1ec55 --- /dev/null +++ b/tests/baselines/reference/grammarErrors.js @@ -0,0 +1,18 @@ +//// [tests/cases/conformance/externalModules/typeOnly/grammarErrors.ts] //// + +//// [a.ts] +export default class A {} +export class B {} +export class C {} + +//// [b.ts] +import type A, { B, C } from './a'; + +//// [a.js] +import type A from './a'; +export type { A }; + + +//// [b.js] +"use strict"; +exports.__esModule = true; From 421d333d4a0305bbb354f7bd3eb7082ae97e5599 Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Thu, 21 Nov 2019 13:51:04 -0800 Subject: [PATCH 25/47] Enums, sort of --- src/compiler/checker.ts | 17 +++++++++++ .../externalModules/typeOnly/enums.ts | 29 +++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 tests/cases/conformance/externalModules/typeOnly/enums.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 45e671266d8e0..63d651ca329a1 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -2385,6 +2385,9 @@ namespace ts { if (target.flags & SymbolFlags.ValueModule) { return createNamespaceModuleForModule(target); } + if (target.flags & SymbolFlags.Enum) { + return createNamespaceModuleForEnum(target); + } if (!(target.flags & SymbolFlags.Value)) { return target; } @@ -2396,6 +2399,20 @@ namespace ts { } } + function createNamespaceModuleForEnum(enumSymbol: Symbol) { + Debug.assert(!!(enumSymbol.flags & SymbolFlags.Enum)); + const symbol = createSymbol(SymbolFlags.NamespaceModule | SymbolFlags.TypeAlias, enumSymbol.escapedName); + symbol.immediateTarget = enumSymbol; + symbol.declarations = enumSymbol.declarations; + if (enumSymbol.exports) { + symbol.exports = createSymbolTable(); + enumSymbol.exports.forEach((exportSymbol, key) => { + symbol.exports!.set(key, Debug.assertDefined(createTypeOnlySymbol(exportSymbol))); + }); + } + return symbol; + } + function createNamespaceModuleForModule(moduleSymbol: Symbol) { Debug.assert(!!(moduleSymbol.flags & SymbolFlags.ValueModule)); const filtered = createSymbol(SymbolFlags.NamespaceModule, moduleSymbol.escapedName); diff --git a/tests/cases/conformance/externalModules/typeOnly/enums.ts b/tests/cases/conformance/externalModules/typeOnly/enums.ts new file mode 100644 index 0000000000000..b632bdbce546b --- /dev/null +++ b/tests/cases/conformance/externalModules/typeOnly/enums.ts @@ -0,0 +1,29 @@ +// @Filename: /a.ts +enum SyntaxKind { + ImportClause, + ExportDeclaration +} + +const enum SymbolFlags { + Type = "Type", + Value = "Value" +} + +export type { SyntaxKind }; +export { SymbolFlags }; + +// @Filename: /b.ts +import type { SyntaxKind, SymbolFlags } from './a'; + +SyntaxKind.ImportClause; +SymbolFlags.Type; +let kind: SyntaxKind.ImportClause; +let flags: SymbolFlags; + +type TypeFlag = SymbolFlags.Type; +export type { TypeFlag }; + +// @Filename: /c.ts +import { SymbolFlags } from './a'; +import type { TypeFlag } from './b'; +const flags: TypeFlag = SymbolFlags.Type; From 26704c0a6ef11642fbd8af83aa3675c261af1dc1 Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Thu, 21 Nov 2019 15:49:59 -0800 Subject: [PATCH 26/47] Dedicated error for type-only enum --- src/compiler/checker.ts | 11 +++- src/compiler/diagnosticMessages.json | 12 ++-- tests/baselines/reference/enums.errors.txt | 38 ++++++++++++ tests/baselines/reference/enums.js | 52 ++++++++++++++++ tests/baselines/reference/enums.symbols | 65 ++++++++++++++++++++ tests/baselines/reference/enums.types | 71 ++++++++++++++++++++++ 6 files changed, 244 insertions(+), 5 deletions(-) create mode 100644 tests/baselines/reference/enums.errors.txt create mode 100644 tests/baselines/reference/enums.js create mode 100644 tests/baselines/reference/enums.symbols create mode 100644 tests/baselines/reference/enums.types diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 63d651ca329a1..a3e0a1c1c70bf 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -2036,7 +2036,12 @@ namespace ts { if (meaning & (SymbolFlags.Value & ~SymbolFlags.NamespaceModule & ~SymbolFlags.Type)) { const symbol = resolveSymbol(resolveName(errorLocation, name, SymbolFlags.NamespaceModule & ~SymbolFlags.Value, /*nameNotFoundMessage*/undefined, /*nameArg*/ undefined, /*isUse*/ false)); if (symbol) { - error(errorLocation, Diagnostics.Cannot_use_namespace_0_as_a_value, unescapeLeadingUnderscores(name)); + if (isTypeOnlyEnumAlias(symbol)) { + error(errorLocation, Diagnostics.Type_only_enum_0_cannot_be_used_as_a_value, unescapeLeadingUnderscores(name)); + } + else { + error(errorLocation, Diagnostics.Cannot_use_namespace_0_as_a_value, unescapeLeadingUnderscores(name)); + } return true; } } @@ -8151,6 +8156,10 @@ namespace ts { return isTransientSymbol(symbol) && !!symbol.immediateTarget; } + function isTypeOnlyEnumAlias(symbol: Symbol): ReturnType { + return isTypeOnlyAlias(symbol) && !!(symbol.immediateTarget.flags & SymbolFlags.Enum); + } + function getDeclaredTypeOfTypeAlias(symbol: Symbol): Type { const links = getSymbolLinks(symbol); if (!links.declaredType) { diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index dd0ae54af6da6..0c95285dc90d4 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -1055,21 +1055,25 @@ "category": "Error", "code": 1361 }, - "Type-only import can specify a default import or named bindings, but not both.": { + "Type-only enum '{0}' cannot be used as a value.": { "category": "Error", "code": 1362 }, + "Type-only import can specify a default import or named bindings, but not both.": { + "category": "Error", + "code": 1363 + }, "Convert to type-only export": { "category": "Message", - "code": 1363 + "code": 1364 }, "Convert all re-exported types to type-only exports": { "category": "Message", - "code": 1364 + "code": 1365 }, "Split into two separate import declarations": { "category": "Message", - "code": 1365 + "code": 1366 }, "The types of '{0}' are incompatible between these types.": { diff --git a/tests/baselines/reference/enums.errors.txt b/tests/baselines/reference/enums.errors.txt new file mode 100644 index 0000000000000..e8bb3034fbf20 --- /dev/null +++ b/tests/baselines/reference/enums.errors.txt @@ -0,0 +1,38 @@ +/b.ts(3,1): error TS1362: Type-only enum 'SyntaxKind' cannot be used as a value. +/b.ts(4,1): error TS1362: Type-only enum 'SymbolFlags' cannot be used as a value. + + +==== /a.ts (0 errors) ==== + enum SyntaxKind { + ImportClause, + ExportDeclaration + } + + const enum SymbolFlags { + Type = "Type", + Value = "Value" + } + + export type { SyntaxKind }; + export { SymbolFlags }; + +==== /b.ts (2 errors) ==== + import type { SyntaxKind, SymbolFlags } from './a'; + + SyntaxKind.ImportClause; + ~~~~~~~~~~ +!!! error TS1362: Type-only enum 'SyntaxKind' cannot be used as a value. + SymbolFlags.Type; + ~~~~~~~~~~~ +!!! error TS1362: Type-only enum 'SymbolFlags' cannot be used as a value. + let kind: SyntaxKind.ImportClause; + let flags: SymbolFlags; + + type TypeFlag = SymbolFlags.Type; + export type { TypeFlag }; + +==== /c.ts (0 errors) ==== + import { SymbolFlags } from './a'; + import type { TypeFlag } from './b'; + const flags: TypeFlag = SymbolFlags.Type; + \ No newline at end of file diff --git a/tests/baselines/reference/enums.js b/tests/baselines/reference/enums.js new file mode 100644 index 0000000000000..09243e4a7f134 --- /dev/null +++ b/tests/baselines/reference/enums.js @@ -0,0 +1,52 @@ +//// [tests/cases/conformance/externalModules/typeOnly/enums.ts] //// + +//// [a.ts] +enum SyntaxKind { + ImportClause, + ExportDeclaration +} + +const enum SymbolFlags { + Type = "Type", + Value = "Value" +} + +export type { SyntaxKind }; +export { SymbolFlags }; + +//// [b.ts] +import type { SyntaxKind, SymbolFlags } from './a'; + +SyntaxKind.ImportClause; +SymbolFlags.Type; +let kind: SyntaxKind.ImportClause; +let flags: SymbolFlags; + +type TypeFlag = SymbolFlags.Type; +export type { TypeFlag }; + +//// [c.ts] +import { SymbolFlags } from './a'; +import type { TypeFlag } from './b'; +const flags: TypeFlag = SymbolFlags.Type; + + +//// [a.js] +"use strict"; +exports.__esModule = true; +var SyntaxKind; +(function (SyntaxKind) { + SyntaxKind[SyntaxKind["ImportClause"] = 0] = "ImportClause"; + SyntaxKind[SyntaxKind["ExportDeclaration"] = 1] = "ExportDeclaration"; +})(SyntaxKind || (SyntaxKind = {})); +//// [b.js] +"use strict"; +exports.__esModule = true; +SyntaxKind.ImportClause; +SymbolFlags.Type; +var kind; +var flags; +//// [c.js] +"use strict"; +exports.__esModule = true; +var flags = "Type" /* Type */; diff --git a/tests/baselines/reference/enums.symbols b/tests/baselines/reference/enums.symbols new file mode 100644 index 0000000000000..edac3617acbee --- /dev/null +++ b/tests/baselines/reference/enums.symbols @@ -0,0 +1,65 @@ +=== /a.ts === +enum SyntaxKind { +>SyntaxKind : Symbol(SyntaxKind, Decl(a.ts, 0, 0)) + + ImportClause, +>ImportClause : Symbol(SyntaxKind.ImportClause, Decl(a.ts, 0, 17)) + + ExportDeclaration +>ExportDeclaration : Symbol(SyntaxKind.ExportDeclaration, Decl(a.ts, 1, 15)) +} + +const enum SymbolFlags { +>SymbolFlags : Symbol(SymbolFlags, Decl(a.ts, 3, 1)) + + Type = "Type", +>Type : Symbol(SymbolFlags.Type, Decl(a.ts, 5, 24)) + + Value = "Value" +>Value : Symbol(SymbolFlags.Value, Decl(a.ts, 6, 16)) +} + +export type { SyntaxKind }; +>SyntaxKind : Symbol(SyntaxKind, Decl(a.ts, 10, 13)) + +export { SymbolFlags }; +>SymbolFlags : Symbol(SymbolFlags, Decl(a.ts, 11, 8)) + +=== /b.ts === +import type { SyntaxKind, SymbolFlags } from './a'; +>SyntaxKind : Symbol(SyntaxKind, Decl(b.ts, 0, 13)) +>SymbolFlags : Symbol(SymbolFlags, Decl(b.ts, 0, 25)) + +SyntaxKind.ImportClause; +SymbolFlags.Type; +let kind: SyntaxKind.ImportClause; +>kind : Symbol(kind, Decl(b.ts, 4, 3)) +>SyntaxKind : Symbol(SyntaxKind, Decl(b.ts, 0, 13)) +>ImportClause : Symbol(SyntaxKind.ImportClause) + +let flags: SymbolFlags; +>flags : Symbol(flags, Decl(b.ts, 5, 3)) +>SymbolFlags : Symbol(SymbolFlags, Decl(b.ts, 0, 25)) + +type TypeFlag = SymbolFlags.Type; +>TypeFlag : Symbol(TypeFlag, Decl(b.ts, 5, 23)) +>SymbolFlags : Symbol(SymbolFlags, Decl(b.ts, 0, 25)) +>Type : Symbol(SymbolFlags.Type) + +export type { TypeFlag }; +>TypeFlag : Symbol(TypeFlag, Decl(b.ts, 8, 13)) + +=== /c.ts === +import { SymbolFlags } from './a'; +>SymbolFlags : Symbol(SymbolFlags, Decl(c.ts, 0, 8)) + +import type { TypeFlag } from './b'; +>TypeFlag : Symbol(TypeFlag, Decl(c.ts, 1, 13)) + +const flags: TypeFlag = SymbolFlags.Type; +>flags : Symbol(flags, Decl(c.ts, 2, 5)) +>TypeFlag : Symbol(TypeFlag, Decl(c.ts, 1, 13)) +>SymbolFlags.Type : Symbol(SymbolFlags.Type, Decl(a.ts, 5, 24)) +>SymbolFlags : Symbol(SymbolFlags, Decl(c.ts, 0, 8)) +>Type : Symbol(SymbolFlags.Type, Decl(a.ts, 5, 24)) + diff --git a/tests/baselines/reference/enums.types b/tests/baselines/reference/enums.types new file mode 100644 index 0000000000000..ca79cc6147d4a --- /dev/null +++ b/tests/baselines/reference/enums.types @@ -0,0 +1,71 @@ +=== /a.ts === +enum SyntaxKind { +>SyntaxKind : SyntaxKind + + ImportClause, +>ImportClause : SyntaxKind.ImportClause + + ExportDeclaration +>ExportDeclaration : SyntaxKind.ExportDeclaration +} + +const enum SymbolFlags { +>SymbolFlags : SymbolFlags + + Type = "Type", +>Type : SymbolFlags.Type +>"Type" : "Type" + + Value = "Value" +>Value : SymbolFlags.Value +>"Value" : "Value" +} + +export type { SyntaxKind }; +>SyntaxKind : SyntaxKind + +export { SymbolFlags }; +>SymbolFlags : typeof SymbolFlags + +=== /b.ts === +import type { SyntaxKind, SymbolFlags } from './a'; +>SyntaxKind : SyntaxKind +>SymbolFlags : import("/a").SymbolFlags + +SyntaxKind.ImportClause; +>SyntaxKind.ImportClause : any +>SyntaxKind : any +>ImportClause : any + +SymbolFlags.Type; +>SymbolFlags.Type : any +>SymbolFlags : any +>Type : any + +let kind: SyntaxKind.ImportClause; +>kind : SyntaxKind.ImportClause +>SyntaxKind : any + +let flags: SymbolFlags; +>flags : import("/a").SymbolFlags + +type TypeFlag = SymbolFlags.Type; +>TypeFlag : import("/a").SymbolFlags.Type +>SymbolFlags : any + +export type { TypeFlag }; +>TypeFlag : import("/a").SymbolFlags.Type + +=== /c.ts === +import { SymbolFlags } from './a'; +>SymbolFlags : typeof SymbolFlags + +import type { TypeFlag } from './b'; +>TypeFlag : SymbolFlags.Type + +const flags: TypeFlag = SymbolFlags.Type; +>flags : SymbolFlags.Type +>SymbolFlags.Type : SymbolFlags.Type +>SymbolFlags : typeof SymbolFlags +>Type : SymbolFlags.Type + From e8d4c0801118ecdfce17961ea47e127729cabaf7 Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Fri, 22 Nov 2019 08:00:39 -0800 Subject: [PATCH 27/47] Skip past type-only alias symbols in quick info --- src/compiler/checker.ts | 12 ------------ src/compiler/utilities.ts | 12 ++++++++++++ src/services/symbolDisplay.ts | 8 ++++++++ tests/cases/fourslash/quickInfoTypeOnlyEnum.ts | 18 ++++++++++++++++++ 4 files changed, 38 insertions(+), 12 deletions(-) create mode 100644 tests/cases/fourslash/quickInfoTypeOnlyEnum.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index a3e0a1c1c70bf..bd0487fb420ba 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -978,10 +978,6 @@ namespace ts { return symbol; } - function isTransientSymbol(symbol: Symbol): symbol is TransientSymbol { - return (symbol.flags & SymbolFlags.Transient) !== 0; - } - function getExcludedSymbolFlags(flags: SymbolFlags): SymbolFlags { let result: SymbolFlags = 0; if (flags & SymbolFlags.BlockScopedVariable) result |= SymbolFlags.BlockScopedVariableExcludes; @@ -8152,14 +8148,6 @@ namespace ts { return links.declaredType; } - function isTypeOnlyAlias(symbol: Symbol): symbol is TransientSymbol & { immediateTarget: Symbol } { - return isTransientSymbol(symbol) && !!symbol.immediateTarget; - } - - function isTypeOnlyEnumAlias(symbol: Symbol): ReturnType { - return isTypeOnlyAlias(symbol) && !!(symbol.immediateTarget.flags & SymbolFlags.Enum); - } - function getDeclaredTypeOfTypeAlias(symbol: Symbol): Type { const links = getSymbolLinks(symbol); if (!links.declaredType) { diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index f5754b86d04bb..8b976518bce3b 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -53,6 +53,18 @@ namespace ts { return result; } + export function isTransientSymbol(symbol: Symbol): symbol is TransientSymbol { + return (symbol.flags & SymbolFlags.Transient) !== 0; + } + + export function isTypeOnlyAlias(symbol: Symbol): symbol is TransientSymbol & { immediateTarget: Symbol } { + return isTransientSymbol(symbol) && !!symbol.immediateTarget; + } + + export function isTypeOnlyEnumAlias(symbol: Symbol): ReturnType { + return isTypeOnlyAlias(symbol) && !!(symbol.immediateTarget.flags & SymbolFlags.Enum); + } + const stringWriter = createSingleLineStringWriter(); function createSingleLineStringWriter(): EmitTextWriter { diff --git a/src/services/symbolDisplay.ts b/src/services/symbolDisplay.ts index faff3620d62c2..eba8f0b5d64bc 100644 --- a/src/services/symbolDisplay.ts +++ b/src/services/symbolDisplay.ts @@ -2,6 +2,10 @@ namespace ts.SymbolDisplay { // TODO(drosen): use contextual SemanticMeaning. export function getSymbolKind(typeChecker: TypeChecker, symbol: Symbol, location: Node): ScriptElementKind { + while (isTypeOnlyAlias(symbol)) { + symbol = symbol.immediateTarget; + } + const result = getSymbolKindOfConstructorPropertyMethodAccessorFunctionOrVar(typeChecker, symbol, location); if (result !== ScriptElementKind.unknown) { return result; @@ -124,6 +128,10 @@ namespace ts.SymbolDisplay { export function getSymbolDisplayPartsDocumentationAndSymbolKind(typeChecker: TypeChecker, symbol: Symbol, sourceFile: SourceFile, enclosingDeclaration: Node | undefined, location: Node, semanticMeaning = getMeaningFromLocation(location), alias?: Symbol): SymbolDisplayPartsDocumentationAndSymbolKind { + while (isTypeOnlyAlias(symbol)) { + symbol = symbol.immediateTarget; + } + const displayParts: SymbolDisplayPart[] = []; let documentation: SymbolDisplayPart[] | undefined; let tags: JSDocTagInfo[] | undefined; diff --git a/tests/cases/fourslash/quickInfoTypeOnlyEnum.ts b/tests/cases/fourslash/quickInfoTypeOnlyEnum.ts new file mode 100644 index 0000000000000..a7ca81b01eb5c --- /dev/null +++ b/tests/cases/fourslash/quickInfoTypeOnlyEnum.ts @@ -0,0 +1,18 @@ +/// + +// @Filename: /a.ts +////export enum SyntaxKind { +//// SourceFile +////} + +// @Filename: /b.ts +////import type { SyntaxKind } from './a'; +////let x: SyntaxKind/*1*/; +////let y: SyntaxKind./*2*/SourceFile; + +verify.quickInfoAt("1", [ + "(alias) enum SyntaxKind", + "import SyntaxKind" +].join("\n")); + +verify.quickInfoAt("2", "(enum member) SyntaxKind.SourceFile = 0"); \ No newline at end of file From 1c10aa124071cd2a2e45b20356663184eb263f0d Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Fri, 22 Nov 2019 08:30:20 -0800 Subject: [PATCH 28/47] Update error code in baseline --- tests/baselines/reference/grammarErrors.errors.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/baselines/reference/grammarErrors.errors.txt b/tests/baselines/reference/grammarErrors.errors.txt index 191ea1ddb2b2a..b8772c917c920 100644 --- a/tests/baselines/reference/grammarErrors.errors.txt +++ b/tests/baselines/reference/grammarErrors.errors.txt @@ -3,7 +3,7 @@ error TS5055: Cannot write file '/a.js' because it would overwrite input file. error TS5056: Cannot write file '/a.js' because it would be overwritten by multiple input files. /a.js(1,1): error TS8009: 'import type' can only be used in a .ts file. /a.js(2,1): error TS8009: 'export type' can only be used in a .ts file. -/b.ts(1,8): error TS1362: Type-only import can specify a default import or named bindings, but not both. +/b.ts(1,8): error TS1363: Type-only import can specify a default import or named bindings, but not both. !!! error TS5055: Cannot write file '/a.js' because it would overwrite input file. @@ -17,7 +17,7 @@ error TS5056: Cannot write file '/a.js' because it would be overwritten by multi ==== /b.ts (1 errors) ==== import type A, { B, C } from './a'; ~~~~~~~~~~~~~~~~ -!!! error TS1362: Type-only import can specify a default import or named bindings, but not both. +!!! error TS1363: Type-only import can specify a default import or named bindings, but not both. ==== /a.js (2 errors) ==== import type A from './a'; From 16c253429e7558c378faca89166bb8c21b5541a5 Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Fri, 22 Nov 2019 10:32:58 -0800 Subject: [PATCH 29/47] WIP: convertToTypeOnlyExport --- src/compiler/core.ts | 7 ++++ .../codefixes/convertToTypeOnlyExport.ts | 33 ++++++++++++---- src/services/utilities.ts | 38 +++++++++++++++++++ 3 files changed, 71 insertions(+), 7 deletions(-) diff --git a/src/compiler/core.ts b/src/compiler/core.ts index d03b7e1c85c7b..fe2cdca19fce4 100644 --- a/src/compiler/core.ts +++ b/src/compiler/core.ts @@ -1584,6 +1584,13 @@ namespace ts { return compareComparableValues(a, b); } + /** + * Compare two TextSpans, first by `start`, then by `length`. + */ + export function compareTextSpans(a: Partial | undefined, b: Partial | undefined): Comparison { + return compareValues(a?.start, b?.start) || compareValues(a?.length, b?.length); + } + export function min(a: T, b: T, compare: Comparer): T { return compare(a, b) === Comparison.LessThan ? a : b; } diff --git a/src/services/codefixes/convertToTypeOnlyExport.ts b/src/services/codefixes/convertToTypeOnlyExport.ts index fe726c6f3655e..2461fb3462f22 100644 --- a/src/services/codefixes/convertToTypeOnlyExport.ts +++ b/src/services/codefixes/convertToTypeOnlyExport.ts @@ -1,11 +1,11 @@ /* @internal */ namespace ts.codefix { - const errorCodes = [Diagnostics.Re_exporting_a_type_when_the_isolatedModules_flag_is_provided_requires_using_an_explicit_type_only_export.code]; + const errorCode = Diagnostics.Re_exporting_a_type_when_the_isolatedModules_flag_is_provided_requires_using_an_explicit_type_only_export.code; const fixId = "convertToTypeOnlyExport"; registerCodeFix({ - errorCodes, + errorCodes: [errorCode], getCodeActions: context => { - const changes = textChanges.ChangeTracker.with(context, t => fixSingleExport(t, context)); + const changes = textChanges.ChangeTracker.with(context, t => fixSingleExportDeclaration(t, context)); if (changes.length) { return [createCodeFixAction(fixId, changes, Diagnostics.Convert_to_type_only_export, fixId, Diagnostics.Convert_all_re_exported_types_to_type_only_exports)]; } @@ -16,10 +16,15 @@ namespace ts.codefix { // }) }); - function fixSingleExport(changes: textChanges.ChangeTracker, { sourceFile, span }: CodeFixContext) { + function fixSingleExportDeclaration(changes: textChanges.ChangeTracker, context: CodeFixContext) { + const { sourceFile, span } = context; const exportSpecifier = tryCast(getTokenAtPosition(sourceFile, span.start).parent, isExportSpecifier); - const exportDeclaration = exportSpecifier?.parent.parent; - if (exportDeclaration?.exportClause?.elements.length === 1) { + if (!exportSpecifier) { + return; + } + + if (everyExportSpecifierIsType(exportSpecifier, context)) { + const exportDeclaration = exportSpecifier.parent.parent; changes.replaceNode( sourceFile, exportDeclaration, @@ -32,7 +37,21 @@ namespace ts.codefix { /*isTypeOnly*/ true)); } else { - // TODO: update individual export specifier + // TODO: split export declaration + } + } + + function everyExportSpecifierIsType(targetExportSpecifier: ExportSpecifier, context: CodeFixContext) { + const exportClause = targetExportSpecifier.parent; + if (exportClause.elements.length === 1) { + return true; } + const diagnostics = getDiagnosticsWithinSpan( + createTextSpanFromNode(exportClause), + context.program.getSemanticDiagnostics(context.sourceFile, context.cancellationToken)); + + return every( + exportClause.elements, + element => findDiagnosticForNode(element, diagnostics)?.code === errorCode); } } diff --git a/src/services/utilities.ts b/src/services/utilities.ts index 315f61c967d92..0093654d98c4d 100644 --- a/src/services/utilities.ts +++ b/src/services/utilities.ts @@ -2290,4 +2290,42 @@ namespace ts { export function isInsideNodeModules(fileOrDirectory: string): boolean { return contains(getPathComponents(fileOrDirectory), "node_modules"); } + + export function isDiagnosticWithLocation(diagnostic: Diagnostic): diagnostic is DiagnosticWithLocation { + return diagnostic.file !== undefined && diagnostic.start !== undefined && diagnostic.length !== undefined; + } + + export function findDiagnosticForNode(node: Node, sortedFileDiagnostics: readonly Diagnostic[]): DiagnosticWithLocation | undefined { + const span: Partial = createTextSpanFromNode(node); + const index = binarySearchKey(sortedFileDiagnostics, span, identity, compareTextSpans); + if (index >= 0) { + const diagnostic = sortedFileDiagnostics[index]; + Debug.assertEqual(diagnostic.file, node.getSourceFile(), "Diagnostics proided to 'findDiagnosticForNode' must be from a single SourceFile"); + return cast(diagnostic, isDiagnosticWithLocation); + } + } + + export function getDiagnosticsWithinSpan(span: TextSpan, sortedFileDiagnostics: readonly Diagnostic[]): readonly DiagnosticWithLocation[] { + let index = binarySearchKey(sortedFileDiagnostics, span.start, diag => diag.start, compareValues); + if (index < 0) { + index = ~index; + } + while (sortedFileDiagnostics[index - 1]?.start === span.start) { + index--; + } + + const result: DiagnosticWithLocation[] = []; + const end = textSpanEnd(span); + while (true) { + const diagnostic = tryCast(sortedFileDiagnostics[index], isDiagnosticWithLocation); + if (!diagnostic || diagnostic.start > end) { + break; + } + if (textSpanContainsTextSpan(span, diagnostic)) { + result.push(diagnostic); + } + } + + return result; + } } From debc8cb7236924eba4974f42d01d0abc967d6138 Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Fri, 22 Nov 2019 14:37:31 -0800 Subject: [PATCH 30/47] isolatedModules codefix (single export declaration) --- .../codefixes/convertToTypeOnlyExport.ts | 38 ++++++++++++++----- src/services/symbolDisplay.ts | 2 - src/services/utilities.ts | 1 + ....ts => codeFixConvertToTypeOnlyExport1.ts} | 10 +++-- .../codeFixConvertToTypeOnlyExport2.ts | 22 +++++++++++ 5 files changed, 57 insertions(+), 16 deletions(-) rename tests/cases/fourslash/{codeFixConvertToTypeOnlyExport.ts => codeFixConvertToTypeOnlyExport1.ts} (71%) create mode 100644 tests/cases/fourslash/codeFixConvertToTypeOnlyExport2.ts diff --git a/src/services/codefixes/convertToTypeOnlyExport.ts b/src/services/codefixes/convertToTypeOnlyExport.ts index 2461fb3462f22..46f602195c222 100644 --- a/src/services/codefixes/convertToTypeOnlyExport.ts +++ b/src/services/codefixes/convertToTypeOnlyExport.ts @@ -23,8 +23,10 @@ namespace ts.codefix { return; } - if (everyExportSpecifierIsType(exportSpecifier, context)) { - const exportDeclaration = exportSpecifier.parent.parent; + const exportClause = exportSpecifier.parent; + const exportDeclaration = exportClause.parent; + const typeExportSpecifiers = getTypeExportSpecifiers(exportSpecifier, context); + if (typeExportSpecifiers.length === exportClause.elements.length) { changes.replaceNode( sourceFile, exportDeclaration, @@ -32,26 +34,42 @@ namespace ts.codefix { exportDeclaration, exportDeclaration.decorators, exportDeclaration.modifiers, - exportDeclaration.exportClause, + exportClause, exportDeclaration.moduleSpecifier, /*isTypeOnly*/ true)); } else { - // TODO: split export declaration + const valueExportDeclaration = updateExportDeclaration( + exportDeclaration, + exportDeclaration.decorators, + exportDeclaration.modifiers, + updateNamedExports(exportClause, filter(exportClause.elements, e => !contains(typeExportSpecifiers, e))), + exportDeclaration.moduleSpecifier, + /*isTypeOnly*/ false); + const typeExportDeclaration = createExportDeclaration( + /*decorators*/ undefined, + /*modifiers*/ undefined, + createNamedExports(typeExportSpecifiers), + exportDeclaration.moduleSpecifier, + /*isTypeOnly*/ true); + + changes.replaceNode(sourceFile, exportDeclaration, valueExportDeclaration); + changes.insertNodeAfter(sourceFile, exportDeclaration, typeExportDeclaration); } } - function everyExportSpecifierIsType(targetExportSpecifier: ExportSpecifier, context: CodeFixContext) { - const exportClause = targetExportSpecifier.parent; + function getTypeExportSpecifiers(originExportSpecifier: ExportSpecifier, context: CodeFixContext): readonly ExportSpecifier[] { + const exportClause = originExportSpecifier.parent; if (exportClause.elements.length === 1) { - return true; + return exportClause.elements; } + const diagnostics = getDiagnosticsWithinSpan( createTextSpanFromNode(exportClause), context.program.getSemanticDiagnostics(context.sourceFile, context.cancellationToken)); - return every( - exportClause.elements, - element => findDiagnosticForNode(element, diagnostics)?.code === errorCode); + return filter(exportClause.elements, element => { + return element === originExportSpecifier || findDiagnosticForNode(element, diagnostics)?.code === errorCode; + }); } } diff --git a/src/services/symbolDisplay.ts b/src/services/symbolDisplay.ts index eba8f0b5d64bc..d71afe7c39553 100644 --- a/src/services/symbolDisplay.ts +++ b/src/services/symbolDisplay.ts @@ -19,8 +19,6 @@ namespace ts.SymbolDisplay { if (flags & SymbolFlags.Enum) return ScriptElementKind.enumElement; if (flags & SymbolFlags.TypeAlias) return ScriptElementKind.typeElement; if (flags & SymbolFlags.Interface) return ScriptElementKind.interfaceElement; - if (flags & SymbolFlags.TypeParameter) return ScriptElementKind.typeParameterElement; - if (flags & SymbolFlags.TypeParameter) return ScriptElementKind.typeParameterElement; if (flags & SymbolFlags.EnumMember) return ScriptElementKind.enumMemberElement; if (flags & SymbolFlags.Alias) return ScriptElementKind.alias; diff --git a/src/services/utilities.ts b/src/services/utilities.ts index 0093654d98c4d..ca88a5e0ce0ac 100644 --- a/src/services/utilities.ts +++ b/src/services/utilities.ts @@ -2324,6 +2324,7 @@ namespace ts { if (textSpanContainsTextSpan(span, diagnostic)) { result.push(diagnostic); } + index++; } return result; diff --git a/tests/cases/fourslash/codeFixConvertToTypeOnlyExport.ts b/tests/cases/fourslash/codeFixConvertToTypeOnlyExport1.ts similarity index 71% rename from tests/cases/fourslash/codeFixConvertToTypeOnlyExport.ts rename to tests/cases/fourslash/codeFixConvertToTypeOnlyExport1.ts index 52bfd625df12d..3e464c3d97138 100644 --- a/tests/cases/fourslash/codeFixConvertToTypeOnlyExport.ts +++ b/tests/cases/fourslash/codeFixConvertToTypeOnlyExport1.ts @@ -4,13 +4,15 @@ // @Filename: /a.ts ////export type A = {}; +////export type B = {}; // @Filename: /b.ts -////export { /**/A } from './a'; +////export { A, B } from './a'; -goTo.file('/b.ts'); +goTo.file("/b.ts"); verify.codeFix({ - errorCode: ts.Diagnostics.Re_exporting_a_type_when_the_isolatedModules_flag_is_provided_requires_using_an_explicit_type_only_export.code, + index: 0, description: ts.Diagnostics.Convert_to_type_only_export.message, - newFileContent: `export type { A } from './a';` + errorCode: ts.Diagnostics.Re_exporting_a_type_when_the_isolatedModules_flag_is_provided_requires_using_an_explicit_type_only_export.code, + newFileContent: "export type { A, B } from './a';" }); diff --git a/tests/cases/fourslash/codeFixConvertToTypeOnlyExport2.ts b/tests/cases/fourslash/codeFixConvertToTypeOnlyExport2.ts new file mode 100644 index 0000000000000..10de257009fb4 --- /dev/null +++ b/tests/cases/fourslash/codeFixConvertToTypeOnlyExport2.ts @@ -0,0 +1,22 @@ +/// + +// @isolatedModules: true + +// @Filename: /a.ts +////export type A = {}; +////export const B = {}; +////export type C = {}; + +// @Filename: /b.ts +////export { A, B, C } from './a'; + +goTo.file("/b.ts"); +verify.codeFix({ + index: 0, + description: ts.Diagnostics.Convert_to_type_only_export.message, + errorCode: ts.Diagnostics.Re_exporting_a_type_when_the_isolatedModules_flag_is_provided_requires_using_an_explicit_type_only_export.code, + newFileContent: +`export { B } from './a'; +export type { A, C } from './a'; +` +}); From ae00f7545cacd74be3537d4294c49c06eb6241f1 Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Fri, 22 Nov 2019 14:53:42 -0800 Subject: [PATCH 31/47] isolatedModules code fix (all) --- .../codefixes/convertToTypeOnlyExport.ts | 36 +++++++++++-------- .../codeFixConvertToTypeOnlyExport3.ts | 29 +++++++++++++++ 2 files changed, 51 insertions(+), 14 deletions(-) create mode 100644 tests/cases/fourslash/codeFixConvertToTypeOnlyExport3.ts diff --git a/src/services/codefixes/convertToTypeOnlyExport.ts b/src/services/codefixes/convertToTypeOnlyExport.ts index 46f602195c222..d5a9030523b2a 100644 --- a/src/services/codefixes/convertToTypeOnlyExport.ts +++ b/src/services/codefixes/convertToTypeOnlyExport.ts @@ -1,24 +1,32 @@ /* @internal */ namespace ts.codefix { - const errorCode = Diagnostics.Re_exporting_a_type_when_the_isolatedModules_flag_is_provided_requires_using_an_explicit_type_only_export.code; + const errorCodes = [Diagnostics.Re_exporting_a_type_when_the_isolatedModules_flag_is_provided_requires_using_an_explicit_type_only_export.code]; const fixId = "convertToTypeOnlyExport"; registerCodeFix({ - errorCodes: [errorCode], + errorCodes, getCodeActions: context => { - const changes = textChanges.ChangeTracker.with(context, t => fixSingleExportDeclaration(t, context)); + const changes = textChanges.ChangeTracker.with(context, t => fixSingleExportDeclaration(t, getExportSpecifierForDiagnosticSpan(context.span, context.sourceFile), context)); if (changes.length) { return [createCodeFixAction(fixId, changes, Diagnostics.Convert_to_type_only_export, fixId, Diagnostics.Convert_all_re_exported_types_to_type_only_exports)]; } }, fixIds: [fixId], - // getAllCodeActions: context => codeFixAll(context, errorCodes, (changes, diag) => { - // // TODO - // }) + getAllCodeActions: context => { + const fixedExportDeclarations = createMap(); + return codeFixAll(context, errorCodes, (changes, diag) => { + const exportSpecifier = getExportSpecifierForDiagnosticSpan(diag, context.sourceFile); + if (exportSpecifier && !addToSeen(fixedExportDeclarations, getNodeId(exportSpecifier.parent.parent))) { + fixSingleExportDeclaration(changes, exportSpecifier, context); + } + }); + } }); - function fixSingleExportDeclaration(changes: textChanges.ChangeTracker, context: CodeFixContext) { - const { sourceFile, span } = context; - const exportSpecifier = tryCast(getTokenAtPosition(sourceFile, span.start).parent, isExportSpecifier); + function getExportSpecifierForDiagnosticSpan(span: TextSpan, sourceFile: SourceFile) { + return tryCast(getTokenAtPosition(sourceFile, span.start).parent, isExportSpecifier); + } + + function fixSingleExportDeclaration(changes: textChanges.ChangeTracker, exportSpecifier: ExportSpecifier | undefined, context: CodeFixContextBase) { if (!exportSpecifier) { return; } @@ -28,7 +36,7 @@ namespace ts.codefix { const typeExportSpecifiers = getTypeExportSpecifiers(exportSpecifier, context); if (typeExportSpecifiers.length === exportClause.elements.length) { changes.replaceNode( - sourceFile, + context.sourceFile, exportDeclaration, updateExportDeclaration( exportDeclaration, @@ -53,12 +61,12 @@ namespace ts.codefix { exportDeclaration.moduleSpecifier, /*isTypeOnly*/ true); - changes.replaceNode(sourceFile, exportDeclaration, valueExportDeclaration); - changes.insertNodeAfter(sourceFile, exportDeclaration, typeExportDeclaration); + changes.replaceNode(context.sourceFile, exportDeclaration, valueExportDeclaration); + changes.insertNodeAfter(context.sourceFile, exportDeclaration, typeExportDeclaration); } } - function getTypeExportSpecifiers(originExportSpecifier: ExportSpecifier, context: CodeFixContext): readonly ExportSpecifier[] { + function getTypeExportSpecifiers(originExportSpecifier: ExportSpecifier, context: CodeFixContextBase): readonly ExportSpecifier[] { const exportClause = originExportSpecifier.parent; if (exportClause.elements.length === 1) { return exportClause.elements; @@ -69,7 +77,7 @@ namespace ts.codefix { context.program.getSemanticDiagnostics(context.sourceFile, context.cancellationToken)); return filter(exportClause.elements, element => { - return element === originExportSpecifier || findDiagnosticForNode(element, diagnostics)?.code === errorCode; + return element === originExportSpecifier || findDiagnosticForNode(element, diagnostics)?.code === errorCodes[0]; }); } } diff --git a/tests/cases/fourslash/codeFixConvertToTypeOnlyExport3.ts b/tests/cases/fourslash/codeFixConvertToTypeOnlyExport3.ts new file mode 100644 index 0000000000000..f90e0657d511d --- /dev/null +++ b/tests/cases/fourslash/codeFixConvertToTypeOnlyExport3.ts @@ -0,0 +1,29 @@ +/// + +// @isolatedModules: true + +// @Filename: /a.ts +////export type T1 = {}; +////export const V1 = {}; +////export type T2 = {}; + +// @Filename: /b.ts +////export type T3 = {}; +////export const V2 = {}; +////export type T4 = {}; + +// @Filename: /c.ts +////export { T1, V1, T2 } from './a'; +////export { T3, V2, T4 } from './b'; + +goTo.file("/c.ts"); +verify.codeFixAll({ + fixAllDescription: ts.Diagnostics.Convert_all_re_exported_types_to_type_only_exports.message, + fixId: "convertToTypeOnlyExport", + newFileContent: +`export { V1 } from './a'; +export type { T1, T2 } from './a'; +export { V2 } from './b'; +export type { T3, T4 } from './b'; +` +}); From f823bf554e7cc562a5c038aaa4ac25a666cf4a17 Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Mon, 25 Nov 2019 10:31:22 -0800 Subject: [PATCH 32/47] Stop eliding non-type-only imports by default, add compiler flag --- src/compiler/checker.ts | 2 +- src/compiler/commandLineParser.ts | 7 +++++ src/compiler/diagnosticMessages.json | 6 +++- src/compiler/transformers/ts.ts | 30 +++++++++++++++---- src/compiler/types.ts | 1 + src/compiler/utilities.ts | 2 +- .../codefixes/convertToTypeOnlyExport.ts | 2 +- .../reference/aliasOnMergedModuleInterface.js | 2 ++ .../reference/aliasUsageInAccessorsOfClass.js | 1 + .../baselines/reference/aliasUsageInArray.js | 1 + .../aliasUsageInFunctionExpression.js | 1 + .../reference/aliasUsageInGenericFunction.js | 1 + .../reference/aliasUsageInIndexerOfClass.js | 1 + .../reference/aliasUsageInObjectLiteral.js | 1 + .../reference/aliasUsageInOrExpression.js | 1 + ...aliasUsageInTypeArgumentOfExtendsClause.js | 1 + .../reference/aliasUsageInVarAssignment.js | 2 ++ ...aceExportAssignmentUsedInVarInitializer.js | 1 + .../allowImportClausesToMergeWithTypes.js | 1 + ...ltImportsCanPaintCrossModuleDeclaration.js | 1 + .../reference/ambientDeclarationsExternal.js | 2 ++ .../ambientDeclarationsPatterns_merging1.js | 2 ++ .../ambientDeclarationsPatterns_merging2.js | 2 ++ .../ambientDeclarationsPatterns_merging3.js | 1 + .../reference/ambientShorthand_duplicate.js | 3 ++ .../reference/ambientShorthand_merging.js | 3 ++ .../amdImportNotAsPrimaryExpression.js | 2 +- .../reference/amdModuleConstEnumUsage.js | 2 +- .../reference/api/tsserverlibrary.d.ts | 1 + tests/baselines/reference/api/typescript.d.ts | 1 + .../reference/arrayOfExportedClass.js | 2 ++ .../asyncAwaitIsolatedModules_es6.js | 1 + .../reference/asyncImportedPromise_es6.js | 1 + .../reference/augmentExportEquals1.js | 4 +-- .../reference/augmentExportEquals1_1.js | 4 +-- .../reference/augmentExportEquals2.js | 4 +-- .../reference/augmentExportEquals2_1.js | 4 +-- .../reference/augmentExportEquals5.js | 4 +-- .../reference/augmentExportEquals6_1.js | 4 +-- .../reference/badExternalModuleReference.js | 2 +- tests/baselines/reference/bangInModuleName.js | 2 +- .../reference/cachedModuleResolution1.js | 2 ++ .../reference/cachedModuleResolution2.js | 2 ++ .../reference/cachedModuleResolution3.js | 2 ++ .../reference/cachedModuleResolution4.js | 2 ++ .../reference/cachedModuleResolution5.js | 2 ++ .../reference/cachedModuleResolution6.js | 2 ++ .../reference/cachedModuleResolution7.js | 2 ++ .../reference/cachedModuleResolution8.js | 2 ++ .../reference/cachedModuleResolution9.js | 2 ++ ...ileSystemWithCapsImportTypeDeclarations.js | 3 ++ tests/baselines/reference/chained.js | 2 ++ .../reference/circularReferenceInImport.js | 1 + .../reference/commentOnImportStatement1.js | 2 +- .../reference/commentOnImportStatement2.js | 2 ++ .../reference/commentOnImportStatement3.js | 2 ++ .../reference/commentsMultiModuleMultiFile.js | 2 +- .../commonJSImportNotAsPrimaryExpression.js | 1 + .../commonJsImportClassExpression.js | 1 + .../reference/constEnumExternalModule.js | 2 +- ...nstEnumNamespaceReferenceCausesNoImport.js | 1 + .../reference/constEnumNoEmitReexport.js | 6 ++++ .../constEnumNoPreserveDeclarationReexport.js | 3 ++ .../declFileAliasUseBeforeDeclaration.js | 1 + ...tExternalModuleWithSingleExportedModule.js | 2 ++ ...lFileExportAssignmentOfGenericInterface.js | 2 +- .../reference/declFileExportImportChain.js | 2 +- .../reference/declFileExportImportChain2.js | 2 +- .../declarationEmitAliasExportStar.js | 1 + .../declarationEmitAliasFromIndirectFile.js | 1 + ...larationEmitBundleWithAmbientReferences.js | 4 +-- ...rationEmitExportAliasVisibiilityMarking.js | 1 + ...arationEmitForGlobalishSpecifierSymlink.js | 1 + ...rationEmitForGlobalishSpecifierSymlink2.js | 1 + .../declarationEmitInferredTypeAlias5.js | 1 + ...clarationEmitQualifiedAliasTypeArgument.js | 1 + ...clarationsForIndirectTypeAliasReference.js | 1 + .../decoratedClassFromExternalModule.js | 1 + .../reference/decoratorOnImportEquals2.js | 1 + .../reference/duplicatePackage_globalMerge.js | 4 +++ ...icatePackage_packageIdIncludesSubModule.js | 2 ++ .../duplicatePackage_referenceTypes.js | 1 + .../reference/duplicatePackage_subModule.js | 1 + .../reference/duplicatePackage_withErrors.js | 2 ++ tests/baselines/reference/dynamicNames.js | 1 + .../reference/emptyDeclarationEmitIsModule.js | 2 ++ tests/baselines/reference/enums.js | 1 + .../reference/errorWithSameNameType.js | 2 ++ .../reference/errorsOnImportedSymbol.js | 1 + .../es5ModuleInternalNamedImports.js | 2 +- .../reference/es6ExportAssignment2.js | 1 + .../reference/es6ExportAssignment3.js | 1 + .../reference/es6ExportAssignment4.js | 1 + .../reference/es6ExportEqualsInterop.js | 15 ++++++++++ .../reference/es6ImportDefaultBinding.js | 1 + .../reference/es6ImportDefaultBindingAmd.js | 2 +- .../reference/es6ImportDefaultBindingDts.js | 1 + ...rtDefaultBindingFollowedWithNamedImport.js | 1 + ...efaultBindingFollowedWithNamedImportDts.js | 1 + ...indingFollowedWithNamedImportWithExport.js | 2 +- .../reference/es6ImportDefaultBindingInEs5.js | 1 + .../es6ImportDefaultBindingMergeErrors.js | 3 ++ ...s6ImportDefaultBindingNoDefaultProperty.js | 1 + .../es6ImportDefaultBindingWithExport.js | 2 +- .../reference/es6ImportEqualsDeclaration.js | 1 + .../reference/es6ImportEqualsDeclaration2.js | 1 + .../reference/es6ImportNameSpaceImport.js | 1 + .../reference/es6ImportNameSpaceImportAmd.js | 2 +- .../reference/es6ImportNameSpaceImportDts.js | 1 + .../es6ImportNameSpaceImportInEs5.js | 1 + .../es6ImportNameSpaceImportMergeErrors.js | 4 +++ .../es6ImportNameSpaceImportNoNamedExports.js | 1 + .../es6ImportNameSpaceImportWithExport.js | 2 +- .../reference/es6ImportNamedImport.js | 5 ++++ .../reference/es6ImportNamedImportAmd.js | 2 +- .../reference/es6ImportNamedImportDts.js | 4 +++ .../es6ImportNamedImportIdentifiersParsing.js | 5 ++++ .../reference/es6ImportNamedImportInEs5.js | 5 ++++ .../es6ImportNamedImportMergeErrors.js | 6 ++++ .../es6ImportNamedImportNoExportMember.js | 2 ++ .../es6ImportNamedImportNoNamedExports.js | 2 ++ .../es6ImportNamedImportParsingError.js | 2 ++ .../es6ImportNamedImportWithExport.js | 4 +++ .../reference/es6modulekindWithES5Target10.js | 1 + .../esnextmodulekindWithES5Target10.js | 1 + .../reference/exportAssignClassAndModule.js | 2 ++ .../exportAssignedTypeAsTypeAnnotation.js | 2 +- .../reference/exportAssignmentInterface.js | 2 +- ...tAssignmentMembersVisibleInAugmentation.js | 2 ++ .../exportAssignmentMergedInterface.js | 2 +- ...xportAssignmentOfDeclaredExternalModule.js | 2 ++ ...ithoutAllowSyntheticDefaultImportsError.js | 1 + .../exportClassExtendingIntersection.js | 1 + .../baselines/reference/exportDeclaration.js | 1 + .../exportDeclaration_moduleSpecifier.js | 1 + .../reference/exportDefaultInterface.js | 1 + .../exportImportNonInstantiatedModule2.js | 4 +-- .../reference/exportSpellingSuggestion.js | 1 + ...sAndImportsWithContextualKeywordNames01.js | 3 ++ ...sAndImportsWithContextualKeywordNames02.js | 2 ++ ...xtendingClassFromAliasAndUsageInIndexer.js | 1 + .../reference/extendsUntypedModule.js | 1 + .../functionAndImportNameConflict.js | 1 + tests/baselines/reference/generic.js | 1 + .../importCallExpressionCheckReturntype1.js | 2 ++ .../importCallExpressionDeclarationEmit3.js | 1 + .../importCallExpressionIncorrect1.js | 1 + .../importCallExpressionIncorrect2.js | 1 + .../importCallExpressionReturnPromiseOfAny.js | 1 + tests/baselines/reference/importDecl.js | 1 + ...eclRefereingExternalModuleWithNoResolve.js | 1 + tests/baselines/reference/importDeclTypes.js | 1 + .../importDeclarationUsedAsTypeQuery.js | 2 ++ .../reference/importDefaultNamedType.js | 1 + .../importEmptyFromModuleNotExisted.js | 1 + .../reference/importImportOnlyModule.js | 2 +- .../reference/importNonStringLiteral.js | 1 + .../importWithTrailingSlash_noResolve.js | 1 + ...-referenecing-aliased-type-throug-array.js | 2 +- .../importedAliasesInTypePositions.js | 2 +- tests/baselines/reference/inferenceLimit.js | 1 + .../isolatedModulesReExportType.errors.txt | 8 ++--- .../reference/isolatedModulesReExportType.js | 3 ++ .../isolatedModules_resolveJsonModule.js | 1 + .../jsDeclarationsFunctionLikeClasses.js | 1 + .../jsxFactoryNotIdentifierOrQualifiedName.js | 1 + ...jsxFactoryNotIdentifierOrQualifiedName2.js | 1 + .../reference/mergeWithImportedNamespace.js | 1 + .../reference/mergeWithImportedType.js | 1 + .../reference/mergedDeclarations7.js | 1 + .../reference/metadataOfClassFromAlias2.js | 1 + .../reference/metadataOfEventAlias.js | 1 + .../missingSemicolonInModuleSpecifier.js | 1 + ...gmentationCollidingNamesInAugmentation1.js | 2 +- .../moduleAugmentationDeclarationEmit1.js | 1 + .../moduleAugmentationDisallowedExtensions.js | 1 + ...AugmentationDuringSyntheticDefaultCheck.js | 2 ++ .../moduleAugmentationExtendAmbientModule1.js | 2 ++ .../moduleAugmentationExtendFileModule1.js | 1 + .../reference/moduleAugmentationGlobal1.js | 1 + .../reference/moduleAugmentationGlobal2.js | 2 ++ .../reference/moduleAugmentationGlobal3.js | 2 ++ .../moduleAugmentationImportsAndExports1.js | 2 ++ .../moduleAugmentationImportsAndExports2.js | 1 + .../moduleAugmentationImportsAndExports3.js | 1 + .../moduleAugmentationImportsAndExports4.js | 2 ++ .../moduleAugmentationImportsAndExports5.js | 2 ++ .../moduleAugmentationImportsAndExports6.js | 2 ++ .../moduleAugmentationInAmbientModule1.js | 1 + .../moduleAugmentationInAmbientModule2.js | 1 + .../moduleAugmentationInAmbientModule3.js | 1 + .../moduleAugmentationInAmbientModule4.js | 1 + .../reference/moduleAugmentationNoNewNames.js | 1 + .../reference/moduleAugmentationOfAlias.js | 1 + .../moduleAugmentationsBundledOutput1.js | 4 +-- .../reference/moduleAugmentationsImports1.js | 4 +-- .../reference/moduleAugmentationsImports2.js | 6 ++-- .../reference/moduleAugmentationsImports3.js | 4 +-- .../reference/moduleAugmentationsImports4.js | 2 +- ...tionExportStarShadowingGlobalIsNameable.js | 1 + .../moduleImportedForTypeArgumentPosition.js | 2 +- .../reference/moduleInTypePosition1.js | 2 ++ ...duleLocalImportNotIncorrectlyRedirected.js | 1 + .../moduleMemberMissingErrorIsRelative.js | 1 + .../reference/moduleResolutionNoResolve.js | 1 + .../reference/moduleResolutionNoTs.js | 7 +++++ ...ionPackageIdWithRelativeAndAbsolutePath.js | 2 ++ .../moduleResolutionWithExtensions.js | 3 ++ ...leResolutionWithExtensions_notSupported.js | 3 ++ ...eResolutionWithExtensions_notSupported2.js | 1 + ...eResolutionWithExtensions_notSupported3.js | 1 + ...moduleResolutionWithExtensions_preferTs.js | 1 + ...lutionWithExtensions_withAmbientPresent.js | 2 ++ .../reference/moduleResolutionWithSymlinks.js | 2 ++ ...moduleResolutionWithSymlinks_withOutDir.js | 2 ++ ...uleResolution_explicitNodeModulesImport.js | 1 + ...n_explicitNodeModulesImport_implicitAny.js | 1 + ...Resolution_packageJson_notAtPackageRoot.js | 1 + ...Json_notAtPackageRoot_fakeScopedPackage.js | 1 + ...uleResolution_packageJson_scopedPackage.js | 1 + ...Resolution_packageJson_yesAtPackageRoot.js | 1 + ...Json_yesAtPackageRoot_fakeScopedPackage.js | 1 + ...esAtPackageRoot_mainFieldInSubDirectory.js | 1 + .../moduleResolution_relativeImportJsFile.js | 1 + ...tion_relativeImportJsFile_noImplicitAny.js | 1 + .../namespaceMergedWithImportAliasNoCrash.js | 1 + .../reference/noBundledEmitFromNodeModules.js | 7 +++-- .../reference/noCrashOnImportShadowing.js | 1 + tests/baselines/reference/nodeResolution1.js | 1 + tests/baselines/reference/nodeResolution2.js | 1 + tests/baselines/reference/nodeResolution3.js | 1 + tests/baselines/reference/nodeResolution4.js | 1 + tests/baselines/reference/nodeResolution5.js | 1 + tests/baselines/reference/nodeResolution6.js | 1 + tests/baselines/reference/nodeResolution7.js | 1 + tests/baselines/reference/nodeResolution8.js | 1 + .../nounusedTypeParameterConstraint.js | 1 + .../packageJsonMain_isNonRecursive.js | 1 + ...thMappingBasedModuleResolution8_classic.js | 2 +- .../pathMappingBasedModuleResolution8_node.js | 1 + ...duleResolution_rootImport_aliasWithRoot.js | 2 ++ ...Import_aliasWithRoot_differentRootTypes.js | 18 +++++++++++ ...ootImport_aliasWithRoot_multipleAliases.js | 2 ++ ...n_rootImport_aliasWithRoot_realRootFile.js | 2 ++ ...leResolution_rootImport_noAliasWithRoot.js | 2 ++ ...rootImport_noAliasWithRoot_realRootFile.js | 2 ++ ...pingBasedModuleResolution_withExtension.js | 2 ++ ...sedModuleResolution_withExtensionInName.js | 2 ++ ...lution_withExtension_MapedToNodeModules.js | 1 + ...leResolution_withExtension_failedLookup.js | 1 + ...nalModuleExportAssignmentOfGenericClass.js | 1 + ...mbientExternalModuleImportWithoutExport.js | 2 +- .../propertyIdentityWithPrivacyMismatch.js | 2 +- ...siveExportAssignmentAndFindAliasedType1.js | 2 +- ...siveExportAssignmentAndFindAliasedType2.js | 2 +- ...siveExportAssignmentAndFindAliasedType3.js | 2 +- ...siveExportAssignmentAndFindAliasedType4.js | 2 +- ...siveExportAssignmentAndFindAliasedType5.js | 2 +- ...siveExportAssignmentAndFindAliasedType6.js | 2 +- ...siveExportAssignmentAndFindAliasedType7.js | 2 +- .../reexportWrittenCorrectlyInDeclaration.js | 1 + .../relativeNamesInClassicResolution.js | 2 +- .../reference/requireOfAnEmptyFile1.js | 1 + ...reOfJsonFileNonRelativeWithoutExtension.js | 2 ++ .../requireOfJsonFileWithModuleEmitNone.js | 1 + ...equireOfJsonFileWithModuleEmitUndefined.js | 1 + ...JsonFileWithModuleNodeResolutionEmitAmd.js | 2 +- ...eWithModuleNodeResolutionEmitAmdOutFile.js | 2 +- ...nFileWithModuleNodeResolutionEmitEs2015.js | 1 + ...nFileWithModuleNodeResolutionEmitEsNext.js | 1 + ...sonFileWithModuleNodeResolutionEmitNone.js | 1 + ...nFileWithModuleNodeResolutionEmitSystem.js | 7 +++-- ...JsonFileWithModuleNodeResolutionEmitUmd.js | 3 +- ...leWithModuleNodeResolutionEmitUndefined.js | 1 + ...requireOfJsonFileWithoutEsModuleInterop.js | 1 + ...eWithoutResolveJsonModuleAndPathMapping.js | 1 + tests/baselines/reference/reservedWords2.js | 1 + .../reference/reuseInnerModuleMember.js | 1 + tests/baselines/reference/scopedPackages.js | 3 ++ .../reference/scopedPackagesClassic.js | 1 + .../removeUnusedImports/tsconfig.json | 5 ++++ .../reference/staticInstanceResolution5.js | 2 +- ...odeReservedWordInImportEqualDeclaration.js | 1 + .../strictModeWordInImportDeclaration.js | 3 ++ .../symbolLinkDeclarationEmitModuleNames.js | 3 ++ ...olLinkDeclarationEmitModuleNamesRootDir.js | 2 ++ .../symbolMergeValueAndImportedType.js | 1 + .../reference/systemExportAssignment.js | 7 +++-- .../reference/systemExportAssignment2.js | 7 +++-- .../reference/systemExportAssignment3.js | 7 +++-- tests/baselines/reference/systemModule12.js | 7 +++-- tests/baselines/reference/systemModule15.js | 4 ++- ...ng-setup-correctly-and-reports-no-error.js | 1 + ...based-projects-and-emits-them-correctly.js | 2 ++ ...s-merged-and-contains-late-bound-member.js | 1 + ...s-merged-and-contains-late-bound-member.js | 1 + ...zed-module-specifiers-resolve-correctly.js | 2 ++ ...gh-source-and-another-symlinked-package.js | 1 + .../reference/tsxElementResolution17.js | 2 +- tests/baselines/reference/tsxPreserveEmit3.js | 2 +- .../reference/typeReferenceDirectives10.js | 2 ++ .../reference/typeReferenceDirectives13.js | 2 ++ .../reference/typeReferenceDirectives5.js | 2 ++ .../reference/typeReferenceRelatedFiles.js | 2 ++ .../reference/typeUsedAsValueError2.js | 2 +- .../reference/typesVersions.emptyTypes.js | 1 + .../reference/typesVersions.justIndex.js | 1 + tests/baselines/reference/typingsLookupAmd.js | 2 +- tests/baselines/reference/umd8.js | 2 ++ .../baselines/reference/umdGlobalConflict.js | 2 ++ .../untypedModuleImport_noImplicitAny.js | 1 + ...ModuleImport_noImplicitAny_relativePath.js | 1 + ...ntypedModuleImport_noImplicitAny_scoped.js | 1 + ...port_noImplicitAny_typesForPackageExist.js | 6 ++++ .../untypedModuleImport_withAugmentation2.js | 1 + .../reference/unusedInvalidTypeArguments.js | 1 + .../unusedLocalsStartingWithUnderscore.js | 1 + .../visibilityOfCrossModuleTypeUsage.js | 3 ++ .../cases/compiler/unusedImportDeclaration.ts | 1 + tests/cases/compiler/unusedImports1.ts | 1 + tests/cases/compiler/unusedImports10.ts | 1 + tests/cases/compiler/unusedImports11.ts | 1 + tests/cases/compiler/unusedImports12.ts | 1 + tests/cases/compiler/unusedImports13.ts | 1 + tests/cases/compiler/unusedImports14.ts | 1 + tests/cases/compiler/unusedImports15.ts | 1 + tests/cases/compiler/unusedImports16.ts | 1 + tests/cases/compiler/unusedImports2.ts | 1 + tests/cases/compiler/unusedImports3.ts | 1 + tests/cases/compiler/unusedImports4.ts | 1 + tests/cases/compiler/unusedImports5.ts | 1 + tests/cases/compiler/unusedImports6.ts | 1 + tests/cases/compiler/unusedImports7.ts | 1 + tests/cases/compiler/unusedImports8.ts | 1 + tests/cases/compiler/unusedImports9.ts | 1 + .../unusedImports_entireImportDeclaration.ts | 1 + 336 files changed, 580 insertions(+), 97 deletions(-) create mode 100644 tests/baselines/reference/showConfig/Shows tsconfig for single option/removeUnusedImports/tsconfig.json diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index bd0487fb420ba..1fef84f057d13 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -32672,7 +32672,7 @@ namespace ts { && !node.parent.parent.isTypeOnly && !(target.flags & SymbolFlags.Value) && !(node.flags & NodeFlags.Ambient)) { - error(node, Diagnostics.Re_exporting_a_type_when_the_isolatedModules_flag_is_provided_requires_using_an_explicit_type_only_export); + error(node, Diagnostics.Re_exporting_a_type_when_the_isolatedModules_flag_is_provided_requires_using_export_type); } } } diff --git a/src/compiler/commandLineParser.ts b/src/compiler/commandLineParser.ts index 0f799c0af61b0..5180f9fef94c5 100644 --- a/src/compiler/commandLineParser.ts +++ b/src/compiler/commandLineParser.ts @@ -817,6 +817,13 @@ namespace ts { description: Diagnostics.Do_not_emit_outputs_if_any_errors_were_reported, transpileOptionValue: undefined }, + { + name: "removeUnusedImports", + type: "boolean", + affectsEmit: true, + category: Diagnostics.Advanced_Options, + description: Diagnostics.Do_not_emit_imports_that_are_unused_or_used_only_for_types + }, { name: "preserveConstEnums", type: "boolean", diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index 0c95285dc90d4..5be05ba81c547 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -635,7 +635,7 @@ "category": "Error", "code": 1203 }, - "Re-exporting a type when the '--isolatedModules' flag is provided requires using an explicit type-only export.": { + "Re-exporting a type when the '--isolatedModules' flag is provided requires using 'export type'.": { "category": "Error", "code": 1205 }, @@ -1075,6 +1075,10 @@ "category": "Message", "code": 1366 }, + "Do not emit imports that are unused or used only for types": { + "category": "Message", + "code": 1367 + }, "The types of '{0}' are incompatible between these types.": { "category": "Error", diff --git a/src/compiler/transformers/ts.ts b/src/compiler/transformers/ts.ts index 0fd220d9501f9..032bac9c96025 100644 --- a/src/compiler/transformers/ts.ts +++ b/src/compiler/transformers/ts.ts @@ -2756,7 +2756,7 @@ namespace ts { } /** - * Visits an import declaration, eliding it if it is not referenced. + * Visits an import declaration, eliding it if it is not referenced and `removeUnusedImports` is enabled. * * @param node The import declaration node. */ @@ -2766,10 +2766,14 @@ namespace ts { // import "foo"; return node; } + if (node.importClause.isTypeOnly) { + // Always elide type-only imports + return undefined; + } // Elide the declaration if the import clause was elided. const importClause = visitNode(node.importClause, visitImportClause, isImportClause); - return importClause + return importClause || !compilerOptions.removeUnusedImports ? updateImportDeclaration( node, /*decorators*/ undefined, @@ -2911,10 +2915,24 @@ namespace ts { */ function visitImportEqualsDeclaration(node: ImportEqualsDeclaration): VisitResult { if (isExternalModuleImportEqualsDeclaration(node)) { - // Elide external module `import=` if it is not referenced. - return resolver.isReferencedAliasDeclaration(node) - ? visitEachChild(node, visitor, context) - : undefined; + const isReferenced = resolver.isReferencedAliasDeclaration(node); + // If the alias is unreferenced but we want to keep the import, replace with 'import "mod"'. + if (!isReferenced && !compilerOptions.removeUnusedImports) { + return setOriginalNode( + setTextRange( + createImportDeclaration( + /*decorators*/ undefined, + /*modifiers*/ undefined, + /*importClause*/ undefined, + node.moduleReference.expression, + ), + node, + ), + node, + ); + } + + return isReferenced ? visitEachChild(node, visitor, context) : undefined; } if (!shouldEmitImportEqualsDeclaration(node)) { diff --git a/src/compiler/types.ts b/src/compiler/types.ts index 445b5f1e5cc24..53d5165524f27 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -5004,6 +5004,7 @@ namespace ts { incremental?: boolean; tsBuildInfoFile?: string; removeComments?: boolean; + removeUnusedImports?: boolean; rootDir?: string; rootDirs?: string[]; skipLibCheck?: boolean; diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index 8b976518bce3b..a21fb0d4792f4 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -1782,7 +1782,7 @@ namespace ts { } } - export function isExternalModuleImportEqualsDeclaration(node: Node) { + export function isExternalModuleImportEqualsDeclaration(node: Node): node is ImportEqualsDeclaration & { moduleReference: ExternalModuleReference } { return node.kind === SyntaxKind.ImportEqualsDeclaration && (node).moduleReference.kind === SyntaxKind.ExternalModuleReference; } diff --git a/src/services/codefixes/convertToTypeOnlyExport.ts b/src/services/codefixes/convertToTypeOnlyExport.ts index d5a9030523b2a..7adf4d1aacd67 100644 --- a/src/services/codefixes/convertToTypeOnlyExport.ts +++ b/src/services/codefixes/convertToTypeOnlyExport.ts @@ -1,6 +1,6 @@ /* @internal */ namespace ts.codefix { - const errorCodes = [Diagnostics.Re_exporting_a_type_when_the_isolatedModules_flag_is_provided_requires_using_an_explicit_type_only_export.code]; + const errorCodes = [Diagnostics.Re_exporting_a_type_when_the_isolatedModules_flag_is_provided_requires_using_export_type.code]; const fixId = "convertToTypeOnlyExport"; registerCodeFix({ errorCodes, diff --git a/tests/baselines/reference/aliasOnMergedModuleInterface.js b/tests/baselines/reference/aliasOnMergedModuleInterface.js index d3d312e53bb92..81d875d53c9cf 100644 --- a/tests/baselines/reference/aliasOnMergedModuleInterface.js +++ b/tests/baselines/reference/aliasOnMergedModuleInterface.js @@ -25,6 +25,8 @@ var x: foo.A = foo.bar("hello"); // foo.A should be ok but foo.bar should be err //// [aliasOnMergedModuleInterface_1.js] "use strict"; exports.__esModule = true; +/// +require("foo"); var z; z.bar("hello"); // This should be ok var x = foo.bar("hello"); // foo.A should be ok but foo.bar should be error diff --git a/tests/baselines/reference/aliasUsageInAccessorsOfClass.js b/tests/baselines/reference/aliasUsageInAccessorsOfClass.js index 107466601d327..3be3c1627bea5 100644 --- a/tests/baselines/reference/aliasUsageInAccessorsOfClass.js +++ b/tests/baselines/reference/aliasUsageInAccessorsOfClass.js @@ -64,6 +64,7 @@ exports.VisualizationModel = VisualizationModel; //// [aliasUsage1_main.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); +require("./aliasUsage1_backbone"); var moduleA = require("./aliasUsage1_moduleA"); var C2 = /** @class */ (function () { function C2() { diff --git a/tests/baselines/reference/aliasUsageInArray.js b/tests/baselines/reference/aliasUsageInArray.js index 4282290a39264..91674f1e58346 100644 --- a/tests/baselines/reference/aliasUsageInArray.js +++ b/tests/baselines/reference/aliasUsageInArray.js @@ -58,6 +58,7 @@ exports.VisualizationModel = VisualizationModel; //// [aliasUsageInArray_main.js] "use strict"; exports.__esModule = true; +require("./aliasUsageInArray_backbone"); var moduleA = require("./aliasUsageInArray_moduleA"); var xs = [moduleA]; var xs2 = [moduleA]; diff --git a/tests/baselines/reference/aliasUsageInFunctionExpression.js b/tests/baselines/reference/aliasUsageInFunctionExpression.js index 18ec4ed2c0ada..572aef8826222 100644 --- a/tests/baselines/reference/aliasUsageInFunctionExpression.js +++ b/tests/baselines/reference/aliasUsageInFunctionExpression.js @@ -57,6 +57,7 @@ exports.VisualizationModel = VisualizationModel; //// [aliasUsageInFunctionExpression_main.js] "use strict"; exports.__esModule = true; +require("./aliasUsageInFunctionExpression_backbone"); var moduleA = require("./aliasUsageInFunctionExpression_moduleA"); var f = function (x) { return x; }; f = function (x) { return moduleA; }; diff --git a/tests/baselines/reference/aliasUsageInGenericFunction.js b/tests/baselines/reference/aliasUsageInGenericFunction.js index 9ec03624f1a72..c504767d16e11 100644 --- a/tests/baselines/reference/aliasUsageInGenericFunction.js +++ b/tests/baselines/reference/aliasUsageInGenericFunction.js @@ -61,6 +61,7 @@ exports.VisualizationModel = VisualizationModel; //// [aliasUsageInGenericFunction_main.js] "use strict"; exports.__esModule = true; +require("./aliasUsageInGenericFunction_backbone"); var moduleA = require("./aliasUsageInGenericFunction_moduleA"); function foo(x) { return x; diff --git a/tests/baselines/reference/aliasUsageInIndexerOfClass.js b/tests/baselines/reference/aliasUsageInIndexerOfClass.js index beb62454069d7..357c113dfa149 100644 --- a/tests/baselines/reference/aliasUsageInIndexerOfClass.js +++ b/tests/baselines/reference/aliasUsageInIndexerOfClass.js @@ -63,6 +63,7 @@ exports.VisualizationModel = VisualizationModel; //// [aliasUsageInIndexerOfClass_main.js] "use strict"; exports.__esModule = true; +require("./aliasUsageInIndexerOfClass_backbone"); var moduleA = require("./aliasUsageInIndexerOfClass_moduleA"); var N = /** @class */ (function () { function N() { diff --git a/tests/baselines/reference/aliasUsageInObjectLiteral.js b/tests/baselines/reference/aliasUsageInObjectLiteral.js index aa70bdd700afd..1bed851a66aef 100644 --- a/tests/baselines/reference/aliasUsageInObjectLiteral.js +++ b/tests/baselines/reference/aliasUsageInObjectLiteral.js @@ -58,6 +58,7 @@ exports.VisualizationModel = VisualizationModel; //// [aliasUsageInObjectLiteral_main.js] "use strict"; exports.__esModule = true; +require("./aliasUsageInObjectLiteral_backbone"); var moduleA = require("./aliasUsageInObjectLiteral_moduleA"); var a = { x: moduleA }; var b = { x: moduleA }; diff --git a/tests/baselines/reference/aliasUsageInOrExpression.js b/tests/baselines/reference/aliasUsageInOrExpression.js index e0969ae990169..c8e48afdc2673 100644 --- a/tests/baselines/reference/aliasUsageInOrExpression.js +++ b/tests/baselines/reference/aliasUsageInOrExpression.js @@ -61,6 +61,7 @@ exports.VisualizationModel = VisualizationModel; //// [aliasUsageInOrExpression_main.js] "use strict"; exports.__esModule = true; +require("./aliasUsageInOrExpression_backbone"); var moduleA = require("./aliasUsageInOrExpression_moduleA"); var i; var d1 = i || moduleA; diff --git a/tests/baselines/reference/aliasUsageInTypeArgumentOfExtendsClause.js b/tests/baselines/reference/aliasUsageInTypeArgumentOfExtendsClause.js index 8b6485aa2c4b0..c87b086353aa8 100644 --- a/tests/baselines/reference/aliasUsageInTypeArgumentOfExtendsClause.js +++ b/tests/baselines/reference/aliasUsageInTypeArgumentOfExtendsClause.js @@ -74,6 +74,7 @@ var __extends = (this && this.__extends) || (function () { }; })(); exports.__esModule = true; +require("./aliasUsageInTypeArgumentOfExtendsClause_backbone"); var moduleA = require("./aliasUsageInTypeArgumentOfExtendsClause_moduleA"); var C = /** @class */ (function () { function C() { diff --git a/tests/baselines/reference/aliasUsageInVarAssignment.js b/tests/baselines/reference/aliasUsageInVarAssignment.js index e51718537f44c..5a39fff68d43b 100644 --- a/tests/baselines/reference/aliasUsageInVarAssignment.js +++ b/tests/baselines/reference/aliasUsageInVarAssignment.js @@ -57,5 +57,7 @@ exports.VisualizationModel = VisualizationModel; //// [aliasUsageInVarAssignment_main.js] "use strict"; exports.__esModule = true; +require("./aliasUsageInVarAssignment_backbone"); +require("./aliasUsageInVarAssignment_moduleA"); var i; var m = i; diff --git a/tests/baselines/reference/aliasWithInterfaceExportAssignmentUsedInVarInitializer.js b/tests/baselines/reference/aliasWithInterfaceExportAssignmentUsedInVarInitializer.js index 58565bbb91648..3e69ac1bf224a 100644 --- a/tests/baselines/reference/aliasWithInterfaceExportAssignmentUsedInVarInitializer.js +++ b/tests/baselines/reference/aliasWithInterfaceExportAssignmentUsedInVarInitializer.js @@ -16,4 +16,5 @@ exports.__esModule = true; //// [aliasWithInterfaceExportAssignmentUsedInVarInitializer_1.js] "use strict"; exports.__esModule = true; +require("./aliasWithInterfaceExportAssignmentUsedInVarInitializer_0"); var d = b.q3; diff --git a/tests/baselines/reference/allowImportClausesToMergeWithTypes.js b/tests/baselines/reference/allowImportClausesToMergeWithTypes.js index 1679fa103723f..165a3a0418e3a 100644 --- a/tests/baselines/reference/allowImportClausesToMergeWithTypes.js +++ b/tests/baselines/reference/allowImportClausesToMergeWithTypes.js @@ -42,6 +42,7 @@ b_1["default"]; //// [index.js] "use strict"; exports.__esModule = true; +require("./a"); var x = { x: "" }; zzz; var b_1 = require("./b"); diff --git a/tests/baselines/reference/allowSyntheticDefaultImportsCanPaintCrossModuleDeclaration.js b/tests/baselines/reference/allowSyntheticDefaultImportsCanPaintCrossModuleDeclaration.js index 96a5bfcb068a7..b943b663073f9 100644 --- a/tests/baselines/reference/allowSyntheticDefaultImportsCanPaintCrossModuleDeclaration.js +++ b/tests/baselines/reference/allowSyntheticDefaultImportsCanPaintCrossModuleDeclaration.js @@ -18,6 +18,7 @@ exports.__esModule = true; //// [file1.js] "use strict"; exports.__esModule = true; +require("./color"); //// [file2.js] "use strict"; exports.__esModule = true; diff --git a/tests/baselines/reference/ambientDeclarationsExternal.js b/tests/baselines/reference/ambientDeclarationsExternal.js index ed413fb0d8e2f..30840b7dcf760 100644 --- a/tests/baselines/reference/ambientDeclarationsExternal.js +++ b/tests/baselines/reference/ambientDeclarationsExternal.js @@ -28,6 +28,8 @@ var n: number; //// [consumer.js] "use strict"; exports.__esModule = true; +/// +require("equ"); // Ambient external module members are always exported with or without export keyword when module lacks export assignment var imp3 = require("equ2"); var n = imp3.x; diff --git a/tests/baselines/reference/ambientDeclarationsPatterns_merging1.js b/tests/baselines/reference/ambientDeclarationsPatterns_merging1.js index 56abd8298cdf2..6e455d4e82eb8 100644 --- a/tests/baselines/reference/ambientDeclarationsPatterns_merging1.js +++ b/tests/baselines/reference/ambientDeclarationsPatterns_merging1.js @@ -20,6 +20,8 @@ import { everywhere, onlyInA } from "b.foo"; // Error //// [testA.js] "use strict"; exports.__esModule = true; +require("a.foo"); //// [testB.js] "use strict"; exports.__esModule = true; +require("b.foo"); // Error diff --git a/tests/baselines/reference/ambientDeclarationsPatterns_merging2.js b/tests/baselines/reference/ambientDeclarationsPatterns_merging2.js index 65726bba7225e..e432846bb9fed 100644 --- a/tests/baselines/reference/ambientDeclarationsPatterns_merging2.js +++ b/tests/baselines/reference/ambientDeclarationsPatterns_merging2.js @@ -22,6 +22,8 @@ declare module "a.foo" { //// [testA.js] "use strict"; exports.__esModule = true; +require("a.foo"); //// [testB.js] "use strict"; exports.__esModule = true; +require("b.foo"); // Error diff --git a/tests/baselines/reference/ambientDeclarationsPatterns_merging3.js b/tests/baselines/reference/ambientDeclarationsPatterns_merging3.js index 763f0e94bdb56..1a95e69a7d1b5 100644 --- a/tests/baselines/reference/ambientDeclarationsPatterns_merging3.js +++ b/tests/baselines/reference/ambientDeclarationsPatterns_merging3.js @@ -18,4 +18,5 @@ ohno.a // oh no //// [test.js] "use strict"; exports.__esModule = true; +require("b.foo"); ohno.a; // oh no diff --git a/tests/baselines/reference/ambientShorthand_duplicate.js b/tests/baselines/reference/ambientShorthand_duplicate.js index 08d03c83ed0e6..197a9d41e3326 100644 --- a/tests/baselines/reference/ambientShorthand_duplicate.js +++ b/tests/baselines/reference/ambientShorthand_duplicate.js @@ -15,3 +15,6 @@ import foo from "foo"; //// [user.js] "use strict"; exports.__esModule = true; +/// +/// +require("foo"); diff --git a/tests/baselines/reference/ambientShorthand_merging.js b/tests/baselines/reference/ambientShorthand_merging.js index 15714a48997e8..0831d76de80a9 100644 --- a/tests/baselines/reference/ambientShorthand_merging.js +++ b/tests/baselines/reference/ambientShorthand_merging.js @@ -17,3 +17,6 @@ import foo, {bar} from "foo"; //// [user.js] "use strict"; exports.__esModule = true; +/// +/// +require("foo"); diff --git a/tests/baselines/reference/amdImportNotAsPrimaryExpression.js b/tests/baselines/reference/amdImportNotAsPrimaryExpression.js index fe0a9be2a085d..7a11e733ac6eb 100644 --- a/tests/baselines/reference/amdImportNotAsPrimaryExpression.js +++ b/tests/baselines/reference/amdImportNotAsPrimaryExpression.js @@ -51,7 +51,7 @@ define(["require", "exports"], function (require, exports) { })(E1 = exports.E1 || (exports.E1 = {})); }); //// [foo_1.js] -define(["require", "exports"], function (require, exports) { +define(["require", "exports", "./foo_0"], function (require, exports) { "use strict"; exports.__esModule = true; var i; diff --git a/tests/baselines/reference/amdModuleConstEnumUsage.js b/tests/baselines/reference/amdModuleConstEnumUsage.js index a15bdb42ea307..d1fc27ac2ea81 100644 --- a/tests/baselines/reference/amdModuleConstEnumUsage.js +++ b/tests/baselines/reference/amdModuleConstEnumUsage.js @@ -25,7 +25,7 @@ define(["require", "exports"], function (require, exports) { })(CharCode = exports.CharCode || (exports.CharCode = {})); }); //// [file.js] -define(["require", "exports"], function (require, exports) { +define(["require", "exports", "defs/cc"], function (require, exports) { "use strict"; exports.__esModule = true; var User = /** @class */ (function () { diff --git a/tests/baselines/reference/api/tsserverlibrary.d.ts b/tests/baselines/reference/api/tsserverlibrary.d.ts index 433ee261443f5..ab089898aa639 100644 --- a/tests/baselines/reference/api/tsserverlibrary.d.ts +++ b/tests/baselines/reference/api/tsserverlibrary.d.ts @@ -2641,6 +2641,7 @@ declare namespace ts { incremental?: boolean; tsBuildInfoFile?: string; removeComments?: boolean; + removeUnusedImports?: boolean; rootDir?: string; rootDirs?: string[]; skipLibCheck?: boolean; diff --git a/tests/baselines/reference/api/typescript.d.ts b/tests/baselines/reference/api/typescript.d.ts index efd5c832e3b8c..ed1cf280e3f23 100644 --- a/tests/baselines/reference/api/typescript.d.ts +++ b/tests/baselines/reference/api/typescript.d.ts @@ -2641,6 +2641,7 @@ declare namespace ts { incremental?: boolean; tsBuildInfoFile?: string; removeComments?: boolean; + removeUnusedImports?: boolean; rootDir?: string; rootDirs?: string[]; skipLibCheck?: boolean; diff --git a/tests/baselines/reference/arrayOfExportedClass.js b/tests/baselines/reference/arrayOfExportedClass.js index 2a41475c1cd33..c9c69c72f741c 100644 --- a/tests/baselines/reference/arrayOfExportedClass.js +++ b/tests/baselines/reference/arrayOfExportedClass.js @@ -34,6 +34,8 @@ var Car = /** @class */ (function () { module.exports = Car; //// [arrayOfExportedClass_1.js] "use strict"; +/// +require("./arrayOfExportedClass_0"); var Road = /** @class */ (function () { function Road() { } diff --git a/tests/baselines/reference/asyncAwaitIsolatedModules_es6.js b/tests/baselines/reference/asyncAwaitIsolatedModules_es6.js index 015992805bcbd..0f67dc27be917 100644 --- a/tests/baselines/reference/asyncAwaitIsolatedModules_es6.js +++ b/tests/baselines/reference/asyncAwaitIsolatedModules_es6.js @@ -49,6 +49,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; +import "missing"; function f0() { return __awaiter(this, void 0, void 0, function* () { }); } diff --git a/tests/baselines/reference/asyncImportedPromise_es6.js b/tests/baselines/reference/asyncImportedPromise_es6.js index 41bf0f26087ed..f8c78c5133c48 100644 --- a/tests/baselines/reference/asyncImportedPromise_es6.js +++ b/tests/baselines/reference/asyncImportedPromise_es6.js @@ -27,6 +27,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge }); }; Object.defineProperty(exports, "__esModule", { value: true }); +require("./task"); class Test { example() { return __awaiter(this, void 0, void 0, function* () { return; }); diff --git a/tests/baselines/reference/augmentExportEquals1.js b/tests/baselines/reference/augmentExportEquals1.js index 99a6e2e4bb00d..506037ebd0fd2 100644 --- a/tests/baselines/reference/augmentExportEquals1.js +++ b/tests/baselines/reference/augmentExportEquals1.js @@ -25,12 +25,12 @@ define(["require", "exports"], function (require, exports) { return x; }); //// [file2.js] -define(["require", "exports"], function (require, exports) { +define(["require", "exports", "./file1"], function (require, exports) { "use strict"; exports.__esModule = true; }); //// [file3.js] -define(["require", "exports", "./file2"], function (require, exports) { +define(["require", "exports", "./file1", "./file2"], function (require, exports) { "use strict"; exports.__esModule = true; var a; // should not work diff --git a/tests/baselines/reference/augmentExportEquals1_1.js b/tests/baselines/reference/augmentExportEquals1_1.js index 780043c81ca17..27118fedf80c1 100644 --- a/tests/baselines/reference/augmentExportEquals1_1.js +++ b/tests/baselines/reference/augmentExportEquals1_1.js @@ -22,12 +22,12 @@ import "file2"; let a: x.A; // should not work //// [file2.js] -define(["require", "exports"], function (require, exports) { +define(["require", "exports", "file1"], function (require, exports) { "use strict"; exports.__esModule = true; }); //// [file3.js] -define(["require", "exports", "file2"], function (require, exports) { +define(["require", "exports", "file1", "file2"], function (require, exports) { "use strict"; exports.__esModule = true; var a; // should not work diff --git a/tests/baselines/reference/augmentExportEquals2.js b/tests/baselines/reference/augmentExportEquals2.js index 8ce1bb9010157..6aeba040e9357 100644 --- a/tests/baselines/reference/augmentExportEquals2.js +++ b/tests/baselines/reference/augmentExportEquals2.js @@ -24,12 +24,12 @@ define(["require", "exports"], function (require, exports) { return foo; }); //// [file2.js] -define(["require", "exports"], function (require, exports) { +define(["require", "exports", "./file1"], function (require, exports) { "use strict"; exports.__esModule = true; }); //// [file3.js] -define(["require", "exports", "./file2"], function (require, exports) { +define(["require", "exports", "./file1", "./file2"], function (require, exports) { "use strict"; exports.__esModule = true; var a; // should not work diff --git a/tests/baselines/reference/augmentExportEquals2_1.js b/tests/baselines/reference/augmentExportEquals2_1.js index 93b76c0259c80..dff75b9ae8496 100644 --- a/tests/baselines/reference/augmentExportEquals2_1.js +++ b/tests/baselines/reference/augmentExportEquals2_1.js @@ -21,12 +21,12 @@ import "file2"; let a: x.A; // should not work //// [file2.js] -define(["require", "exports"], function (require, exports) { +define(["require", "exports", "file1"], function (require, exports) { "use strict"; exports.__esModule = true; }); //// [file3.js] -define(["require", "exports", "file2"], function (require, exports) { +define(["require", "exports", "file1", "file2"], function (require, exports) { "use strict"; exports.__esModule = true; var a; // should not work diff --git a/tests/baselines/reference/augmentExportEquals5.js b/tests/baselines/reference/augmentExportEquals5.js index e028b2331daf5..a32adbe00fd01 100644 --- a/tests/baselines/reference/augmentExportEquals5.js +++ b/tests/baselines/reference/augmentExportEquals5.js @@ -81,12 +81,12 @@ let x: Request; const y = x.id; //// [augmentation.js] -define(["require", "exports"], function (require, exports) { +define(["require", "exports", "express"], function (require, exports) { "use strict"; exports.__esModule = true; }); //// [consumer.js] -define(["require", "exports", "./augmentation"], function (require, exports) { +define(["require", "exports", "express", "./augmentation"], function (require, exports) { "use strict"; exports.__esModule = true; var x; diff --git a/tests/baselines/reference/augmentExportEquals6_1.js b/tests/baselines/reference/augmentExportEquals6_1.js index d1c7170993b9e..91c92f8bd253c 100644 --- a/tests/baselines/reference/augmentExportEquals6_1.js +++ b/tests/baselines/reference/augmentExportEquals6_1.js @@ -26,12 +26,12 @@ let a: x.A; let b = a.a; //// [file2.js] -define(["require", "exports"], function (require, exports) { +define(["require", "exports", "file1"], function (require, exports) { "use strict"; exports.__esModule = true; }); //// [file3.js] -define(["require", "exports", "file2"], function (require, exports) { +define(["require", "exports", "file1", "file2"], function (require, exports) { "use strict"; exports.__esModule = true; var a; diff --git a/tests/baselines/reference/badExternalModuleReference.js b/tests/baselines/reference/badExternalModuleReference.js index c1608b4c57e20..fa2d5d5983958 100644 --- a/tests/baselines/reference/badExternalModuleReference.js +++ b/tests/baselines/reference/badExternalModuleReference.js @@ -7,7 +7,7 @@ export declare var a: { //// [badExternalModuleReference.js] -define(["require", "exports"], function (require, exports) { +define(["require", "exports", "garbage"], function (require, exports) { "use strict"; exports.__esModule = true; }); diff --git a/tests/baselines/reference/bangInModuleName.js b/tests/baselines/reference/bangInModuleName.js index 1a6961f59da5c..5d33b6b15ad6d 100644 --- a/tests/baselines/reference/bangInModuleName.js +++ b/tests/baselines/reference/bangInModuleName.js @@ -16,7 +16,7 @@ import * as http from 'intern/dojo/node!http'; //// [a.js] /// -define(["require", "exports"], function (require, exports) { +define(["require", "exports", "intern/dojo/node!http"], function (require, exports) { "use strict"; exports.__esModule = true; }); diff --git a/tests/baselines/reference/cachedModuleResolution1.js b/tests/baselines/reference/cachedModuleResolution1.js index cd83308f922cf..40ba45cc6a5f2 100644 --- a/tests/baselines/reference/cachedModuleResolution1.js +++ b/tests/baselines/reference/cachedModuleResolution1.js @@ -12,6 +12,8 @@ import {x} from "foo"; //// [app.js] "use strict"; exports.__esModule = true; +require("foo"); //// [lib.js] "use strict"; exports.__esModule = true; +require("foo"); diff --git a/tests/baselines/reference/cachedModuleResolution2.js b/tests/baselines/reference/cachedModuleResolution2.js index 8ecb42a32ae04..870d9b828b3d5 100644 --- a/tests/baselines/reference/cachedModuleResolution2.js +++ b/tests/baselines/reference/cachedModuleResolution2.js @@ -13,6 +13,8 @@ import {x} from "foo"; //// [lib.js] "use strict"; exports.__esModule = true; +require("foo"); //// [app.js] "use strict"; exports.__esModule = true; +require("foo"); diff --git a/tests/baselines/reference/cachedModuleResolution3.js b/tests/baselines/reference/cachedModuleResolution3.js index f5da694009969..5c1ec5f1dabdf 100644 --- a/tests/baselines/reference/cachedModuleResolution3.js +++ b/tests/baselines/reference/cachedModuleResolution3.js @@ -12,6 +12,8 @@ import {x} from "foo"; //// [app.js] "use strict"; exports.__esModule = true; +require("foo"); //// [lib.js] "use strict"; exports.__esModule = true; +require("foo"); diff --git a/tests/baselines/reference/cachedModuleResolution4.js b/tests/baselines/reference/cachedModuleResolution4.js index f5417960d4692..3bea56fef019d 100644 --- a/tests/baselines/reference/cachedModuleResolution4.js +++ b/tests/baselines/reference/cachedModuleResolution4.js @@ -13,6 +13,8 @@ import {x} from "foo"; //// [lib.js] "use strict"; exports.__esModule = true; +require("foo"); //// [app.js] "use strict"; exports.__esModule = true; +require("foo"); diff --git a/tests/baselines/reference/cachedModuleResolution5.js b/tests/baselines/reference/cachedModuleResolution5.js index 4fe641e917e61..e4c6ab2341b20 100644 --- a/tests/baselines/reference/cachedModuleResolution5.js +++ b/tests/baselines/reference/cachedModuleResolution5.js @@ -12,6 +12,8 @@ import {x} from "foo"; //// [app.js] "use strict"; exports.__esModule = true; +require("foo"); //// [lib.js] "use strict"; exports.__esModule = true; +require("foo"); diff --git a/tests/baselines/reference/cachedModuleResolution6.js b/tests/baselines/reference/cachedModuleResolution6.js index 364ad55aa6ce1..448724e921ab2 100644 --- a/tests/baselines/reference/cachedModuleResolution6.js +++ b/tests/baselines/reference/cachedModuleResolution6.js @@ -9,6 +9,8 @@ import {x} from "foo"; //// [app.js] "use strict"; exports.__esModule = true; +require("foo"); //// [lib.js] "use strict"; exports.__esModule = true; +require("foo"); diff --git a/tests/baselines/reference/cachedModuleResolution7.js b/tests/baselines/reference/cachedModuleResolution7.js index 9b103fdd9bf16..f2e85283e078c 100644 --- a/tests/baselines/reference/cachedModuleResolution7.js +++ b/tests/baselines/reference/cachedModuleResolution7.js @@ -10,6 +10,8 @@ import {x} from "foo"; //// [lib.js] "use strict"; exports.__esModule = true; +require("foo"); //// [app.js] "use strict"; exports.__esModule = true; +require("foo"); diff --git a/tests/baselines/reference/cachedModuleResolution8.js b/tests/baselines/reference/cachedModuleResolution8.js index 9e8b67fabf7ae..e465be03ddc94 100644 --- a/tests/baselines/reference/cachedModuleResolution8.js +++ b/tests/baselines/reference/cachedModuleResolution8.js @@ -9,6 +9,8 @@ import {x} from "foo"; //// [app.js] "use strict"; exports.__esModule = true; +require("foo"); //// [lib.js] "use strict"; exports.__esModule = true; +require("foo"); diff --git a/tests/baselines/reference/cachedModuleResolution9.js b/tests/baselines/reference/cachedModuleResolution9.js index 8de0a1ff17340..e9eca1505fc27 100644 --- a/tests/baselines/reference/cachedModuleResolution9.js +++ b/tests/baselines/reference/cachedModuleResolution9.js @@ -11,6 +11,8 @@ import {x} from "foo"; //// [lib.js] "use strict"; exports.__esModule = true; +require("foo"); //// [app.js] "use strict"; exports.__esModule = true; +require("foo"); diff --git a/tests/baselines/reference/caseInsensitiveFileSystemWithCapsImportTypeDeclarations.js b/tests/baselines/reference/caseInsensitiveFileSystemWithCapsImportTypeDeclarations.js index ac6e4b7e13502..1dcbd6371213a 100644 --- a/tests/baselines/reference/caseInsensitiveFileSystemWithCapsImportTypeDeclarations.js +++ b/tests/baselines/reference/caseInsensitiveFileSystemWithCapsImportTypeDeclarations.js @@ -32,9 +32,12 @@ exports.__esModule = true; //// [type-b.js] "use strict"; exports.__esModule = true; +require("./types"); +require("./type-a"); //// [index.js] "use strict"; exports.__esModule = true; +require("./type-b"); var Broken = /** @class */ (function () { function Broken() { } diff --git a/tests/baselines/reference/chained.js b/tests/baselines/reference/chained.js index e37d6361b2441..a37ab84a1302a 100644 --- a/tests/baselines/reference/chained.js +++ b/tests/baselines/reference/chained.js @@ -30,11 +30,13 @@ var A = /** @class */ (function () { //// [b.js] "use strict"; exports.__esModule = true; +require("./a"); //// [c.js] "use strict"; exports.__esModule = true; //// [d.js] "use strict"; exports.__esModule = true; +require("./c"); new D(); var d = {}; diff --git a/tests/baselines/reference/circularReferenceInImport.js b/tests/baselines/reference/circularReferenceInImport.js index 432a03d090cac..23140e8035521 100644 --- a/tests/baselines/reference/circularReferenceInImport.js +++ b/tests/baselines/reference/circularReferenceInImport.js @@ -17,6 +17,7 @@ export function foo() { //// [app.js] "use strict"; exports.__esModule = true; +require("./db"); function foo() { return new Object(); } diff --git a/tests/baselines/reference/commentOnImportStatement1.js b/tests/baselines/reference/commentOnImportStatement1.js index a9d68d299ce19..8da610a2a058d 100644 --- a/tests/baselines/reference/commentOnImportStatement1.js +++ b/tests/baselines/reference/commentOnImportStatement1.js @@ -6,7 +6,7 @@ import foo = require('./foo'); //// [commentOnImportStatement1.js] /* Copyright */ -define(["require", "exports"], function (require, exports) { +define(["require", "exports", "./foo"], function (require, exports) { "use strict"; exports.__esModule = true; }); diff --git a/tests/baselines/reference/commentOnImportStatement2.js b/tests/baselines/reference/commentOnImportStatement2.js index 5156fcdd0d1a5..70068de4e55c9 100644 --- a/tests/baselines/reference/commentOnImportStatement2.js +++ b/tests/baselines/reference/commentOnImportStatement2.js @@ -5,3 +5,5 @@ import foo = require('./foo'); //// [commentOnImportStatement2.js] "use strict"; exports.__esModule = true; +/* not copyright */ +require("./foo"); diff --git a/tests/baselines/reference/commentOnImportStatement3.js b/tests/baselines/reference/commentOnImportStatement3.js index decc7a7878e72..8d93daa76c228 100644 --- a/tests/baselines/reference/commentOnImportStatement3.js +++ b/tests/baselines/reference/commentOnImportStatement3.js @@ -8,3 +8,5 @@ import foo = require('./foo'); "use strict"; /* copyright */ exports.__esModule = true; +/* not copyright */ +require("./foo"); diff --git a/tests/baselines/reference/commentsMultiModuleMultiFile.js b/tests/baselines/reference/commentsMultiModuleMultiFile.js index c06a568959442..7cdb0ca308eb2 100644 --- a/tests/baselines/reference/commentsMultiModuleMultiFile.js +++ b/tests/baselines/reference/commentsMultiModuleMultiFile.js @@ -71,7 +71,7 @@ define(["require", "exports"], function (require, exports) { new multiM.c(); }); //// [commentsMultiModuleMultiFile_1.js] -define(["require", "exports"], function (require, exports) { +define(["require", "exports", "commentsMultiModuleMultiFile_0"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); /** this is multi module 3 comment*/ diff --git a/tests/baselines/reference/commonJSImportNotAsPrimaryExpression.js b/tests/baselines/reference/commonJSImportNotAsPrimaryExpression.js index 9a1e89136a6dc..07d0ef4ce4dfd 100644 --- a/tests/baselines/reference/commonJSImportNotAsPrimaryExpression.js +++ b/tests/baselines/reference/commonJSImportNotAsPrimaryExpression.js @@ -51,6 +51,7 @@ var E1; //// [foo_1.js] "use strict"; exports.__esModule = true; +require("./foo_0"); var i; var x = {}; var y = false; diff --git a/tests/baselines/reference/commonJsImportClassExpression.js b/tests/baselines/reference/commonJsImportClassExpression.js index b460814b8720b..93edeafa4d72a 100644 --- a/tests/baselines/reference/commonJsImportClassExpression.js +++ b/tests/baselines/reference/commonJsImportClassExpression.js @@ -22,4 +22,5 @@ module.exports = /** @class */ (function () { //// [use.js] "use strict"; exports.__esModule = true; +require("./mod1"); c.chunk; diff --git a/tests/baselines/reference/constEnumExternalModule.js b/tests/baselines/reference/constEnumExternalModule.js index 8ea5625ac0797..a5a111969b7cc 100644 --- a/tests/baselines/reference/constEnumExternalModule.js +++ b/tests/baselines/reference/constEnumExternalModule.js @@ -16,7 +16,7 @@ define(["require", "exports"], function (require, exports) { exports.__esModule = true; }); //// [m2.js] -define(["require", "exports"], function (require, exports) { +define(["require", "exports", "m1"], function (require, exports) { "use strict"; exports.__esModule = true; var v = 100 /* V */; diff --git a/tests/baselines/reference/constEnumNamespaceReferenceCausesNoImport.js b/tests/baselines/reference/constEnumNamespaceReferenceCausesNoImport.js index d1ead34bdd5d0..60adc107142b9 100644 --- a/tests/baselines/reference/constEnumNamespaceReferenceCausesNoImport.js +++ b/tests/baselines/reference/constEnumNamespaceReferenceCausesNoImport.js @@ -26,6 +26,7 @@ exports.fooFunc = fooFunc; //// [index.js] "use strict"; exports.__esModule = true; +require("./foo"); function check(x) { switch (x) { case 0 /* Some */: diff --git a/tests/baselines/reference/constEnumNoEmitReexport.js b/tests/baselines/reference/constEnumNoEmitReexport.js index de1ed1ff03275..45491581a5c27 100644 --- a/tests/baselines/reference/constEnumNoEmitReexport.js +++ b/tests/baselines/reference/constEnumNoEmitReexport.js @@ -35,9 +35,11 @@ exports.__esModule = true; //// [ImportExport.js] "use strict"; exports.__esModule = true; +require("./ConstEnum"); //// [ImportExportDefault.js] "use strict"; exports.__esModule = true; +require("./ConstEnum"); //// [ReExportDefault.js] "use strict"; exports.__esModule = true; @@ -47,13 +49,17 @@ exports.__esModule = true; //// [Usage1.js] "use strict"; exports.__esModule = true; +require("./ImportExportDefault"); +require("./ReExportDefault"); 0 /* Foo */; 0 /* Foo */; //// [Usage2.js] "use strict"; exports.__esModule = true; +require("./ImportExport"); 0 /* Foo */; //// [Usage3.js] "use strict"; exports.__esModule = true; +require("./ReExport"); 0 /* Foo */; diff --git a/tests/baselines/reference/constEnumNoPreserveDeclarationReexport.js b/tests/baselines/reference/constEnumNoPreserveDeclarationReexport.js index 0edacd183ef11..bcbbdcd843d79 100644 --- a/tests/baselines/reference/constEnumNoPreserveDeclarationReexport.js +++ b/tests/baselines/reference/constEnumNoPreserveDeclarationReexport.js @@ -23,6 +23,9 @@ StillEnum.Foo; //// [usages.js] "use strict"; exports.__esModule = true; +require("./ConstEnum"); +require("./ImportExport"); +require("./ReExport"); 0 /* Foo */; 0 /* Foo */; 0 /* Foo */; diff --git a/tests/baselines/reference/declFileAliasUseBeforeDeclaration.js b/tests/baselines/reference/declFileAliasUseBeforeDeclaration.js index c2360f3acbc1a..f16d286265685 100644 --- a/tests/baselines/reference/declFileAliasUseBeforeDeclaration.js +++ b/tests/baselines/reference/declFileAliasUseBeforeDeclaration.js @@ -21,6 +21,7 @@ exports.Foo = Foo; exports.__esModule = true; function bar(a) { } exports.bar = bar; +require("./declFileAliasUseBeforeDeclaration_foo"); //// [declFileAliasUseBeforeDeclaration_foo.d.ts] diff --git a/tests/baselines/reference/declFileAmbientExternalModuleWithSingleExportedModule.js b/tests/baselines/reference/declFileAmbientExternalModuleWithSingleExportedModule.js index 627a1865d8fc8..cf7b7b7ecdae5 100644 --- a/tests/baselines/reference/declFileAmbientExternalModuleWithSingleExportedModule.js +++ b/tests/baselines/reference/declFileAmbientExternalModuleWithSingleExportedModule.js @@ -21,6 +21,8 @@ export var x: SubModule.m.m3.c; //// [declFileAmbientExternalModuleWithSingleExportedModule_1.js] "use strict"; exports.__esModule = true; +/// +require("SubModule"); //// [declFileAmbientExternalModuleWithSingleExportedModule_0.d.ts] diff --git a/tests/baselines/reference/declFileExportAssignmentOfGenericInterface.js b/tests/baselines/reference/declFileExportAssignmentOfGenericInterface.js index cefff0be4eac9..f8ab57ada4603 100644 --- a/tests/baselines/reference/declFileExportAssignmentOfGenericInterface.js +++ b/tests/baselines/reference/declFileExportAssignmentOfGenericInterface.js @@ -17,7 +17,7 @@ define(["require", "exports"], function (require, exports) { exports.__esModule = true; }); //// [declFileExportAssignmentOfGenericInterface_1.js] -define(["require", "exports"], function (require, exports) { +define(["require", "exports", "declFileExportAssignmentOfGenericInterface_0"], function (require, exports) { "use strict"; exports.__esModule = true; exports.x.a; diff --git a/tests/baselines/reference/declFileExportImportChain.js b/tests/baselines/reference/declFileExportImportChain.js index 8a6b297f81d3f..767e57c677a94 100644 --- a/tests/baselines/reference/declFileExportImportChain.js +++ b/tests/baselines/reference/declFileExportImportChain.js @@ -58,7 +58,7 @@ define(["require", "exports", "declFileExportImportChain_b1"], function (require exports.b1 = b1; }); //// [declFileExportImportChain_d.js] -define(["require", "exports"], function (require, exports) { +define(["require", "exports", "declFileExportImportChain_c"], function (require, exports) { "use strict"; exports.__esModule = true; }); diff --git a/tests/baselines/reference/declFileExportImportChain2.js b/tests/baselines/reference/declFileExportImportChain2.js index 684ac2a1dfbe2..7c56962d966f0 100644 --- a/tests/baselines/reference/declFileExportImportChain2.js +++ b/tests/baselines/reference/declFileExportImportChain2.js @@ -49,7 +49,7 @@ define(["require", "exports", "declFileExportImportChain2_b"], function (require exports.b = b; }); //// [declFileExportImportChain2_d.js] -define(["require", "exports"], function (require, exports) { +define(["require", "exports", "declFileExportImportChain2_c"], function (require, exports) { "use strict"; exports.__esModule = true; }); diff --git a/tests/baselines/reference/declarationEmitAliasExportStar.js b/tests/baselines/reference/declarationEmitAliasExportStar.js index a7f8932cbf993..6baeb6b325066 100644 --- a/tests/baselines/reference/declarationEmitAliasExportStar.js +++ b/tests/baselines/reference/declarationEmitAliasExportStar.js @@ -18,6 +18,7 @@ exports.__esModule = true; //// [index.js] "use strict"; exports.__esModule = true; +require("./things"); exports.thing2 = function (param) { return null; }; diff --git a/tests/baselines/reference/declarationEmitAliasFromIndirectFile.js b/tests/baselines/reference/declarationEmitAliasFromIndirectFile.js index 105b406cdadea..e2a454c4d5b00 100644 --- a/tests/baselines/reference/declarationEmitAliasFromIndirectFile.js +++ b/tests/baselines/reference/declarationEmitAliasFromIndirectFile.js @@ -30,6 +30,7 @@ export default fp.l10ns; //// [app.js] "use strict"; exports.__esModule = true; +require("./instance"); var fp = { l10ns: {} }; exports["default"] = fp.l10ns; diff --git a/tests/baselines/reference/declarationEmitBundleWithAmbientReferences.js b/tests/baselines/reference/declarationEmitBundleWithAmbientReferences.js index 6c42a82967eac..7ead6faffa23a 100644 --- a/tests/baselines/reference/declarationEmitBundleWithAmbientReferences.js +++ b/tests/baselines/reference/declarationEmitBundleWithAmbientReferences.js @@ -21,11 +21,11 @@ export const build = (): DatastoreResult.T => { //// [datastore.bundle.js] -define("datastore_result", ["require", "exports"], function (require, exports) { +define("datastore_result", ["require", "exports", "lib/result"], function (require, exports) { "use strict"; exports.__esModule = true; }); -define("conditional_directive_field", ["require", "exports"], function (require, exports) { +define("conditional_directive_field", ["require", "exports", "datastore_result"], function (require, exports) { "use strict"; exports.__esModule = true; exports.build = function () { diff --git a/tests/baselines/reference/declarationEmitExportAliasVisibiilityMarking.js b/tests/baselines/reference/declarationEmitExportAliasVisibiilityMarking.js index fcc0722c07e60..be4be43d12af8 100644 --- a/tests/baselines/reference/declarationEmitExportAliasVisibiilityMarking.js +++ b/tests/baselines/reference/declarationEmitExportAliasVisibiilityMarking.js @@ -20,6 +20,7 @@ exports.__esModule = true; //// [Card.js] "use strict"; exports.__esModule = true; +require("./Types"); exports["default"] = (function (suit, rank) { return ({ suit: suit, rank: rank }); }); //// [index.js] "use strict"; diff --git a/tests/baselines/reference/declarationEmitForGlobalishSpecifierSymlink.js b/tests/baselines/reference/declarationEmitForGlobalishSpecifierSymlink.js index 00efdd49280a3..b918b37f7a4ca 100644 --- a/tests/baselines/reference/declarationEmitForGlobalishSpecifierSymlink.js +++ b/tests/baselines/reference/declarationEmitForGlobalishSpecifierSymlink.js @@ -37,6 +37,7 @@ export const a: import("typescript-fsa").A; //// [index.js] "use strict"; exports.__esModule = true; +require("p2"); var typescript_fsa_1 = require("typescript-fsa"); exports.a = typescript_fsa_1.getA(); diff --git a/tests/baselines/reference/declarationEmitForGlobalishSpecifierSymlink2.js b/tests/baselines/reference/declarationEmitForGlobalishSpecifierSymlink2.js index 22889aba46193..67779e66a64cf 100644 --- a/tests/baselines/reference/declarationEmitForGlobalishSpecifierSymlink2.js +++ b/tests/baselines/reference/declarationEmitForGlobalishSpecifierSymlink2.js @@ -25,6 +25,7 @@ export const a: import("typescript-fsa").A; //// [index.js] "use strict"; exports.__esModule = true; +require("p2"); var typescript_fsa_1 = require("typescript-fsa"); exports.a = typescript_fsa_1.getA(); diff --git a/tests/baselines/reference/declarationEmitInferredTypeAlias5.js b/tests/baselines/reference/declarationEmitInferredTypeAlias5.js index 918e2898d2ed2..310661daec1c3 100644 --- a/tests/baselines/reference/declarationEmitInferredTypeAlias5.js +++ b/tests/baselines/reference/declarationEmitInferredTypeAlias5.js @@ -17,6 +17,7 @@ var obj = true; //// [1.js] "use strict"; exports.__esModule = true; +require("./0"); //let v2: Z.Data; var v = "str" || true; exports.v = v; diff --git a/tests/baselines/reference/declarationEmitQualifiedAliasTypeArgument.js b/tests/baselines/reference/declarationEmitQualifiedAliasTypeArgument.js index bc895b62ace25..f2bae90f9bf44 100644 --- a/tests/baselines/reference/declarationEmitQualifiedAliasTypeArgument.js +++ b/tests/baselines/reference/declarationEmitQualifiedAliasTypeArgument.js @@ -30,6 +30,7 @@ export const fun2 = create(); //// [index.js] "use strict"; exports.__esModule = true; +require("./lib"); var bbb_1 = require("./bbb"); exports.fun = bbb_1.create(); exports.fun2 = bbb_1.create(); diff --git a/tests/baselines/reference/declarationsForIndirectTypeAliasReference.js b/tests/baselines/reference/declarationsForIndirectTypeAliasReference.js index 1563e2571cc40..177bc0b0ad6d0 100644 --- a/tests/baselines/reference/declarationsForIndirectTypeAliasReference.js +++ b/tests/baselines/reference/declarationsForIndirectTypeAliasReference.js @@ -39,6 +39,7 @@ exports.__esModule = true; //// [a.js] "use strict"; exports.__esModule = true; +require("./b"); var MAP = { a: "a" }; diff --git a/tests/baselines/reference/decoratedClassFromExternalModule.js b/tests/baselines/reference/decoratedClassFromExternalModule.js index ce397323d9ccd..1144c178fc3e4 100644 --- a/tests/baselines/reference/decoratedClassFromExternalModule.js +++ b/tests/baselines/reference/decoratedClassFromExternalModule.js @@ -24,3 +24,4 @@ Decorated = __decorate([ ], Decorated); export default Decorated; //// [undecorated.js] +import 'decorated'; diff --git a/tests/baselines/reference/decoratorOnImportEquals2.js b/tests/baselines/reference/decoratorOnImportEquals2.js index aa8273699e38e..5947204409ea4 100644 --- a/tests/baselines/reference/decoratorOnImportEquals2.js +++ b/tests/baselines/reference/decoratorOnImportEquals2.js @@ -15,3 +15,4 @@ exports.__esModule = true; //// [decoratorOnImportEquals2_1.js] "use strict"; exports.__esModule = true; +require("./decoratorOnImportEquals2_0"); diff --git a/tests/baselines/reference/duplicatePackage_globalMerge.js b/tests/baselines/reference/duplicatePackage_globalMerge.js index 6f12995e022fc..616209a490ae0 100644 --- a/tests/baselines/reference/duplicatePackage_globalMerge.js +++ b/tests/baselines/reference/duplicatePackage_globalMerge.js @@ -24,11 +24,15 @@ import { y } from '../tests/index' //// [index.js] "use strict"; exports.__esModule = true; +require("react"); exports.x = 1; //// [index.js] "use strict"; exports.__esModule = true; +require("react"); exports.y = 2; //// [bug25410.js] "use strict"; exports.__esModule = true; +require("./index"); +require("../tests/index"); diff --git a/tests/baselines/reference/duplicatePackage_packageIdIncludesSubModule.js b/tests/baselines/reference/duplicatePackage_packageIdIncludesSubModule.js index 9817641484e41..8d46ed59343fd 100644 --- a/tests/baselines/reference/duplicatePackage_packageIdIncludesSubModule.js +++ b/tests/baselines/reference/duplicatePackage_packageIdIncludesSubModule.js @@ -20,3 +20,5 @@ import { x } from "foo/Bar"; //// [index.js] "use strict"; exports.__esModule = true; +require("foo/Foo"); +require("foo/Bar"); diff --git a/tests/baselines/reference/duplicatePackage_referenceTypes.js b/tests/baselines/reference/duplicatePackage_referenceTypes.js index 2abd8090e0703..41469ece97426 100644 --- a/tests/baselines/reference/duplicatePackage_referenceTypes.js +++ b/tests/baselines/reference/duplicatePackage_referenceTypes.js @@ -28,4 +28,5 @@ let foo: Foo = a.foo; "use strict"; exports.__esModule = true; var a = require("a"); +require("foo"); var foo = a.foo; diff --git a/tests/baselines/reference/duplicatePackage_subModule.js b/tests/baselines/reference/duplicatePackage_subModule.js index 0a5793a79a2c7..92e54bcabe2e2 100644 --- a/tests/baselines/reference/duplicatePackage_subModule.js +++ b/tests/baselines/reference/duplicatePackage_subModule.js @@ -30,5 +30,6 @@ const o: Foo = a.o; //// [index.js] "use strict"; exports.__esModule = true; +require("foo/Foo"); var a = require("a"); var o = a.o; diff --git a/tests/baselines/reference/duplicatePackage_withErrors.js b/tests/baselines/reference/duplicatePackage_withErrors.js index a7fdafd522f5e..5bd398d8c1ba9 100644 --- a/tests/baselines/reference/duplicatePackage_withErrors.js +++ b/tests/baselines/reference/duplicatePackage_withErrors.js @@ -26,3 +26,5 @@ import { x as xb } from "b"; //// [a.js] "use strict"; exports.__esModule = true; +require("a"); +require("b"); diff --git a/tests/baselines/reference/dynamicNames.js b/tests/baselines/reference/dynamicNames.js index 9afc45d1a84ba..9ad0e16e4f8f4 100644 --- a/tests/baselines/reference/dynamicNames.js +++ b/tests/baselines/reference/dynamicNames.js @@ -164,6 +164,7 @@ exports.s0 = Symbol(); "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const module_1 = require("./module"); +require("./module"); var N; (function (N) { N.c2 = "a"; diff --git a/tests/baselines/reference/emptyDeclarationEmitIsModule.js b/tests/baselines/reference/emptyDeclarationEmitIsModule.js index fb0cea6365e1b..f4f1b1c1a09b5 100644 --- a/tests/baselines/reference/emptyDeclarationEmitIsModule.js +++ b/tests/baselines/reference/emptyDeclarationEmitIsModule.js @@ -12,9 +12,11 @@ export interface Bar { //// [index.js] "use strict"; exports.__esModule = true; +require("./module"); //// [module.js] "use strict"; exports.__esModule = true; +require("./index"); var Foo = /** @class */ (function () { function Foo() { } diff --git a/tests/baselines/reference/enums.js b/tests/baselines/reference/enums.js index 09243e4a7f134..b4f58273f8325 100644 --- a/tests/baselines/reference/enums.js +++ b/tests/baselines/reference/enums.js @@ -49,4 +49,5 @@ var flags; //// [c.js] "use strict"; exports.__esModule = true; +require("./a"); var flags = "Type" /* Type */; diff --git a/tests/baselines/reference/errorWithSameNameType.js b/tests/baselines/reference/errorWithSameNameType.js index 85dba75385364..f1da7bb408749 100644 --- a/tests/baselines/reference/errorWithSameNameType.js +++ b/tests/baselines/reference/errorWithSameNameType.js @@ -33,6 +33,8 @@ exports.__esModule = true; //// [c.js] "use strict"; exports.__esModule = true; +require("./a"); +require("./b"); var a; var b; if (a === b) { diff --git a/tests/baselines/reference/errorsOnImportedSymbol.js b/tests/baselines/reference/errorsOnImportedSymbol.js index 2d784b04d6558..7721eb25762be 100644 --- a/tests/baselines/reference/errorsOnImportedSymbol.js +++ b/tests/baselines/reference/errorsOnImportedSymbol.js @@ -20,5 +20,6 @@ Object.defineProperty(exports, "__esModule", { value: true }); //// [errorsOnImportedSymbol_1.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); +require("./errorsOnImportedSymbol_0"); var x = new Sammy.Sammy(); var y = Sammy.Sammy(); diff --git a/tests/baselines/reference/es5ModuleInternalNamedImports.js b/tests/baselines/reference/es5ModuleInternalNamedImports.js index 88b9c1b22ca89..eb3f09ca03e7c 100644 --- a/tests/baselines/reference/es5ModuleInternalNamedImports.js +++ b/tests/baselines/reference/es5ModuleInternalNamedImports.js @@ -36,7 +36,7 @@ import M3 from "M3"; //// [es5ModuleInternalNamedImports.js] -define(["require", "exports"], function (require, exports) { +define(["require", "exports", "M3"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var M; diff --git a/tests/baselines/reference/es6ExportAssignment2.js b/tests/baselines/reference/es6ExportAssignment2.js index 531c9e5a5ba3d..e741629de1342 100644 --- a/tests/baselines/reference/es6ExportAssignment2.js +++ b/tests/baselines/reference/es6ExportAssignment2.js @@ -11,3 +11,4 @@ import * as a from "a"; //// [a.js] var a = 10; //// [b.js] +import "a"; diff --git a/tests/baselines/reference/es6ExportAssignment3.js b/tests/baselines/reference/es6ExportAssignment3.js index 5a2cd208a5a7e..93ca61a24bd21 100644 --- a/tests/baselines/reference/es6ExportAssignment3.js +++ b/tests/baselines/reference/es6ExportAssignment3.js @@ -9,3 +9,4 @@ import * as a from "a"; //// [b.js] +import "a"; diff --git a/tests/baselines/reference/es6ExportAssignment4.js b/tests/baselines/reference/es6ExportAssignment4.js index 656dcc0729f77..dbb694512cf15 100644 --- a/tests/baselines/reference/es6ExportAssignment4.js +++ b/tests/baselines/reference/es6ExportAssignment4.js @@ -11,3 +11,4 @@ import * as a from "a"; //// [b.js] +import "a"; diff --git a/tests/baselines/reference/es6ExportEqualsInterop.js b/tests/baselines/reference/es6ExportEqualsInterop.js index 13908a29e2d6b..88a047427f28e 100644 --- a/tests/baselines/reference/es6ExportEqualsInterop.js +++ b/tests/baselines/reference/es6ExportEqualsInterop.js @@ -213,6 +213,8 @@ function __export(m) { for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } exports.__esModule = true; +// import-equals +require("interface"); var z2 = require("variable"); var z3 = require("interface-variable"); var z4 = require("module"); @@ -232,6 +234,19 @@ z7.a; z8.a; z9.a; z0.a; +// default import +require("interface"); +require("variable"); +require("interface-variable"); +require("module"); +require("interface-module"); +require("variable-module"); +require("function"); +require("function-module"); +require("class"); +require("class-module"); +// namespace import +require("interface"); var y2 = require("variable"); var y3 = require("interface-variable"); var y4 = require("module"); diff --git a/tests/baselines/reference/es6ImportDefaultBinding.js b/tests/baselines/reference/es6ImportDefaultBinding.js index bdc9b4b846317..2f559028ceb87 100644 --- a/tests/baselines/reference/es6ImportDefaultBinding.js +++ b/tests/baselines/reference/es6ImportDefaultBinding.js @@ -16,6 +16,7 @@ export default a; //// [es6ImportDefaultBinding_1.js] import defaultBinding from "es6ImportDefaultBinding_0"; var x = defaultBinding; +import "es6ImportDefaultBinding_0"; // elide this import since defaultBinding2 is not used //// [es6ImportDefaultBinding_0.d.ts] diff --git a/tests/baselines/reference/es6ImportDefaultBindingAmd.js b/tests/baselines/reference/es6ImportDefaultBindingAmd.js index 1f6b3c97c8fe3..093637f9e4289 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingAmd.js +++ b/tests/baselines/reference/es6ImportDefaultBindingAmd.js @@ -18,7 +18,7 @@ define(["require", "exports"], function (require, exports) { exports.default = a; }); //// [es6ImportDefaultBindingAmd_1.js] -define(["require", "exports", "es6ImportDefaultBindingAmd_0"], function (require, exports, es6ImportDefaultBindingAmd_0_1) { +define(["require", "exports", "es6ImportDefaultBindingAmd_0", "es6ImportDefaultBindingAmd_0"], function (require, exports, es6ImportDefaultBindingAmd_0_1) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var x = es6ImportDefaultBindingAmd_0_1.default; diff --git a/tests/baselines/reference/es6ImportDefaultBindingDts.js b/tests/baselines/reference/es6ImportDefaultBindingDts.js index 5011e3144fd16..f9bfc4212cb9b 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingDts.js +++ b/tests/baselines/reference/es6ImportDefaultBindingDts.js @@ -24,6 +24,7 @@ exports.default = c; Object.defineProperty(exports, "__esModule", { value: true }); var server_1 = require("./server"); exports.x = new server_1.default(); +require("./server"); // elide this import since defaultBinding2 is not used //// [server.d.ts] diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport.js b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport.js index ff8d6538b0496..5cf702df1bb62 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport.js +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport.js @@ -31,6 +31,7 @@ exports.default = {}; //// [es6ImportDefaultBindingFollowedWithNamedImport_1.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); +require("./es6ImportDefaultBindingFollowedWithNamedImport_0"); const es6ImportDefaultBindingFollowedWithNamedImport_0_1 = require("./es6ImportDefaultBindingFollowedWithNamedImport_0"); var x1 = es6ImportDefaultBindingFollowedWithNamedImport_0_1.a; const es6ImportDefaultBindingFollowedWithNamedImport_0_2 = require("./es6ImportDefaultBindingFollowedWithNamedImport_0"); diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportDts.js b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportDts.js index 05774d9961c4a..3b80ac7b96d94 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportDts.js +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportDts.js @@ -65,6 +65,7 @@ exports.x11 = x11; //// [client.js] "use strict"; exports.__esModule = true; +require("./server"); var server_1 = require("./server"); exports.x1 = new server_1.a(); var server_2 = require("./server"); diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportWithExport.js b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportWithExport.js index ff8c1059ad145..cb7f55f25810d 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportWithExport.js +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportWithExport.js @@ -31,7 +31,7 @@ define(["require", "exports"], function (require, exports) { exports.default = {}; }); //// [client.js] -define(["require", "exports", "server", "server", "server", "server", "server"], function (require, exports, server_1, server_2, server_3, server_4, server_5) { +define(["require", "exports", "server", "server", "server", "server", "server", "server"], function (require, exports, server_1, server_2, server_3, server_4, server_5) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.x1 = server_1.a; diff --git a/tests/baselines/reference/es6ImportDefaultBindingInEs5.js b/tests/baselines/reference/es6ImportDefaultBindingInEs5.js index a6175197d8eb4..f5318955a3a61 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingInEs5.js +++ b/tests/baselines/reference/es6ImportDefaultBindingInEs5.js @@ -14,6 +14,7 @@ module.exports = a; //// [es6ImportDefaultBindingInEs5_1.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); +require("./es6ImportDefaultBindingInEs5_0"); //// [es6ImportDefaultBindingInEs5_0.d.ts] diff --git a/tests/baselines/reference/es6ImportDefaultBindingMergeErrors.js b/tests/baselines/reference/es6ImportDefaultBindingMergeErrors.js index 85f3d34cd6781..228fec434a1e6 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingMergeErrors.js +++ b/tests/baselines/reference/es6ImportDefaultBindingMergeErrors.js @@ -25,4 +25,7 @@ exports.default = a; Object.defineProperty(exports, "__esModule", { value: true }); var es6ImportDefaultBindingMergeErrors_0_1 = require("./es6ImportDefaultBindingMergeErrors_0"); var x = es6ImportDefaultBindingMergeErrors_0_1.default; +require("./es6ImportDefaultBindingMergeErrors_0"); // Should be error var defaultBinding2 = "hello world"; +require("./es6ImportDefaultBindingMergeErrors_0"); // Should be error +require("./es6ImportDefaultBindingMergeErrors_0"); // SHould be error diff --git a/tests/baselines/reference/es6ImportDefaultBindingNoDefaultProperty.js b/tests/baselines/reference/es6ImportDefaultBindingNoDefaultProperty.js index 0b233910696c7..6395294703259 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingNoDefaultProperty.js +++ b/tests/baselines/reference/es6ImportDefaultBindingNoDefaultProperty.js @@ -14,3 +14,4 @@ exports.a = 10; //// [es6ImportDefaultBindingNoDefaultProperty_1.js] "use strict"; exports.__esModule = true; +require("./es6ImportDefaultBindingNoDefaultProperty_0"); diff --git a/tests/baselines/reference/es6ImportDefaultBindingWithExport.js b/tests/baselines/reference/es6ImportDefaultBindingWithExport.js index 38b391ac6d315..1b2ecf4baca5c 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingWithExport.js +++ b/tests/baselines/reference/es6ImportDefaultBindingWithExport.js @@ -17,7 +17,7 @@ define(["require", "exports"], function (require, exports) { exports.default = a; }); //// [client.js] -define(["require", "exports", "server"], function (require, exports, server_1) { +define(["require", "exports", "server", "server"], function (require, exports, server_1) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.x = server_1.default; diff --git a/tests/baselines/reference/es6ImportEqualsDeclaration.js b/tests/baselines/reference/es6ImportEqualsDeclaration.js index 1ca0e94cf8aa9..8ef9678fa1f56 100644 --- a/tests/baselines/reference/es6ImportEqualsDeclaration.js +++ b/tests/baselines/reference/es6ImportEqualsDeclaration.js @@ -10,3 +10,4 @@ import a = require("server"); //// [server.js] var a = 10; //// [client.js] +import "server"; diff --git a/tests/baselines/reference/es6ImportEqualsDeclaration2.js b/tests/baselines/reference/es6ImportEqualsDeclaration2.js index cc6d33a9afa4c..48699f43d0d3d 100644 --- a/tests/baselines/reference/es6ImportEqualsDeclaration2.js +++ b/tests/baselines/reference/es6ImportEqualsDeclaration2.js @@ -20,3 +20,4 @@ import {a} from "server"; //// [client.js] +import "server"; diff --git a/tests/baselines/reference/es6ImportNameSpaceImport.js b/tests/baselines/reference/es6ImportNameSpaceImport.js index 7ab8a62bf6fe3..1453d71846737 100644 --- a/tests/baselines/reference/es6ImportNameSpaceImport.js +++ b/tests/baselines/reference/es6ImportNameSpaceImport.js @@ -18,6 +18,7 @@ exports.a = 10; Object.defineProperty(exports, "__esModule", { value: true }); const nameSpaceBinding = require("./es6ImportNameSpaceImport_0"); var x = nameSpaceBinding.a; +require("./es6ImportNameSpaceImport_0"); // elide this //// [es6ImportNameSpaceImport_0.d.ts] diff --git a/tests/baselines/reference/es6ImportNameSpaceImportAmd.js b/tests/baselines/reference/es6ImportNameSpaceImportAmd.js index 17a0509f09331..f502e5266e711 100644 --- a/tests/baselines/reference/es6ImportNameSpaceImportAmd.js +++ b/tests/baselines/reference/es6ImportNameSpaceImportAmd.js @@ -16,7 +16,7 @@ define(["require", "exports"], function (require, exports) { exports.a = 10; }); //// [es6ImportNameSpaceImportAmd_1.js] -define(["require", "exports", "es6ImportNameSpaceImportAmd_0"], function (require, exports, nameSpaceBinding) { +define(["require", "exports", "es6ImportNameSpaceImportAmd_0", "es6ImportNameSpaceImportAmd_0"], function (require, exports, nameSpaceBinding) { "use strict"; exports.__esModule = true; var x = nameSpaceBinding.a; diff --git a/tests/baselines/reference/es6ImportNameSpaceImportDts.js b/tests/baselines/reference/es6ImportNameSpaceImportDts.js index e39402c36332c..99be98c04cffb 100644 --- a/tests/baselines/reference/es6ImportNameSpaceImportDts.js +++ b/tests/baselines/reference/es6ImportNameSpaceImportDts.js @@ -23,6 +23,7 @@ exports.c = c; exports.__esModule = true; var nameSpaceBinding = require("./server"); exports.x = new nameSpaceBinding.c(); +require("./server"); // unreferenced //// [server.d.ts] diff --git a/tests/baselines/reference/es6ImportNameSpaceImportInEs5.js b/tests/baselines/reference/es6ImportNameSpaceImportInEs5.js index 4382d8f16b294..6fcf69a73a464 100644 --- a/tests/baselines/reference/es6ImportNameSpaceImportInEs5.js +++ b/tests/baselines/reference/es6ImportNameSpaceImportInEs5.js @@ -18,6 +18,7 @@ exports.a = 10; Object.defineProperty(exports, "__esModule", { value: true }); var nameSpaceBinding = require("./es6ImportNameSpaceImportInEs5_0"); var x = nameSpaceBinding.a; +require("./es6ImportNameSpaceImportInEs5_0"); // elide this //// [es6ImportNameSpaceImportInEs5_0.d.ts] diff --git a/tests/baselines/reference/es6ImportNameSpaceImportMergeErrors.js b/tests/baselines/reference/es6ImportNameSpaceImportMergeErrors.js index 1a41e265e7dfc..cd0edc24bb8a6 100644 --- a/tests/baselines/reference/es6ImportNameSpaceImportMergeErrors.js +++ b/tests/baselines/reference/es6ImportNameSpaceImportMergeErrors.js @@ -21,4 +21,8 @@ exports.a = 10; //// [es6ImportNameSpaceImportMergeErrors_1.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); +require("./es6ImportNameSpaceImportMergeErrors_0"); +require("./es6ImportNameSpaceImportMergeErrors_0"); // should be error +require("./es6ImportNameSpaceImportMergeErrors_0"); // should be error +require("./es6ImportNameSpaceImportMergeErrors_0"); // should be error var nameSpaceBinding3 = 10; diff --git a/tests/baselines/reference/es6ImportNameSpaceImportNoNamedExports.js b/tests/baselines/reference/es6ImportNameSpaceImportNoNamedExports.js index 760a4a9682818..23947d9276431 100644 --- a/tests/baselines/reference/es6ImportNameSpaceImportNoNamedExports.js +++ b/tests/baselines/reference/es6ImportNameSpaceImportNoNamedExports.js @@ -14,3 +14,4 @@ module.exports = a; //// [es6ImportNameSpaceImportNoNamedExports_1.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); +require("./es6ImportNameSpaceImportNoNamedExports_0"); // error diff --git a/tests/baselines/reference/es6ImportNameSpaceImportWithExport.js b/tests/baselines/reference/es6ImportNameSpaceImportWithExport.js index 57aa0cf0c05c3..a2ce760a00fe6 100644 --- a/tests/baselines/reference/es6ImportNameSpaceImportWithExport.js +++ b/tests/baselines/reference/es6ImportNameSpaceImportWithExport.js @@ -16,7 +16,7 @@ define(["require", "exports"], function (require, exports) { exports.a = 10; }); //// [client.js] -define(["require", "exports", "server"], function (require, exports, nameSpaceBinding) { +define(["require", "exports", "server", "server"], function (require, exports, nameSpaceBinding) { "use strict"; exports.__esModule = true; exports.x = nameSpaceBinding.a; diff --git a/tests/baselines/reference/es6ImportNamedImport.js b/tests/baselines/reference/es6ImportNamedImport.js index 0ce1c57403e38..ac02b81b6adce 100644 --- a/tests/baselines/reference/es6ImportNamedImport.js +++ b/tests/baselines/reference/es6ImportNamedImport.js @@ -54,6 +54,7 @@ exports.aaaa = 10; //// [es6ImportNamedImport_1.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); +require("./es6ImportNamedImport_0"); const es6ImportNamedImport_0_1 = require("./es6ImportNamedImport_0"); var xxxx = es6ImportNamedImport_0_1.a; const es6ImportNamedImport_0_2 = require("./es6ImportNamedImport_0"); @@ -75,6 +76,10 @@ const es6ImportNamedImport_0_8 = require("./es6ImportNamedImport_0"); var z111 = es6ImportNamedImport_0_8.z1; const es6ImportNamedImport_0_9 = require("./es6ImportNamedImport_0"); var z2 = es6ImportNamedImport_0_9.z2; // z2 shouldn't give redeclare error +// These are elided +require("./es6ImportNamedImport_0"); +// These are elided +require("./es6ImportNamedImport_0"); //// [es6ImportNamedImport_0.d.ts] diff --git a/tests/baselines/reference/es6ImportNamedImportAmd.js b/tests/baselines/reference/es6ImportNamedImportAmd.js index 6b7a4bd5743df..5118b0c5e7caf 100644 --- a/tests/baselines/reference/es6ImportNamedImportAmd.js +++ b/tests/baselines/reference/es6ImportNamedImportAmd.js @@ -54,7 +54,7 @@ define(["require", "exports"], function (require, exports) { exports.aaaa = 10; }); //// [es6ImportNamedImportAmd_1.js] -define(["require", "exports", "es6ImportNamedImportAmd_0", "es6ImportNamedImportAmd_0", "es6ImportNamedImportAmd_0", "es6ImportNamedImportAmd_0", "es6ImportNamedImportAmd_0", "es6ImportNamedImportAmd_0", "es6ImportNamedImportAmd_0", "es6ImportNamedImportAmd_0", "es6ImportNamedImportAmd_0"], function (require, exports, es6ImportNamedImportAmd_0_1, es6ImportNamedImportAmd_0_2, es6ImportNamedImportAmd_0_3, es6ImportNamedImportAmd_0_4, es6ImportNamedImportAmd_0_5, es6ImportNamedImportAmd_0_6, es6ImportNamedImportAmd_0_7, es6ImportNamedImportAmd_0_8, es6ImportNamedImportAmd_0_9) { +define(["require", "exports", "es6ImportNamedImportAmd_0", "es6ImportNamedImportAmd_0", "es6ImportNamedImportAmd_0", "es6ImportNamedImportAmd_0", "es6ImportNamedImportAmd_0", "es6ImportNamedImportAmd_0", "es6ImportNamedImportAmd_0", "es6ImportNamedImportAmd_0", "es6ImportNamedImportAmd_0", "es6ImportNamedImportAmd_0", "es6ImportNamedImportAmd_0", "es6ImportNamedImportAmd_0"], function (require, exports, es6ImportNamedImportAmd_0_1, es6ImportNamedImportAmd_0_2, es6ImportNamedImportAmd_0_3, es6ImportNamedImportAmd_0_4, es6ImportNamedImportAmd_0_5, es6ImportNamedImportAmd_0_6, es6ImportNamedImportAmd_0_7, es6ImportNamedImportAmd_0_8, es6ImportNamedImportAmd_0_9) { "use strict"; exports.__esModule = true; var xxxx = es6ImportNamedImportAmd_0_1.a; diff --git a/tests/baselines/reference/es6ImportNamedImportDts.js b/tests/baselines/reference/es6ImportNamedImportDts.js index ea001629665db..0b6d1c9f2f4df 100644 --- a/tests/baselines/reference/es6ImportNamedImportDts.js +++ b/tests/baselines/reference/es6ImportNamedImportDts.js @@ -135,6 +135,7 @@ exports.aaaa1 = aaaa1; //// [client.js] "use strict"; exports.__esModule = true; +require("./server"); var server_1 = require("./server"); exports.xxxx = new server_1.a(); var server_2 = require("./server"); @@ -156,6 +157,9 @@ var server_8 = require("./server"); exports.z111 = new server_8.z1(); var server_9 = require("./server"); exports.z2 = new server_9.z2(); // z2 shouldn't give redeclare error +// not referenced +require("./server"); +require("./server"); //// [server.d.ts] diff --git a/tests/baselines/reference/es6ImportNamedImportIdentifiersParsing.js b/tests/baselines/reference/es6ImportNamedImportIdentifiersParsing.js index 5e22dd98bd442..2986b559bf613 100644 --- a/tests/baselines/reference/es6ImportNamedImportIdentifiersParsing.js +++ b/tests/baselines/reference/es6ImportNamedImportIdentifiersParsing.js @@ -6,3 +6,8 @@ import { default as yield } from "somemodule"; // no error import { default as default } from "somemodule"; // default as is ok, error of default binding name //// [es6ImportNamedImportIdentifiersParsing.js] +import "somemodule"; // Allowed +import "somemodule"; // Error - as this is keyword that is not allowed as identifier +import "somemodule"; // error to use default as binding name +import "somemodule"; // no error +import "somemodule"; // default as is ok, error of default binding name diff --git a/tests/baselines/reference/es6ImportNamedImportInEs5.js b/tests/baselines/reference/es6ImportNamedImportInEs5.js index 9226170d84b51..dfaafd1d5ce34 100644 --- a/tests/baselines/reference/es6ImportNamedImportInEs5.js +++ b/tests/baselines/reference/es6ImportNamedImportInEs5.js @@ -54,6 +54,7 @@ exports.aaaa = 10; //// [es6ImportNamedImportInEs5_1.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); +require("./es6ImportNamedImportInEs5_0"); var es6ImportNamedImportInEs5_0_1 = require("./es6ImportNamedImportInEs5_0"); var xxxx = es6ImportNamedImportInEs5_0_1.a; var es6ImportNamedImportInEs5_0_2 = require("./es6ImportNamedImportInEs5_0"); @@ -75,6 +76,10 @@ var es6ImportNamedImportInEs5_0_8 = require("./es6ImportNamedImportInEs5_0"); var z111 = es6ImportNamedImportInEs5_0_8.z1; var es6ImportNamedImportInEs5_0_9 = require("./es6ImportNamedImportInEs5_0"); var z2 = es6ImportNamedImportInEs5_0_9.z2; // z2 shouldn't give redeclare error +// These are elided +require("./es6ImportNamedImportInEs5_0"); +// These are elided +require("./es6ImportNamedImportInEs5_0"); //// [es6ImportNamedImportInEs5_0.d.ts] diff --git a/tests/baselines/reference/es6ImportNamedImportMergeErrors.js b/tests/baselines/reference/es6ImportNamedImportMergeErrors.js index 61b2cbf76b3e2..abbcedcabe186 100644 --- a/tests/baselines/reference/es6ImportNamedImportMergeErrors.js +++ b/tests/baselines/reference/es6ImportNamedImportMergeErrors.js @@ -29,5 +29,11 @@ exports.z1 = exports.a; //// [es6ImportNamedImportMergeErrors_1.js] "use strict"; exports.__esModule = true; +require("./es6ImportNamedImportMergeErrors_0"); +require("./es6ImportNamedImportMergeErrors_0"); +require("./es6ImportNamedImportMergeErrors_0"); // should be error var x = 10; +require("./es6ImportNamedImportMergeErrors_0"); // should be error var x44 = 10; +require("./es6ImportNamedImportMergeErrors_0"); // should be error +require("./es6ImportNamedImportMergeErrors_0"); // should be error diff --git a/tests/baselines/reference/es6ImportNamedImportNoExportMember.js b/tests/baselines/reference/es6ImportNamedImportNoExportMember.js index 2c8e9fe5fecfd..11ee7f79773e4 100644 --- a/tests/baselines/reference/es6ImportNamedImportNoExportMember.js +++ b/tests/baselines/reference/es6ImportNamedImportNoExportMember.js @@ -16,3 +16,5 @@ exports.x = exports.a; //// [es6ImportNamedImport_1.js] "use strict"; exports.__esModule = true; +require("./es6ImportNamedImportNoExportMember_0"); +require("./es6ImportNamedImportNoExportMember_0"); diff --git a/tests/baselines/reference/es6ImportNamedImportNoNamedExports.js b/tests/baselines/reference/es6ImportNamedImportNoNamedExports.js index ea0d398355ec8..787467b81d892 100644 --- a/tests/baselines/reference/es6ImportNamedImportNoNamedExports.js +++ b/tests/baselines/reference/es6ImportNamedImportNoNamedExports.js @@ -15,3 +15,5 @@ module.exports = a; //// [es6ImportNamedImportNoNamedExports_1.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); +require("./es6ImportNamedImportNoNamedExports_0"); +require("./es6ImportNamedImportNoNamedExports_0"); diff --git a/tests/baselines/reference/es6ImportNamedImportParsingError.js b/tests/baselines/reference/es6ImportNamedImportParsingError.js index 76f14f91ff2b3..538e59ab6611b 100644 --- a/tests/baselines/reference/es6ImportNamedImportParsingError.js +++ b/tests/baselines/reference/es6ImportNamedImportParsingError.js @@ -16,8 +16,10 @@ export var a = 10; export var x = a; export var m = a; //// [es6ImportNamedImportParsingError_1.js] +import * ; from; "es6ImportNamedImportParsingError_0"; +import "es6ImportNamedImportParsingError_0"; { a; } diff --git a/tests/baselines/reference/es6ImportNamedImportWithExport.js b/tests/baselines/reference/es6ImportNamedImportWithExport.js index b864f86258ef1..57729915c04fa 100644 --- a/tests/baselines/reference/es6ImportNamedImportWithExport.js +++ b/tests/baselines/reference/es6ImportNamedImportWithExport.js @@ -53,6 +53,7 @@ exports.aaaa = 10; //// [client.js] "use strict"; exports.__esModule = true; +require("./server"); var server_1 = require("./server"); exports.xxxx = server_1.a; var server_2 = require("./server"); @@ -74,6 +75,9 @@ var server_8 = require("./server"); exports.z111 = server_8.z1; var server_9 = require("./server"); exports.z2 = server_9.z2; // z2 shouldn't give redeclare error +// Non referenced imports +require("./server"); +require("./server"); //// [server.d.ts] diff --git a/tests/baselines/reference/es6modulekindWithES5Target10.js b/tests/baselines/reference/es6modulekindWithES5Target10.js index 037ff12a0b086..616b3638f512f 100644 --- a/tests/baselines/reference/es6modulekindWithES5Target10.js +++ b/tests/baselines/reference/es6modulekindWithES5Target10.js @@ -7,3 +7,4 @@ namespace N { export = N; // Error //// [es6modulekindWithES5Target10.js] +import "mod"; // Error; diff --git a/tests/baselines/reference/esnextmodulekindWithES5Target10.js b/tests/baselines/reference/esnextmodulekindWithES5Target10.js index e68e1d72b982b..01b461f3c61cf 100644 --- a/tests/baselines/reference/esnextmodulekindWithES5Target10.js +++ b/tests/baselines/reference/esnextmodulekindWithES5Target10.js @@ -7,3 +7,4 @@ namespace N { export = N; // Error //// [esnextmodulekindWithES5Target10.js] +import "mod"; // Error; diff --git a/tests/baselines/reference/exportAssignClassAndModule.js b/tests/baselines/reference/exportAssignClassAndModule.js index ba3d04c8f53f1..3feb603224828 100644 --- a/tests/baselines/reference/exportAssignClassAndModule.js +++ b/tests/baselines/reference/exportAssignClassAndModule.js @@ -29,6 +29,8 @@ module.exports = Foo; //// [exportAssignClassAndModule_1.js] "use strict"; exports.__esModule = true; +/// +require("./exportAssignClassAndModule_0"); var z; var zz; zz.x; diff --git a/tests/baselines/reference/exportAssignedTypeAsTypeAnnotation.js b/tests/baselines/reference/exportAssignedTypeAsTypeAnnotation.js index 2d36cffdd176e..4b997d4616a4f 100644 --- a/tests/baselines/reference/exportAssignedTypeAsTypeAnnotation.js +++ b/tests/baselines/reference/exportAssignedTypeAsTypeAnnotation.js @@ -19,7 +19,7 @@ define(["require", "exports"], function (require, exports) { exports.__esModule = true; }); //// [exportAssignedTypeAsTypeAnnotation_1.js] -define(["require", "exports"], function (require, exports) { +define(["require", "exports", "exportAssignedTypeAsTypeAnnotation_0"], function (require, exports) { "use strict"; exports.__esModule = true; var t2; // should not raise a 'container type' error diff --git a/tests/baselines/reference/exportAssignmentInterface.js b/tests/baselines/reference/exportAssignmentInterface.js index f3cc9ae9bbe8c..0163eb6a03b86 100644 --- a/tests/baselines/reference/exportAssignmentInterface.js +++ b/tests/baselines/reference/exportAssignmentInterface.js @@ -20,7 +20,7 @@ define(["require", "exports"], function (require, exports) { exports.__esModule = true; }); //// [exportAssignmentInterface_B.js] -define(["require", "exports"], function (require, exports) { +define(["require", "exports", "exportAssignmentInterface_A"], function (require, exports) { "use strict"; exports.__esModule = true; var i; diff --git a/tests/baselines/reference/exportAssignmentMembersVisibleInAugmentation.js b/tests/baselines/reference/exportAssignmentMembersVisibleInAugmentation.js index 8690fecc969a8..77b1d1cf13754 100644 --- a/tests/baselines/reference/exportAssignmentMembersVisibleInAugmentation.js +++ b/tests/baselines/reference/exportAssignmentMembersVisibleInAugmentation.js @@ -22,9 +22,11 @@ declare module "foo" { //// [a.js] "use strict"; exports.__esModule = true; +require("foo"); //// [b.js] "use strict"; exports.__esModule = true; +require("foo"); //// [a.d.ts] diff --git a/tests/baselines/reference/exportAssignmentMergedInterface.js b/tests/baselines/reference/exportAssignmentMergedInterface.js index 3ee760dedfa54..8423f4b52c35d 100644 --- a/tests/baselines/reference/exportAssignmentMergedInterface.js +++ b/tests/baselines/reference/exportAssignmentMergedInterface.js @@ -28,7 +28,7 @@ define(["require", "exports"], function (require, exports) { exports.__esModule = true; }); //// [foo_1.js] -define(["require", "exports"], function (require, exports) { +define(["require", "exports", "./foo_0"], function (require, exports) { "use strict"; exports.__esModule = true; var x; diff --git a/tests/baselines/reference/exportAssignmentOfDeclaredExternalModule.js b/tests/baselines/reference/exportAssignmentOfDeclaredExternalModule.js index 6c61eeedfc110..d0b96cda3def4 100644 --- a/tests/baselines/reference/exportAssignmentOfDeclaredExternalModule.js +++ b/tests/baselines/reference/exportAssignmentOfDeclaredExternalModule.js @@ -22,6 +22,8 @@ exports.__esModule = true; //// [exportAssignmentOfDeclaredExternalModule_1.js] "use strict"; exports.__esModule = true; +/// +require("./exportAssignmentOfDeclaredExternalModule_0"); var x = new Sammy(); // error to use as constructor as there is not constructor symbol var y = Sammy(); // error to use interface name as call target var z; // no error - z is of type interface Sammy from module 'M' diff --git a/tests/baselines/reference/exportAssignmentWithoutAllowSyntheticDefaultImportsError.js b/tests/baselines/reference/exportAssignmentWithoutAllowSyntheticDefaultImportsError.js index 5d433cba79b71..c8422563b9847 100644 --- a/tests/baselines/reference/exportAssignmentWithoutAllowSyntheticDefaultImportsError.js +++ b/tests/baselines/reference/exportAssignmentWithoutAllowSyntheticDefaultImportsError.js @@ -10,3 +10,4 @@ import bar from './bar'; //// [bar.js] function bar() { } //// [foo.js] +import './bar'; diff --git a/tests/baselines/reference/exportClassExtendingIntersection.js b/tests/baselines/reference/exportClassExtendingIntersection.js index dcc2480579634..c4921bbe45c07 100644 --- a/tests/baselines/reference/exportClassExtendingIntersection.js +++ b/tests/baselines/reference/exportClassExtendingIntersection.js @@ -60,6 +60,7 @@ var __extends = (this && this.__extends) || (function () { }; })(); exports.__esModule = true; +require("./BaseClass"); function MyMixin(base) { return /** @class */ (function (_super) { __extends(class_1, _super); diff --git a/tests/baselines/reference/exportDeclaration.js b/tests/baselines/reference/exportDeclaration.js index 2699093d1323d..5fab92d93cffb 100644 --- a/tests/baselines/reference/exportDeclaration.js +++ b/tests/baselines/reference/exportDeclaration.js @@ -21,4 +21,5 @@ var A = /** @class */ (function () { //// [b.js] "use strict"; exports.__esModule = true; +require("./a"); new A(); diff --git a/tests/baselines/reference/exportDeclaration_moduleSpecifier.js b/tests/baselines/reference/exportDeclaration_moduleSpecifier.js index edc093f700b89..a57204c9722ad 100644 --- a/tests/baselines/reference/exportDeclaration_moduleSpecifier.js +++ b/tests/baselines/reference/exportDeclaration_moduleSpecifier.js @@ -27,4 +27,5 @@ exports.__esModule = true; //// [c.js] "use strict"; exports.__esModule = true; +require("./b"); new A(); diff --git a/tests/baselines/reference/exportDefaultInterface.js b/tests/baselines/reference/exportDefaultInterface.js index e7b5c945e327e..38ac96b608be6 100644 --- a/tests/baselines/reference/exportDefaultInterface.js +++ b/tests/baselines/reference/exportDefaultInterface.js @@ -20,5 +20,6 @@ a.value.toExponential(); //// [b.js] "use strict"; exports.__esModule = true; +require("./a"); var a; a.value.toExponential(); diff --git a/tests/baselines/reference/exportImportNonInstantiatedModule2.js b/tests/baselines/reference/exportImportNonInstantiatedModule2.js index a1217fa485b5e..2038e46996d86 100644 --- a/tests/baselines/reference/exportImportNonInstantiatedModule2.js +++ b/tests/baselines/reference/exportImportNonInstantiatedModule2.js @@ -20,12 +20,12 @@ define(["require", "exports"], function (require, exports) { exports.__esModule = true; }); //// [exporter.js] -define(["require", "exports"], function (require, exports) { +define(["require", "exports", "./w1"], function (require, exports) { "use strict"; exports.__esModule = true; }); //// [consumer.js] -define(["require", "exports"], function (require, exports) { +define(["require", "exports", "./exporter"], function (require, exports) { "use strict"; exports.__esModule = true; function w() { diff --git a/tests/baselines/reference/exportSpellingSuggestion.js b/tests/baselines/reference/exportSpellingSuggestion.js index 66bf80f609422..a1eb1ee515570 100644 --- a/tests/baselines/reference/exportSpellingSuggestion.js +++ b/tests/baselines/reference/exportSpellingSuggestion.js @@ -19,3 +19,4 @@ exports.assertNever = assertNever; //// [b.js] "use strict"; exports.__esModule = true; +require("./a"); diff --git a/tests/baselines/reference/exportsAndImportsWithContextualKeywordNames01.js b/tests/baselines/reference/exportsAndImportsWithContextualKeywordNames01.js index 1cd4fee3c7924..7380a9f2d1467 100644 --- a/tests/baselines/reference/exportsAndImportsWithContextualKeywordNames01.js +++ b/tests/baselines/reference/exportsAndImportsWithContextualKeywordNames01.js @@ -31,9 +31,12 @@ exports.get = get; //// [t2.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); +require("./t1"); //// [t3.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); +require("./t1"); //// [t4.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); +require("./t1"); diff --git a/tests/baselines/reference/exportsAndImportsWithContextualKeywordNames02.js b/tests/baselines/reference/exportsAndImportsWithContextualKeywordNames02.js index cf1976e5b03f2..f4a51dff60392 100644 --- a/tests/baselines/reference/exportsAndImportsWithContextualKeywordNames02.js +++ b/tests/baselines/reference/exportsAndImportsWithContextualKeywordNames02.js @@ -31,6 +31,8 @@ var y = as.return; //// [t3.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); +require("./t1"); //// [t4.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); +require("./t1"); diff --git a/tests/baselines/reference/extendingClassFromAliasAndUsageInIndexer.js b/tests/baselines/reference/extendingClassFromAliasAndUsageInIndexer.js index a25d6dc5f3690..917eadc4f65b2 100644 --- a/tests/baselines/reference/extendingClassFromAliasAndUsageInIndexer.js +++ b/tests/baselines/reference/extendingClassFromAliasAndUsageInIndexer.js @@ -94,6 +94,7 @@ exports.VisualizationModel = VisualizationModel; //// [extendingClassFromAliasAndUsageInIndexer_main.js] "use strict"; exports.__esModule = true; +require("./extendingClassFromAliasAndUsageInIndexer_backbone"); var moduleA = require("./extendingClassFromAliasAndUsageInIndexer_moduleA"); var moduleB = require("./extendingClassFromAliasAndUsageInIndexer_moduleB"); var moduleATyped = moduleA; diff --git a/tests/baselines/reference/extendsUntypedModule.js b/tests/baselines/reference/extendsUntypedModule.js index ff5dce7df0de5..10562a4783a48 100644 --- a/tests/baselines/reference/extendsUntypedModule.js +++ b/tests/baselines/reference/extendsUntypedModule.js @@ -31,6 +31,7 @@ var __extends = (this && this.__extends) || (function () { })(); exports.__esModule = true; var foo_1 = require("foo"); +require("bar"); // error: unused var A = /** @class */ (function (_super) { __extends(A, _super); function A() { diff --git a/tests/baselines/reference/functionAndImportNameConflict.js b/tests/baselines/reference/functionAndImportNameConflict.js index 2bc6d91b2c3e6..daf839ccd301d 100644 --- a/tests/baselines/reference/functionAndImportNameConflict.js +++ b/tests/baselines/reference/functionAndImportNameConflict.js @@ -18,6 +18,7 @@ exports.f = f; //// [f2.js] "use strict"; exports.__esModule = true; +require("./f1"); function f() { } exports.f = f; diff --git a/tests/baselines/reference/generic.js b/tests/baselines/reference/generic.js index ba9093b688330..4d52629ee8233 100644 --- a/tests/baselines/reference/generic.js +++ b/tests/baselines/reference/generic.js @@ -24,6 +24,7 @@ exports.A = A; //// [b.js] "use strict"; exports.__esModule = true; +require("./a"); var a = { a: "" }; var b = { a: 3 }; var c = {}; diff --git a/tests/baselines/reference/importCallExpressionCheckReturntype1.js b/tests/baselines/reference/importCallExpressionCheckReturntype1.js index 3cc4893ff6720..8fb905a6f514c 100644 --- a/tests/baselines/reference/importCallExpressionCheckReturntype1.js +++ b/tests/baselines/reference/importCallExpressionCheckReturntype1.js @@ -30,6 +30,8 @@ exports.C = C; //// [1.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); +require("./defaultPath"); +require("./anotherModule"); let p1 = Promise.resolve().then(() => require("./defaultPath")); let p2 = Promise.resolve().then(() => require("./defaultPath")); let p3 = Promise.resolve().then(() => require("./defaultPath")); diff --git a/tests/baselines/reference/importCallExpressionDeclarationEmit3.js b/tests/baselines/reference/importCallExpressionDeclarationEmit3.js index d38c2309a3308..8dedb5abbec8b 100644 --- a/tests/baselines/reference/importCallExpressionDeclarationEmit3.js +++ b/tests/baselines/reference/importCallExpressionDeclarationEmit3.js @@ -16,6 +16,7 @@ export var p2: Promise = import("./0"); //// [0.js] export function foo() { return "foo"; } //// [1.js] +import "./0"; import("./0"); export var p0 = import(getPath()); export var p1 = import("./0"); diff --git a/tests/baselines/reference/importCallExpressionIncorrect1.js b/tests/baselines/reference/importCallExpressionIncorrect1.js index c007d1c8c6fe8..89393f21f575a 100644 --- a/tests/baselines/reference/importCallExpressionIncorrect1.js +++ b/tests/baselines/reference/importCallExpressionIncorrect1.js @@ -11,3 +11,4 @@ import { foo } from './0'; export function foo() { return "foo"; } //// [1.js] import ; +import './0'; diff --git a/tests/baselines/reference/importCallExpressionIncorrect2.js b/tests/baselines/reference/importCallExpressionIncorrect2.js index 718bef9b9a8e3..7f99125d9f84d 100644 --- a/tests/baselines/reference/importCallExpressionIncorrect2.js +++ b/tests/baselines/reference/importCallExpressionIncorrect2.js @@ -10,3 +10,4 @@ var x = import { foo } from './0'; export function foo() { return "foo"; } //// [1.js] var x = ; +import './0'; diff --git a/tests/baselines/reference/importCallExpressionReturnPromiseOfAny.js b/tests/baselines/reference/importCallExpressionReturnPromiseOfAny.js index 8c94510b6095b..548d4dd94683e 100644 --- a/tests/baselines/reference/importCallExpressionReturnPromiseOfAny.js +++ b/tests/baselines/reference/importCallExpressionReturnPromiseOfAny.js @@ -42,6 +42,7 @@ exports.C = C; //// [1.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); +require("./defaultPath"); Promise.resolve().then(() => require(`${directory}\${moduleFile}`)); Promise.resolve().then(() => require(getSpecifier())); var p1 = Promise.resolve().then(() => require(ValidSomeCondition() ? "./0" : "externalModule")); diff --git a/tests/baselines/reference/importDecl.js b/tests/baselines/reference/importDecl.js index 2eb9208910a07..b5401b4b029c2 100644 --- a/tests/baselines/reference/importDecl.js +++ b/tests/baselines/reference/importDecl.js @@ -129,6 +129,7 @@ exports.foo = foo; //// [importDecl_require4.js] "use strict"; exports.__esModule = true; +require("./importDecl_require"); function foo2() { return null; } exports.foo2 = foo2; //// [importDecl_1.js] diff --git a/tests/baselines/reference/importDeclRefereingExternalModuleWithNoResolve.js b/tests/baselines/reference/importDeclRefereingExternalModuleWithNoResolve.js index 1aadcb875f08b..3f73164523164 100644 --- a/tests/baselines/reference/importDeclRefereingExternalModuleWithNoResolve.js +++ b/tests/baselines/reference/importDeclRefereingExternalModuleWithNoResolve.js @@ -8,3 +8,4 @@ declare module "m1" { //// [importDeclRefereingExternalModuleWithNoResolve.js] "use strict"; exports.__esModule = true; +require("externalModule"); diff --git a/tests/baselines/reference/importDeclTypes.js b/tests/baselines/reference/importDeclTypes.js index 640dd4a19b46b..0377eda86279f 100644 --- a/tests/baselines/reference/importDeclTypes.js +++ b/tests/baselines/reference/importDeclTypes.js @@ -13,3 +13,4 @@ import { Foo } from "@types/foo-bar"; //// [a.js] "use strict"; exports.__esModule = true; +require("@types/foo-bar"); diff --git a/tests/baselines/reference/importDeclarationUsedAsTypeQuery.js b/tests/baselines/reference/importDeclarationUsedAsTypeQuery.js index a6431f6a2c3f0..51c88cec56cf6 100644 --- a/tests/baselines/reference/importDeclarationUsedAsTypeQuery.js +++ b/tests/baselines/reference/importDeclarationUsedAsTypeQuery.js @@ -23,6 +23,8 @@ exports.B = B; //// [importDeclarationUsedAsTypeQuery_1.js] "use strict"; exports.__esModule = true; +/// +require("./importDeclarationUsedAsTypeQuery_require"); //// [importDeclarationUsedAsTypeQuery_require.d.ts] diff --git a/tests/baselines/reference/importDefaultNamedType.js b/tests/baselines/reference/importDefaultNamedType.js index 72f4f462ce4a5..0c5115f6ec944 100644 --- a/tests/baselines/reference/importDefaultNamedType.js +++ b/tests/baselines/reference/importDefaultNamedType.js @@ -19,3 +19,4 @@ exports["default"] = A; //// [b.js] "use strict"; exports.__esModule = true; +require("./a"); diff --git a/tests/baselines/reference/importEmptyFromModuleNotExisted.js b/tests/baselines/reference/importEmptyFromModuleNotExisted.js index aa08db2e99e7f..fd108f956358e 100644 --- a/tests/baselines/reference/importEmptyFromModuleNotExisted.js +++ b/tests/baselines/reference/importEmptyFromModuleNotExisted.js @@ -5,3 +5,4 @@ import {} from 'module-not-existed' //// [importEmptyFromModuleNotExisted.js] "use strict"; exports.__esModule = true; +require("module-not-existed"); diff --git a/tests/baselines/reference/importImportOnlyModule.js b/tests/baselines/reference/importImportOnlyModule.js index 2bba9ec447842..b7162697ef1d2 100644 --- a/tests/baselines/reference/importImportOnlyModule.js +++ b/tests/baselines/reference/importImportOnlyModule.js @@ -29,7 +29,7 @@ define(["require", "exports"], function (require, exports) { exports.C1 = C1; }); //// [foo_1.js] -define(["require", "exports"], function (require, exports) { +define(["require", "exports", "./foo_0"], function (require, exports) { "use strict"; exports.__esModule = true; var answer = 42; // No exports diff --git a/tests/baselines/reference/importNonStringLiteral.js b/tests/baselines/reference/importNonStringLiteral.js index eb76621f7c06e..d4250c81c4cfa 100644 --- a/tests/baselines/reference/importNonStringLiteral.js +++ b/tests/baselines/reference/importNonStringLiteral.js @@ -7,3 +7,4 @@ import foo = require(x); // invalid "use strict"; exports.__esModule = true; var x = "filename"; +require(); // invalid diff --git a/tests/baselines/reference/importWithTrailingSlash_noResolve.js b/tests/baselines/reference/importWithTrailingSlash_noResolve.js index 20afebedc2b1b..0c69a900fd17c 100644 --- a/tests/baselines/reference/importWithTrailingSlash_noResolve.js +++ b/tests/baselines/reference/importWithTrailingSlash_noResolve.js @@ -5,3 +5,4 @@ import foo from "./foo/"; //// [a.js] "use strict"; exports.__esModule = true; +require("./foo/"); diff --git a/tests/baselines/reference/import_unneeded-require-when-referenecing-aliased-type-throug-array.js b/tests/baselines/reference/import_unneeded-require-when-referenecing-aliased-type-throug-array.js index 1cd0376ddedf1..adac33fc6a0e6 100644 --- a/tests/baselines/reference/import_unneeded-require-when-referenecing-aliased-type-throug-array.js +++ b/tests/baselines/reference/import_unneeded-require-when-referenecing-aliased-type-throug-array.js @@ -17,7 +17,7 @@ var p = testData[0].name; //// [b.js] //// [a.js] -define(["require", "exports"], function (require, exports) { +define(["require", "exports", "ITest"], function (require, exports) { "use strict"; exports.__esModule = true; var testData; diff --git a/tests/baselines/reference/importedAliasesInTypePositions.js b/tests/baselines/reference/importedAliasesInTypePositions.js index aad4739b7766d..28a0c096966b8 100644 --- a/tests/baselines/reference/importedAliasesInTypePositions.js +++ b/tests/baselines/reference/importedAliasesInTypePositions.js @@ -44,7 +44,7 @@ define(["require", "exports"], function (require, exports) { })(elaborate = exports.elaborate || (exports.elaborate = {})); }); //// [file2.js] -define(["require", "exports"], function (require, exports) { +define(["require", "exports", "file1"], function (require, exports) { "use strict"; exports.__esModule = true; var ImportingModule; diff --git a/tests/baselines/reference/inferenceLimit.js b/tests/baselines/reference/inferenceLimit.js index e27d155d6169d..3ed15784fc4b8 100644 --- a/tests/baselines/reference/inferenceLimit.js +++ b/tests/baselines/reference/inferenceLimit.js @@ -55,6 +55,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge }); }; Object.defineProperty(exports, "__esModule", { value: true }); +require("./mymodule"); class BrokenClass { constructor() { } brokenMethod(field, value) { diff --git a/tests/baselines/reference/isolatedModulesReExportType.errors.txt b/tests/baselines/reference/isolatedModulesReExportType.errors.txt index cc9e4c932eda5..299bd0fcf88e6 100644 --- a/tests/baselines/reference/isolatedModulesReExportType.errors.txt +++ b/tests/baselines/reference/isolatedModulesReExportType.errors.txt @@ -1,12 +1,12 @@ -/user.ts(2,10): error TS1205: Re-exporting a type when the '--isolatedModules' flag is provided requires using an explicit type-only export. -/user.ts(17,10): error TS1205: Re-exporting a type when the '--isolatedModules' flag is provided requires using an explicit type-only export. +/user.ts(2,10): error TS1205: Re-exporting a type when the '--isolatedModules' flag is provided requires using 'export type'. +/user.ts(17,10): error TS1205: Re-exporting a type when the '--isolatedModules' flag is provided requires using 'export type'. ==== /user.ts (2 errors) ==== // Error, can't re-export something that's only a type. export { T } from "./exportT"; ~ -!!! error TS1205: Re-exporting a type when the '--isolatedModules' flag is provided requires using an explicit type-only export. +!!! error TS1205: Re-exporting a type when the '--isolatedModules' flag is provided requires using 'export type'. export import T2 = require("./exportEqualsT"); // OK, has a value side @@ -23,7 +23,7 @@ import { T } from "./exportT"; export { T as T4 }; ~~~~~~~ -!!! error TS1205: Re-exporting a type when the '--isolatedModules' flag is provided requires using an explicit type-only export. +!!! error TS1205: Re-exporting a type when the '--isolatedModules' flag is provided requires using 'export type'. ==== /exportT.ts (0 errors) ==== export type T = number; diff --git a/tests/baselines/reference/isolatedModulesReExportType.js b/tests/baselines/reference/isolatedModulesReExportType.js index f057395fc3039..196c07f52877a 100644 --- a/tests/baselines/reference/isolatedModulesReExportType.js +++ b/tests/baselines/reference/isolatedModulesReExportType.js @@ -59,9 +59,12 @@ exports.C = C; //// [user.js] "use strict"; exports.__esModule = true; +require("./exportEqualsT"); // OK, has a value side var exportValue_1 = require("./exportValue"); exports.C = exportValue_1.C; // OK, even though the namespace it exports is only types. var NS = require("./exportT"); exports.NS = NS; +// Error, not clear (to an isolated module) whether `T4` is a type. +require("./exportT"); diff --git a/tests/baselines/reference/isolatedModules_resolveJsonModule.js b/tests/baselines/reference/isolatedModules_resolveJsonModule.js index cdff02c07f0b7..88168d3699e31 100644 --- a/tests/baselines/reference/isolatedModules_resolveJsonModule.js +++ b/tests/baselines/reference/isolatedModules_resolveJsonModule.js @@ -10,3 +10,4 @@ import j = require("./j.json"); //// [a.js] "use strict"; exports.__esModule = true; +require("./j.json"); diff --git a/tests/baselines/reference/jsDeclarationsFunctionLikeClasses.js b/tests/baselines/reference/jsDeclarationsFunctionLikeClasses.js index 96b9cfbd62b5a..7c8b97a601309 100644 --- a/tests/baselines/reference/jsDeclarationsFunctionLikeClasses.js +++ b/tests/baselines/reference/jsDeclarationsFunctionLikeClasses.js @@ -42,6 +42,7 @@ exports.Point = Point; //// [referencer.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); +require("./source"); /** * @param {Point} p */ diff --git a/tests/baselines/reference/jsxFactoryNotIdentifierOrQualifiedName.js b/tests/baselines/reference/jsxFactoryNotIdentifierOrQualifiedName.js index 8e4b1d8fc12f8..3d1d064dc085b 100644 --- a/tests/baselines/reference/jsxFactoryNotIdentifierOrQualifiedName.js +++ b/tests/baselines/reference/jsxFactoryNotIdentifierOrQualifiedName.js @@ -70,6 +70,7 @@ function toCamelCase(text) { //// [test.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); +require("./Element"); let c; class A { view() { diff --git a/tests/baselines/reference/jsxFactoryNotIdentifierOrQualifiedName2.js b/tests/baselines/reference/jsxFactoryNotIdentifierOrQualifiedName2.js index 6c7c95e36ff1a..1bd1b97725553 100644 --- a/tests/baselines/reference/jsxFactoryNotIdentifierOrQualifiedName2.js +++ b/tests/baselines/reference/jsxFactoryNotIdentifierOrQualifiedName2.js @@ -70,6 +70,7 @@ function toCamelCase(text) { //// [test.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); +require("./Element"); let c; class A { view() { diff --git a/tests/baselines/reference/mergeWithImportedNamespace.js b/tests/baselines/reference/mergeWithImportedNamespace.js index ff7248a68f33a..4164f5ee24f87 100644 --- a/tests/baselines/reference/mergeWithImportedNamespace.js +++ b/tests/baselines/reference/mergeWithImportedNamespace.js @@ -19,3 +19,4 @@ var N; //// [f2.js] "use strict"; exports.__esModule = true; +require("./f1"); diff --git a/tests/baselines/reference/mergeWithImportedType.js b/tests/baselines/reference/mergeWithImportedType.js index 27622372a8357..50d65fcc799b4 100644 --- a/tests/baselines/reference/mergeWithImportedType.js +++ b/tests/baselines/reference/mergeWithImportedType.js @@ -17,3 +17,4 @@ var E; //// [f2.js] "use strict"; exports.__esModule = true; +require("./f1"); diff --git a/tests/baselines/reference/mergedDeclarations7.js b/tests/baselines/reference/mergedDeclarations7.js index 8fa3f2d0731f5..1b25b58fcd67d 100644 --- a/tests/baselines/reference/mergedDeclarations7.js +++ b/tests/baselines/reference/mergedDeclarations7.js @@ -26,4 +26,5 @@ let p: Passport = passport.use(); "use strict"; exports.__esModule = true; var passport = require("passport"); +require("passport"); var p = passport.use(); diff --git a/tests/baselines/reference/metadataOfClassFromAlias2.js b/tests/baselines/reference/metadataOfClassFromAlias2.js index c106f12edd3f7..cf6e59c7aa595 100644 --- a/tests/baselines/reference/metadataOfClassFromAlias2.js +++ b/tests/baselines/reference/metadataOfClassFromAlias2.js @@ -35,6 +35,7 @@ var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; Object.defineProperty(exports, "__esModule", { value: true }); +require("./auxiliry"); function annotation() { return function (target) { }; } diff --git a/tests/baselines/reference/metadataOfEventAlias.js b/tests/baselines/reference/metadataOfEventAlias.js index fdb66aa1c7c02..97332cccc25f0 100644 --- a/tests/baselines/reference/metadataOfEventAlias.js +++ b/tests/baselines/reference/metadataOfEventAlias.js @@ -26,6 +26,7 @@ var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; Object.defineProperty(exports, "__esModule", { value: true }); +require("./event"); function Input(target, key) { } var SomeClass = /** @class */ (function () { function SomeClass() { diff --git a/tests/baselines/reference/missingSemicolonInModuleSpecifier.js b/tests/baselines/reference/missingSemicolonInModuleSpecifier.js index 889f2b800be14..90734b16859d1 100644 --- a/tests/baselines/reference/missingSemicolonInModuleSpecifier.js +++ b/tests/baselines/reference/missingSemicolonInModuleSpecifier.js @@ -14,4 +14,5 @@ exports.x = 1; //// [b.js] "use strict"; exports.__esModule = true; +require("./a"); (function () { return 1; }()); diff --git a/tests/baselines/reference/moduleAugmentationCollidingNamesInAugmentation1.js b/tests/baselines/reference/moduleAugmentationCollidingNamesInAugmentation1.js index 949a30efc8fca..6ba86d490181a 100644 --- a/tests/baselines/reference/moduleAugmentationCollidingNamesInAugmentation1.js +++ b/tests/baselines/reference/moduleAugmentationCollidingNamesInAugmentation1.js @@ -50,7 +50,7 @@ define(["require", "exports", "./observable"], function (require, exports, obser observable_1.Observable.prototype.map = function () { }; }); //// [main.js] -define(["require", "exports", "./map1", "./map2"], function (require, exports) { +define(["require", "exports", "./observable", "./map1", "./map2"], function (require, exports) { "use strict"; exports.__esModule = true; var x; diff --git a/tests/baselines/reference/moduleAugmentationDeclarationEmit1.js b/tests/baselines/reference/moduleAugmentationDeclarationEmit1.js index 818c49c9edf8f..030ed6aa4c8bb 100644 --- a/tests/baselines/reference/moduleAugmentationDeclarationEmit1.js +++ b/tests/baselines/reference/moduleAugmentationDeclarationEmit1.js @@ -46,6 +46,7 @@ observable_1.Observable.prototype.map = function () { }; //// [main.js] "use strict"; exports.__esModule = true; +require("./observable"); require("./map"); var x; var y = x.map(function (x) { return x + 1; }); diff --git a/tests/baselines/reference/moduleAugmentationDisallowedExtensions.js b/tests/baselines/reference/moduleAugmentationDisallowedExtensions.js index 02e2fb313c470..242ca38f6da12 100644 --- a/tests/baselines/reference/moduleAugmentationDisallowedExtensions.js +++ b/tests/baselines/reference/moduleAugmentationDisallowedExtensions.js @@ -67,4 +67,5 @@ exports.b = 1; //// [main.js] "use strict"; exports.__esModule = true; +require("./observable"); require("./x"); diff --git a/tests/baselines/reference/moduleAugmentationDuringSyntheticDefaultCheck.js b/tests/baselines/reference/moduleAugmentationDuringSyntheticDefaultCheck.js index 56fc58063254f..fc8bc1ecd6e11 100644 --- a/tests/baselines/reference/moduleAugmentationDuringSyntheticDefaultCheck.js +++ b/tests/baselines/reference/moduleAugmentationDuringSyntheticDefaultCheck.js @@ -37,7 +37,9 @@ import moment = require("moment-timezone"); //// [idx.js] "use strict"; exports.__esModule = true; +require("moment"); //// [idx.test.js] "use strict"; /// exports.__esModule = true; +require("moment-timezone"); diff --git a/tests/baselines/reference/moduleAugmentationExtendAmbientModule1.js b/tests/baselines/reference/moduleAugmentationExtendAmbientModule1.js index 1ef8a7cd15414..c9f0b2f6bd4a9 100644 --- a/tests/baselines/reference/moduleAugmentationExtendAmbientModule1.js +++ b/tests/baselines/reference/moduleAugmentationExtendAmbientModule1.js @@ -40,6 +40,8 @@ observable_1.Observable.prototype.map = function () { }; //// [main.js] "use strict"; exports.__esModule = true; +/// +require("observable"); require("./map"); var x; var y = x.map(function (x) { return x + 1; }); diff --git a/tests/baselines/reference/moduleAugmentationExtendFileModule1.js b/tests/baselines/reference/moduleAugmentationExtendFileModule1.js index 85b30f4d0027f..469b4a1b3a275 100644 --- a/tests/baselines/reference/moduleAugmentationExtendFileModule1.js +++ b/tests/baselines/reference/moduleAugmentationExtendFileModule1.js @@ -46,6 +46,7 @@ observable_1.Observable.prototype.map = function () { }; //// [main.js] "use strict"; exports.__esModule = true; +require("./observable"); require("./map"); var x; var y = x.map(function (x) { return x + 1; }); diff --git a/tests/baselines/reference/moduleAugmentationGlobal1.js b/tests/baselines/reference/moduleAugmentationGlobal1.js index 68e504d5019f2..64c3e17382855 100644 --- a/tests/baselines/reference/moduleAugmentationGlobal1.js +++ b/tests/baselines/reference/moduleAugmentationGlobal1.js @@ -29,6 +29,7 @@ exports.A = A; //// [f2.js] "use strict"; exports.__esModule = true; +require("./f1"); var x = [1]; var y = x.getA().x; diff --git a/tests/baselines/reference/moduleAugmentationGlobal2.js b/tests/baselines/reference/moduleAugmentationGlobal2.js index 41cf9457d2580..d182b12381305 100644 --- a/tests/baselines/reference/moduleAugmentationGlobal2.js +++ b/tests/baselines/reference/moduleAugmentationGlobal2.js @@ -29,6 +29,8 @@ exports.A = A; //// [f2.js] "use strict"; exports.__esModule = true; +// change the shape of Array +require("./f1"); var x = [1]; var y = x.getCountAsString().toLowerCase(); diff --git a/tests/baselines/reference/moduleAugmentationGlobal3.js b/tests/baselines/reference/moduleAugmentationGlobal3.js index f1df42ad8cc8f..b722776c0b110 100644 --- a/tests/baselines/reference/moduleAugmentationGlobal3.js +++ b/tests/baselines/reference/moduleAugmentationGlobal3.js @@ -32,6 +32,8 @@ exports.A = A; //// [f2.js] "use strict"; exports.__esModule = true; +// change the shape of Array +require("./f1"); //// [f3.js] "use strict"; exports.__esModule = true; diff --git a/tests/baselines/reference/moduleAugmentationImportsAndExports1.js b/tests/baselines/reference/moduleAugmentationImportsAndExports1.js index 63e5d11072328..767cb1184452a 100644 --- a/tests/baselines/reference/moduleAugmentationImportsAndExports1.js +++ b/tests/baselines/reference/moduleAugmentationImportsAndExports1.js @@ -48,10 +48,12 @@ exports.B = B; "use strict"; exports.__esModule = true; var f1_1 = require("./f1"); +require("./f2"); f1_1.A.prototype.foo = function () { return undefined; }; //// [f4.js] "use strict"; exports.__esModule = true; +require("./f1"); require("./f3"); var a; var b = a.foo().n; diff --git a/tests/baselines/reference/moduleAugmentationImportsAndExports2.js b/tests/baselines/reference/moduleAugmentationImportsAndExports2.js index 9c07fcbd93394..3e460ddc5a049 100644 --- a/tests/baselines/reference/moduleAugmentationImportsAndExports2.js +++ b/tests/baselines/reference/moduleAugmentationImportsAndExports2.js @@ -64,6 +64,7 @@ f1_1.A.prototype.foo = function () { return undefined; }; //// [f4.js] "use strict"; exports.__esModule = true; +require("./f1"); require("./f3"); var a; var b = a.foo().n; diff --git a/tests/baselines/reference/moduleAugmentationImportsAndExports3.js b/tests/baselines/reference/moduleAugmentationImportsAndExports3.js index 8229de12e5ffb..fdb6425895c8a 100644 --- a/tests/baselines/reference/moduleAugmentationImportsAndExports3.js +++ b/tests/baselines/reference/moduleAugmentationImportsAndExports3.js @@ -62,6 +62,7 @@ f1_1.A.prototype.foo = function () { return undefined; }; //// [f4.js] "use strict"; exports.__esModule = true; +require("./f1"); require("./f3"); var a; var b = a.foo().n; diff --git a/tests/baselines/reference/moduleAugmentationImportsAndExports4.js b/tests/baselines/reference/moduleAugmentationImportsAndExports4.js index 0bc6aea7d425a..9ff2333977bf4 100644 --- a/tests/baselines/reference/moduleAugmentationImportsAndExports4.js +++ b/tests/baselines/reference/moduleAugmentationImportsAndExports4.js @@ -60,10 +60,12 @@ exports.B = B; "use strict"; exports.__esModule = true; var f1_1 = require("./f1"); +require("./f2"); f1_1.A.prototype.foo = function () { return undefined; }; //// [f4.js] "use strict"; exports.__esModule = true; +require("./f1"); require("./f3"); var a; var b = a.foo().n; diff --git a/tests/baselines/reference/moduleAugmentationImportsAndExports5.js b/tests/baselines/reference/moduleAugmentationImportsAndExports5.js index aa6111a807e41..c603252089a05 100644 --- a/tests/baselines/reference/moduleAugmentationImportsAndExports5.js +++ b/tests/baselines/reference/moduleAugmentationImportsAndExports5.js @@ -60,10 +60,12 @@ exports.B = B; "use strict"; exports.__esModule = true; var f1_1 = require("./f1"); +require("./f2"); f1_1.A.prototype.foo = function () { return undefined; }; //// [f4.js] "use strict"; exports.__esModule = true; +require("./f1"); require("./f3"); var a; var b = a.foo().n; diff --git a/tests/baselines/reference/moduleAugmentationImportsAndExports6.js b/tests/baselines/reference/moduleAugmentationImportsAndExports6.js index fc4a9a4438096..dfe9393003860 100644 --- a/tests/baselines/reference/moduleAugmentationImportsAndExports6.js +++ b/tests/baselines/reference/moduleAugmentationImportsAndExports6.js @@ -60,10 +60,12 @@ exports.B = B; "use strict"; exports.__esModule = true; var f1_1 = require("./f1"); +require("./f2"); f1_1.A.prototype.foo = function () { return undefined; }; //// [f4.js] "use strict"; exports.__esModule = true; +require("./f1"); require("./f3"); var a; var b = a.foo().n; diff --git a/tests/baselines/reference/moduleAugmentationInAmbientModule1.js b/tests/baselines/reference/moduleAugmentationInAmbientModule1.js index fe6aabc0a5eed..3e5ffe8c5e271 100644 --- a/tests/baselines/reference/moduleAugmentationInAmbientModule1.js +++ b/tests/baselines/reference/moduleAugmentationInAmbientModule1.js @@ -30,6 +30,7 @@ x.foo().x; "use strict"; /// exports.__esModule = true; +require("Observable"); var x; x.foo().x; diff --git a/tests/baselines/reference/moduleAugmentationInAmbientModule2.js b/tests/baselines/reference/moduleAugmentationInAmbientModule2.js index f3d276309ef27..04481d65c07ac 100644 --- a/tests/baselines/reference/moduleAugmentationInAmbientModule2.js +++ b/tests/baselines/reference/moduleAugmentationInAmbientModule2.js @@ -31,6 +31,7 @@ x.foo().x; "use strict"; /// exports.__esModule = true; +require("Observable"); require("Map"); var x; x.foo().x; diff --git a/tests/baselines/reference/moduleAugmentationInAmbientModule3.js b/tests/baselines/reference/moduleAugmentationInAmbientModule3.js index 3cedfd66d5deb..494636fff2bea 100644 --- a/tests/baselines/reference/moduleAugmentationInAmbientModule3.js +++ b/tests/baselines/reference/moduleAugmentationInAmbientModule3.js @@ -41,6 +41,7 @@ x.foo2().x2; "use strict"; /// exports.__esModule = true; +require("Observable"); require("Map"); var x; x.foo().x; diff --git a/tests/baselines/reference/moduleAugmentationInAmbientModule4.js b/tests/baselines/reference/moduleAugmentationInAmbientModule4.js index ab4ff1bc79f11..777ba7f41fbcb 100644 --- a/tests/baselines/reference/moduleAugmentationInAmbientModule4.js +++ b/tests/baselines/reference/moduleAugmentationInAmbientModule4.js @@ -44,6 +44,7 @@ x.foo2().x2; /// /// exports.__esModule = true; +require("Observable"); require("Map"); var x; x.foo().x; diff --git a/tests/baselines/reference/moduleAugmentationNoNewNames.js b/tests/baselines/reference/moduleAugmentationNoNewNames.js index 0887377bc5895..175d7c9808e47 100644 --- a/tests/baselines/reference/moduleAugmentationNoNewNames.js +++ b/tests/baselines/reference/moduleAugmentationNoNewNames.js @@ -38,6 +38,7 @@ observable_1.Observable.prototype.map = function () { }; //// [main.js] "use strict"; exports.__esModule = true; +require("./observable"); require("./map"); var x; var y = x.map(function (x) { return x + 1; }); diff --git a/tests/baselines/reference/moduleAugmentationOfAlias.js b/tests/baselines/reference/moduleAugmentationOfAlias.js index 1b77eeeec1891..05843508545a1 100644 --- a/tests/baselines/reference/moduleAugmentationOfAlias.js +++ b/tests/baselines/reference/moduleAugmentationOfAlias.js @@ -26,6 +26,7 @@ exports.__esModule = true; //// [c.js] "use strict"; exports.__esModule = true; +require("./a"); function f(i) { i.x; } diff --git a/tests/baselines/reference/moduleAugmentationsBundledOutput1.js b/tests/baselines/reference/moduleAugmentationsBundledOutput1.js index 4646709b25d9a..42f58d9f7f7bf 100644 --- a/tests/baselines/reference/moduleAugmentationsBundledOutput1.js +++ b/tests/baselines/reference/moduleAugmentationsBundledOutput1.js @@ -87,13 +87,13 @@ define("m3", ["require", "exports"], function (require, exports) { }()); exports.C2 = C2; }); -define("m4", ["require", "exports", "m1"], function (require, exports, m1_2) { +define("m4", ["require", "exports", "m1", "m3"], function (require, exports, m1_2) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); m1_2.Cls.prototype.baz1 = function () { return undefined; }; m1_2.Cls.prototype.baz2 = function () { return undefined; }; }); -define("test", ["require", "exports", "m2", "m4"], function (require, exports) { +define("test", ["require", "exports", "m1", "m2", "m4"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var c; diff --git a/tests/baselines/reference/moduleAugmentationsImports1.js b/tests/baselines/reference/moduleAugmentationsImports1.js index a27810927974f..410ed88ff616a 100644 --- a/tests/baselines/reference/moduleAugmentationsImports1.js +++ b/tests/baselines/reference/moduleAugmentationsImports1.js @@ -63,13 +63,13 @@ define("b", ["require", "exports"], function (require, exports) { exports.B = B; }); /// -define("d", ["require", "exports", "a"], function (require, exports, a_1) { +define("d", ["require", "exports", "a", "b", "C"], function (require, exports, a_1) { "use strict"; exports.__esModule = true; a_1.A.prototype.getB = function () { return undefined; }; a_1.A.prototype.getCls = function () { return undefined; }; }); -define("main", ["require", "exports", "d"], function (require, exports) { +define("main", ["require", "exports", "a", "d"], function (require, exports) { "use strict"; exports.__esModule = true; var a; diff --git a/tests/baselines/reference/moduleAugmentationsImports2.js b/tests/baselines/reference/moduleAugmentationsImports2.js index 4274300a63945..b67bf335ae8cb 100644 --- a/tests/baselines/reference/moduleAugmentationsImports2.js +++ b/tests/baselines/reference/moduleAugmentationsImports2.js @@ -68,17 +68,17 @@ define("b", ["require", "exports"], function (require, exports) { exports.B = B; }); /// -define("d", ["require", "exports", "a"], function (require, exports, a_1) { +define("d", ["require", "exports", "a", "b"], function (require, exports, a_1) { "use strict"; exports.__esModule = true; a_1.A.prototype.getB = function () { return undefined; }; }); -define("e", ["require", "exports", "a"], function (require, exports, a_2) { +define("e", ["require", "exports", "a", "C"], function (require, exports, a_2) { "use strict"; exports.__esModule = true; a_2.A.prototype.getCls = function () { return undefined; }; }); -define("main", ["require", "exports", "d", "e"], function (require, exports) { +define("main", ["require", "exports", "a", "d", "e"], function (require, exports) { "use strict"; exports.__esModule = true; var a; diff --git a/tests/baselines/reference/moduleAugmentationsImports3.js b/tests/baselines/reference/moduleAugmentationsImports3.js index 921e65b2e0fe0..93dbce91bab04 100644 --- a/tests/baselines/reference/moduleAugmentationsImports3.js +++ b/tests/baselines/reference/moduleAugmentationsImports3.js @@ -66,12 +66,12 @@ define("b", ["require", "exports"], function (require, exports) { }()); exports.B = B; }); -define("e", ["require", "exports", "a"], function (require, exports, a_1) { +define("e", ["require", "exports", "a", "C"], function (require, exports, a_1) { "use strict"; exports.__esModule = true; a_1.A.prototype.getCls = function () { return undefined; }; }); -define("main", ["require", "exports", "D", "e"], function (require, exports) { +define("main", ["require", "exports", "a", "D", "e"], function (require, exports) { "use strict"; exports.__esModule = true; var a; diff --git a/tests/baselines/reference/moduleAugmentationsImports4.js b/tests/baselines/reference/moduleAugmentationsImports4.js index 3eea145e5f499..f1943fa49ae20 100644 --- a/tests/baselines/reference/moduleAugmentationsImports4.js +++ b/tests/baselines/reference/moduleAugmentationsImports4.js @@ -67,7 +67,7 @@ define("b", ["require", "exports"], function (require, exports) { }()); exports.B = B; }); -define("main", ["require", "exports", "D", "E"], function (require, exports) { +define("main", ["require", "exports", "a", "D", "E"], function (require, exports) { "use strict"; exports.__esModule = true; var a; diff --git a/tests/baselines/reference/moduleDeclarationExportStarShadowingGlobalIsNameable.js b/tests/baselines/reference/moduleDeclarationExportStarShadowingGlobalIsNameable.js index f123c66504d05..e89cf5fd97351 100644 --- a/tests/baselines/reference/moduleDeclarationExportStarShadowingGlobalIsNameable.js +++ b/tests/baselines/reference/moduleDeclarationExportStarShadowingGlobalIsNameable.js @@ -34,6 +34,7 @@ exports.__esModule = true; //// [index.js] "use strict"; exports.__esModule = true; +require("./model"); exports.func = function (account, acc2) { }; diff --git a/tests/baselines/reference/moduleImportedForTypeArgumentPosition.js b/tests/baselines/reference/moduleImportedForTypeArgumentPosition.js index b0ad743cffac3..5f78813d96204 100644 --- a/tests/baselines/reference/moduleImportedForTypeArgumentPosition.js +++ b/tests/baselines/reference/moduleImportedForTypeArgumentPosition.js @@ -30,7 +30,7 @@ var __extends = (this && this.__extends) || (function () { d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); -define(["require", "exports"], function (require, exports) { +define(["require", "exports", "moduleImportedForTypeArgumentPosition_0"], function (require, exports) { "use strict"; exports.__esModule = true; var C1 = /** @class */ (function () { diff --git a/tests/baselines/reference/moduleInTypePosition1.js b/tests/baselines/reference/moduleInTypePosition1.js index 3781b4ae5b7df..3e5d421d8fd87 100644 --- a/tests/baselines/reference/moduleInTypePosition1.js +++ b/tests/baselines/reference/moduleInTypePosition1.js @@ -23,4 +23,6 @@ exports.Promise = Promise; //// [moduleInTypePosition1_1.js] "use strict"; exports.__esModule = true; +/// +require("./moduleInTypePosition1_0"); var x = function (w1) { }; diff --git a/tests/baselines/reference/moduleLocalImportNotIncorrectlyRedirected.js b/tests/baselines/reference/moduleLocalImportNotIncorrectlyRedirected.js index 88a0f5a10f5ef..4bb96cc1ec7dc 100644 --- a/tests/baselines/reference/moduleLocalImportNotIncorrectlyRedirected.js +++ b/tests/baselines/reference/moduleLocalImportNotIncorrectlyRedirected.js @@ -21,3 +21,4 @@ import { ISpinButton } from "troublesome-lib"; //// [index.js] "use strict"; exports.__esModule = true; +require("troublesome-lib"); diff --git a/tests/baselines/reference/moduleMemberMissingErrorIsRelative.js b/tests/baselines/reference/moduleMemberMissingErrorIsRelative.js index 5a081fb924af7..f02663cc7206b 100644 --- a/tests/baselines/reference/moduleMemberMissingErrorIsRelative.js +++ b/tests/baselines/reference/moduleMemberMissingErrorIsRelative.js @@ -11,3 +11,4 @@ exports.__esModule = true; //// [bar.js] "use strict"; exports.__esModule = true; +require("./foo"); diff --git a/tests/baselines/reference/moduleResolutionNoResolve.js b/tests/baselines/reference/moduleResolutionNoResolve.js index d1b5315903cda..3f194c7c5369c 100644 --- a/tests/baselines/reference/moduleResolutionNoResolve.js +++ b/tests/baselines/reference/moduleResolutionNoResolve.js @@ -10,6 +10,7 @@ export var c = ''; //// [a.js] "use strict"; exports.__esModule = true; +require("./b"); //// [b.js] "use strict"; exports.__esModule = true; diff --git a/tests/baselines/reference/moduleResolutionNoTs.js b/tests/baselines/reference/moduleResolutionNoTs.js index 33f692396fac6..096c36b62d38c 100644 --- a/tests/baselines/reference/moduleResolutionNoTs.js +++ b/tests/baselines/reference/moduleResolutionNoTs.js @@ -32,3 +32,10 @@ exports["default"] = 0; //// [user.js] "use strict"; exports.__esModule = true; +require("./x.ts"); +require("./y.tsx"); +require("./z.d.ts"); +// Making sure the suggested fixes are valid: +require("./x"); +require("./y"); +require("./z"); diff --git a/tests/baselines/reference/moduleResolutionPackageIdWithRelativeAndAbsolutePath.js b/tests/baselines/reference/moduleResolutionPackageIdWithRelativeAndAbsolutePath.js index 9f09bea10cf20..07842b7a843cb 100644 --- a/tests/baselines/reference/moduleResolutionPackageIdWithRelativeAndAbsolutePath.js +++ b/tests/baselines/reference/moduleResolutionPackageIdWithRelativeAndAbsolutePath.js @@ -42,3 +42,5 @@ import { makeSharedOption } from "@shared/lib/app"; // Includes option as module //// [/project/src/app.js] "use strict"; exports.__esModule = true; +require("anotherLib"); // Include the lib that recursively includes option as relative module resolution in this directory +require("@shared/lib/app"); // Includes option as module in shared folder but as module in node_modules folder diff --git a/tests/baselines/reference/moduleResolutionWithExtensions.js b/tests/baselines/reference/moduleResolutionWithExtensions.js index 3406bb0adaee5..acc5f826a7192 100644 --- a/tests/baselines/reference/moduleResolutionWithExtensions.js +++ b/tests/baselines/reference/moduleResolutionWithExtensions.js @@ -32,10 +32,13 @@ exports["default"] = 0; //// [b.js] "use strict"; exports.__esModule = true; +require("./a"); // '.js' extension: stripped and replaced with '.ts' //// [d.js] "use strict"; exports.__esModule = true; +require("./a.js"); //// [jquery_user_1.js] "use strict"; exports.__esModule = true; +require("./jquery.js"); diff --git a/tests/baselines/reference/moduleResolutionWithExtensions_notSupported.js b/tests/baselines/reference/moduleResolutionWithExtensions_notSupported.js index 6771a977b3572..25b2af7146f5d 100644 --- a/tests/baselines/reference/moduleResolutionWithExtensions_notSupported.js +++ b/tests/baselines/reference/moduleResolutionWithExtensions_notSupported.js @@ -15,3 +15,6 @@ import js from "./js"; // OK because it's an untyped module. //// [a.js] "use strict"; exports.__esModule = true; +require("./tsx"); // Not allowed. +require("./jsx"); // Not allowed. +require("./js"); // OK because it's an untyped module. diff --git a/tests/baselines/reference/moduleResolutionWithExtensions_notSupported2.js b/tests/baselines/reference/moduleResolutionWithExtensions_notSupported2.js index a11d43d56dfe3..9d3af5640e1cf 100644 --- a/tests/baselines/reference/moduleResolutionWithExtensions_notSupported2.js +++ b/tests/baselines/reference/moduleResolutionWithExtensions_notSupported2.js @@ -11,3 +11,4 @@ import jsx from "./jsx"; //// [a.js] "use strict"; exports.__esModule = true; +require("./jsx"); diff --git a/tests/baselines/reference/moduleResolutionWithExtensions_notSupported3.js b/tests/baselines/reference/moduleResolutionWithExtensions_notSupported3.js index 1c8a2537e0fa3..31cbbff0f13f6 100644 --- a/tests/baselines/reference/moduleResolutionWithExtensions_notSupported3.js +++ b/tests/baselines/reference/moduleResolutionWithExtensions_notSupported3.js @@ -11,3 +11,4 @@ import jsx from "./jsx"; //// [a.js] "use strict"; exports.__esModule = true; +require("./jsx"); diff --git a/tests/baselines/reference/moduleResolutionWithExtensions_preferTs.js b/tests/baselines/reference/moduleResolutionWithExtensions_preferTs.js index b02d23302ae76..45deb941a3098 100644 --- a/tests/baselines/reference/moduleResolutionWithExtensions_preferTs.js +++ b/tests/baselines/reference/moduleResolutionWithExtensions_preferTs.js @@ -16,3 +16,4 @@ exports["default"] = 0; //// [a.js] "use strict"; exports.__esModule = true; +require("./b"); diff --git a/tests/baselines/reference/moduleResolutionWithExtensions_withAmbientPresent.js b/tests/baselines/reference/moduleResolutionWithExtensions_withAmbientPresent.js index 3563f7db251ad..d7e577b979dc9 100644 --- a/tests/baselines/reference/moduleResolutionWithExtensions_withAmbientPresent.js +++ b/tests/baselines/reference/moduleResolutionWithExtensions_withAmbientPresent.js @@ -17,3 +17,5 @@ import { x } from "js"; //// [a.js] "use strict"; exports.__esModule = true; +/// +require("js"); diff --git a/tests/baselines/reference/moduleResolutionWithSymlinks.js b/tests/baselines/reference/moduleResolutionWithSymlinks.js index de15c90fdf1cf..773e05ee7a9fc 100644 --- a/tests/baselines/reference/moduleResolutionWithSymlinks.js +++ b/tests/baselines/reference/moduleResolutionWithSymlinks.js @@ -58,6 +58,8 @@ exports.MyClass2 = library_a_1.MyClass; //// [/src/app.js] "use strict"; exports.__esModule = true; +require("./library-a"); +require("./library-b"); var x; var y; x = y; diff --git a/tests/baselines/reference/moduleResolutionWithSymlinks_withOutDir.js b/tests/baselines/reference/moduleResolutionWithSymlinks_withOutDir.js index 0b7fa8fb41656..0328b63991124 100644 --- a/tests/baselines/reference/moduleResolutionWithSymlinks_withOutDir.js +++ b/tests/baselines/reference/moduleResolutionWithSymlinks_withOutDir.js @@ -37,6 +37,8 @@ exports.MyClass2 = library_a_1.MyClass; //// [/src/bin/app.js] "use strict"; exports.__esModule = true; +require("./library-a"); +require("./library-b"); var x; var y; x = y; diff --git a/tests/baselines/reference/moduleResolution_explicitNodeModulesImport.js b/tests/baselines/reference/moduleResolution_explicitNodeModulesImport.js index 93a083da53af6..34461865dc6a5 100644 --- a/tests/baselines/reference/moduleResolution_explicitNodeModulesImport.js +++ b/tests/baselines/reference/moduleResolution_explicitNodeModulesImport.js @@ -10,3 +10,4 @@ import { x } from "../node_modules/foo"; //// [index.js] "use strict"; exports.__esModule = true; +require("../node_modules/foo"); diff --git a/tests/baselines/reference/moduleResolution_explicitNodeModulesImport_implicitAny.js b/tests/baselines/reference/moduleResolution_explicitNodeModulesImport_implicitAny.js index 1b5b469570de2..f27a535133d26 100644 --- a/tests/baselines/reference/moduleResolution_explicitNodeModulesImport_implicitAny.js +++ b/tests/baselines/reference/moduleResolution_explicitNodeModulesImport_implicitAny.js @@ -10,3 +10,4 @@ import { y } from "../node_modules/foo"; //// [index.js] "use strict"; exports.__esModule = true; +require("../node_modules/foo"); diff --git a/tests/baselines/reference/moduleResolution_packageJson_notAtPackageRoot.js b/tests/baselines/reference/moduleResolution_packageJson_notAtPackageRoot.js index 941774f4d3520..8237113ec1029 100644 --- a/tests/baselines/reference/moduleResolution_packageJson_notAtPackageRoot.js +++ b/tests/baselines/reference/moduleResolution_packageJson_notAtPackageRoot.js @@ -18,3 +18,4 @@ import { x } from "foo/bar"; //// [a.js] "use strict"; exports.__esModule = true; +require("foo/bar"); diff --git a/tests/baselines/reference/moduleResolution_packageJson_notAtPackageRoot_fakeScopedPackage.js b/tests/baselines/reference/moduleResolution_packageJson_notAtPackageRoot_fakeScopedPackage.js index 4539828924157..fd9718833486b 100644 --- a/tests/baselines/reference/moduleResolution_packageJson_notAtPackageRoot_fakeScopedPackage.js +++ b/tests/baselines/reference/moduleResolution_packageJson_notAtPackageRoot_fakeScopedPackage.js @@ -18,3 +18,4 @@ import { x } from "foo/@bar"; //// [a.js] "use strict"; exports.__esModule = true; +require("foo/@bar"); diff --git a/tests/baselines/reference/moduleResolution_packageJson_scopedPackage.js b/tests/baselines/reference/moduleResolution_packageJson_scopedPackage.js index 32495ee1ab308..25e6af0107ecd 100644 --- a/tests/baselines/reference/moduleResolution_packageJson_scopedPackage.js +++ b/tests/baselines/reference/moduleResolution_packageJson_scopedPackage.js @@ -13,3 +13,4 @@ import { x } from "@foo/bar"; //// [a.js] "use strict"; exports.__esModule = true; +require("@foo/bar"); diff --git a/tests/baselines/reference/moduleResolution_packageJson_yesAtPackageRoot.js b/tests/baselines/reference/moduleResolution_packageJson_yesAtPackageRoot.js index ed006b0e62dcd..a52a5fb9d502e 100644 --- a/tests/baselines/reference/moduleResolution_packageJson_yesAtPackageRoot.js +++ b/tests/baselines/reference/moduleResolution_packageJson_yesAtPackageRoot.js @@ -16,3 +16,4 @@ import { x } from "foo/bar"; //// [a.js] "use strict"; exports.__esModule = true; +require("foo/bar"); diff --git a/tests/baselines/reference/moduleResolution_packageJson_yesAtPackageRoot_fakeScopedPackage.js b/tests/baselines/reference/moduleResolution_packageJson_yesAtPackageRoot_fakeScopedPackage.js index 129feb6060f24..8c8715c5b6e21 100644 --- a/tests/baselines/reference/moduleResolution_packageJson_yesAtPackageRoot_fakeScopedPackage.js +++ b/tests/baselines/reference/moduleResolution_packageJson_yesAtPackageRoot_fakeScopedPackage.js @@ -18,3 +18,4 @@ import { x } from "foo/@bar"; //// [a.js] "use strict"; exports.__esModule = true; +require("foo/@bar"); diff --git a/tests/baselines/reference/moduleResolution_packageJson_yesAtPackageRoot_mainFieldInSubDirectory.js b/tests/baselines/reference/moduleResolution_packageJson_yesAtPackageRoot_mainFieldInSubDirectory.js index 1aa0a624d8dbc..e076bbe8c863c 100644 --- a/tests/baselines/reference/moduleResolution_packageJson_yesAtPackageRoot_mainFieldInSubDirectory.js +++ b/tests/baselines/reference/moduleResolution_packageJson_yesAtPackageRoot_mainFieldInSubDirectory.js @@ -13,3 +13,4 @@ import { x } from "foo"; //// [index.js] "use strict"; exports.__esModule = true; +require("foo"); diff --git a/tests/baselines/reference/moduleResolution_relativeImportJsFile.js b/tests/baselines/reference/moduleResolution_relativeImportJsFile.js index 94984a414e271..e1966a84e8004 100644 --- a/tests/baselines/reference/moduleResolution_relativeImportJsFile.js +++ b/tests/baselines/reference/moduleResolution_relativeImportJsFile.js @@ -10,3 +10,4 @@ import * as b from "./b"; //// [a.js] "use strict"; exports.__esModule = true; +require("./b"); diff --git a/tests/baselines/reference/moduleResolution_relativeImportJsFile_noImplicitAny.js b/tests/baselines/reference/moduleResolution_relativeImportJsFile_noImplicitAny.js index 28b512b91a4f7..f8ea5f032c01d 100644 --- a/tests/baselines/reference/moduleResolution_relativeImportJsFile_noImplicitAny.js +++ b/tests/baselines/reference/moduleResolution_relativeImportJsFile_noImplicitAny.js @@ -10,3 +10,4 @@ import * as b from "./b"; //// [a.js] "use strict"; exports.__esModule = true; +require("./b"); diff --git a/tests/baselines/reference/namespaceMergedWithImportAliasNoCrash.js b/tests/baselines/reference/namespaceMergedWithImportAliasNoCrash.js index 866aa225db931..c0cf4cdae0ffc 100644 --- a/tests/baselines/reference/namespaceMergedWithImportAliasNoCrash.js +++ b/tests/baselines/reference/namespaceMergedWithImportAliasNoCrash.js @@ -23,6 +23,7 @@ Library.foo; // should be an error //// [file2.js] "use strict"; exports.__esModule = true; +require("./file1"); var Lib; (function (Lib) { Lib.foo = ""; diff --git a/tests/baselines/reference/noBundledEmitFromNodeModules.js b/tests/baselines/reference/noBundledEmitFromNodeModules.js index b52a7ff9a376d..da94eb4add4e9 100644 --- a/tests/baselines/reference/noBundledEmitFromNodeModules.js +++ b/tests/baselines/reference/noBundledEmitFromNodeModules.js @@ -8,11 +8,14 @@ import { C } from "projB"; //// [out.js] -System.register("a", [], function (exports_1, context_1) { +System.register("a", ["node_modules/projB/index"], function (exports_1, context_1) { "use strict"; var __moduleName = context_1 && context_1.id; return { - setters: [], + setters: [ + function (_1) { + } + ], execute: function () { } }; diff --git a/tests/baselines/reference/noCrashOnImportShadowing.js b/tests/baselines/reference/noCrashOnImportShadowing.js index 7ca2116954d6f..3eb84c700dc70 100644 --- a/tests/baselines/reference/noCrashOnImportShadowing.js +++ b/tests/baselines/reference/noCrashOnImportShadowing.js @@ -39,6 +39,7 @@ B.zzz; //// [index.js] "use strict"; exports.__esModule = true; +require("./a"); var x = { x: "" }; B.zzz; var OriginalB = require("./b"); diff --git a/tests/baselines/reference/nodeResolution1.js b/tests/baselines/reference/nodeResolution1.js index 91f423084d84b..c97492c00dc54 100644 --- a/tests/baselines/reference/nodeResolution1.js +++ b/tests/baselines/reference/nodeResolution1.js @@ -13,3 +13,4 @@ exports.x = 1; //// [b.js] "use strict"; exports.__esModule = true; +require("./a"); diff --git a/tests/baselines/reference/nodeResolution2.js b/tests/baselines/reference/nodeResolution2.js index 0d66b012ca76a..0ebebe36e2b87 100644 --- a/tests/baselines/reference/nodeResolution2.js +++ b/tests/baselines/reference/nodeResolution2.js @@ -9,3 +9,4 @@ import y = require("a"); //// [b.js] "use strict"; exports.__esModule = true; +require("a"); diff --git a/tests/baselines/reference/nodeResolution3.js b/tests/baselines/reference/nodeResolution3.js index 74eeec7057bc4..1013084531a27 100644 --- a/tests/baselines/reference/nodeResolution3.js +++ b/tests/baselines/reference/nodeResolution3.js @@ -9,3 +9,4 @@ import y = require("b"); //// [a.js] "use strict"; exports.__esModule = true; +require("b"); diff --git a/tests/baselines/reference/nodeResolution4.js b/tests/baselines/reference/nodeResolution4.js index 3285f3b8e20b9..f93727c611eb8 100644 --- a/tests/baselines/reference/nodeResolution4.js +++ b/tests/baselines/reference/nodeResolution4.js @@ -18,3 +18,4 @@ exports.__esModule = true; //// [b.js] "use strict"; exports.__esModule = true; +require("./a"); diff --git a/tests/baselines/reference/nodeResolution5.js b/tests/baselines/reference/nodeResolution5.js index 3dfedea4aab02..bcd3410346d40 100644 --- a/tests/baselines/reference/nodeResolution5.js +++ b/tests/baselines/reference/nodeResolution5.js @@ -12,3 +12,4 @@ import y = require("a"); //// [b.js] "use strict"; exports.__esModule = true; +require("a"); diff --git a/tests/baselines/reference/nodeResolution6.js b/tests/baselines/reference/nodeResolution6.js index 0610c53edcf4c..d5aeea783bdcc 100644 --- a/tests/baselines/reference/nodeResolution6.js +++ b/tests/baselines/reference/nodeResolution6.js @@ -15,3 +15,4 @@ import y = require("a"); //// [b.js] "use strict"; exports.__esModule = true; +require("a"); diff --git a/tests/baselines/reference/nodeResolution7.js b/tests/baselines/reference/nodeResolution7.js index 118f9cd3994cc..1e1a7c6269fc0 100644 --- a/tests/baselines/reference/nodeResolution7.js +++ b/tests/baselines/reference/nodeResolution7.js @@ -12,3 +12,4 @@ import y = require("a"); //// [b.js] "use strict"; exports.__esModule = true; +require("a"); diff --git a/tests/baselines/reference/nodeResolution8.js b/tests/baselines/reference/nodeResolution8.js index 59a6ee67ec8dc..b3d79517afe32 100644 --- a/tests/baselines/reference/nodeResolution8.js +++ b/tests/baselines/reference/nodeResolution8.js @@ -14,3 +14,4 @@ import y = require("a"); //// [b.js] "use strict"; exports.__esModule = true; +require("a"); diff --git a/tests/baselines/reference/nounusedTypeParameterConstraint.js b/tests/baselines/reference/nounusedTypeParameterConstraint.js index a448315fa70db..243b7b3f92b82 100644 --- a/tests/baselines/reference/nounusedTypeParameterConstraint.js +++ b/tests/baselines/reference/nounusedTypeParameterConstraint.js @@ -13,3 +13,4 @@ exports.__esModule = true; //// [test.js] "use strict"; exports.__esModule = true; +require("./bar"); diff --git a/tests/baselines/reference/packageJsonMain_isNonRecursive.js b/tests/baselines/reference/packageJsonMain_isNonRecursive.js index 61d98c81f112e..bee207d240951 100644 --- a/tests/baselines/reference/packageJsonMain_isNonRecursive.js +++ b/tests/baselines/reference/packageJsonMain_isNonRecursive.js @@ -16,3 +16,4 @@ import foo = require("foo"); //// [a.js] "use strict"; exports.__esModule = true; +require("foo"); diff --git a/tests/baselines/reference/pathMappingBasedModuleResolution8_classic.js b/tests/baselines/reference/pathMappingBasedModuleResolution8_classic.js index f8f2d9aec31db..56777b5e8dc2e 100644 --- a/tests/baselines/reference/pathMappingBasedModuleResolution8_classic.js +++ b/tests/baselines/reference/pathMappingBasedModuleResolution8_classic.js @@ -14,7 +14,7 @@ define(["require", "exports"], function (require, exports) { exports.x = 1 + 2; }); //// [index.js] -define(["require", "exports"], function (require, exports) { +define(["require", "exports", "@speedy/folder1/testing"], function (require, exports) { "use strict"; exports.__esModule = true; }); diff --git a/tests/baselines/reference/pathMappingBasedModuleResolution8_node.js b/tests/baselines/reference/pathMappingBasedModuleResolution8_node.js index 73d51d4fcbfb8..7037a9e440d25 100644 --- a/tests/baselines/reference/pathMappingBasedModuleResolution8_node.js +++ b/tests/baselines/reference/pathMappingBasedModuleResolution8_node.js @@ -14,3 +14,4 @@ exports.x = 1 + 2; //// [index.js] "use strict"; exports.__esModule = true; +require("@speedy/folder1/testing"); diff --git a/tests/baselines/reference/pathMappingBasedModuleResolution_rootImport_aliasWithRoot.js b/tests/baselines/reference/pathMappingBasedModuleResolution_rootImport_aliasWithRoot.js index b880a69fe2d41..fc0593dd42c96 100644 --- a/tests/baselines/reference/pathMappingBasedModuleResolution_rootImport_aliasWithRoot.js +++ b/tests/baselines/reference/pathMappingBasedModuleResolution_rootImport_aliasWithRoot.js @@ -24,3 +24,5 @@ exports.bar = bar; //// [a.js] "use strict"; exports.__esModule = true; +require("/foo"); +require("/bar"); diff --git a/tests/baselines/reference/pathMappingBasedModuleResolution_rootImport_aliasWithRoot_differentRootTypes.js b/tests/baselines/reference/pathMappingBasedModuleResolution_rootImport_aliasWithRoot_differentRootTypes.js index a7e74a35a45e7..832635069c130 100644 --- a/tests/baselines/reference/pathMappingBasedModuleResolution_rootImport_aliasWithRoot_differentRootTypes.js +++ b/tests/baselines/reference/pathMappingBasedModuleResolution_rootImport_aliasWithRoot_differentRootTypes.js @@ -40,3 +40,21 @@ exports.bar = bar; //// [a.js] "use strict"; exports.__esModule = true; +require("/foo"); +require("/bar"); +require("c:/foo"); +require("c:/bar"); +require("c:\\foo"); +require("c:\\bar"); +require("//server/foo"); +require("//server/bar"); +require("\\\\server\\foo"); +require("\\\\server\\bar"); +require("file:///foo"); +require("file:///bar"); +require("file://c:/foo"); +require("file://c:/bar"); +require("file://server/foo"); +require("file://server/bar"); +require("http://server/foo"); +require("http://server/bar"); diff --git a/tests/baselines/reference/pathMappingBasedModuleResolution_rootImport_aliasWithRoot_multipleAliases.js b/tests/baselines/reference/pathMappingBasedModuleResolution_rootImport_aliasWithRoot_multipleAliases.js index 59b7c08567628..9f8346b936fdf 100644 --- a/tests/baselines/reference/pathMappingBasedModuleResolution_rootImport_aliasWithRoot_multipleAliases.js +++ b/tests/baselines/reference/pathMappingBasedModuleResolution_rootImport_aliasWithRoot_multipleAliases.js @@ -24,3 +24,5 @@ exports.bar = bar; //// [a.js] "use strict"; exports.__esModule = true; +require("/import/foo"); +require("/client/bar"); diff --git a/tests/baselines/reference/pathMappingBasedModuleResolution_rootImport_aliasWithRoot_realRootFile.js b/tests/baselines/reference/pathMappingBasedModuleResolution_rootImport_aliasWithRoot_realRootFile.js index aa8645bc401e7..d30cc1322ce49 100644 --- a/tests/baselines/reference/pathMappingBasedModuleResolution_rootImport_aliasWithRoot_realRootFile.js +++ b/tests/baselines/reference/pathMappingBasedModuleResolution_rootImport_aliasWithRoot_realRootFile.js @@ -24,3 +24,5 @@ exports.bar = bar; //// [a.js] "use strict"; exports.__esModule = true; +require("/foo"); +require("/bar"); diff --git a/tests/baselines/reference/pathMappingBasedModuleResolution_rootImport_noAliasWithRoot.js b/tests/baselines/reference/pathMappingBasedModuleResolution_rootImport_noAliasWithRoot.js index bce7220d6289a..9b1bb2988e658 100644 --- a/tests/baselines/reference/pathMappingBasedModuleResolution_rootImport_noAliasWithRoot.js +++ b/tests/baselines/reference/pathMappingBasedModuleResolution_rootImport_noAliasWithRoot.js @@ -24,3 +24,5 @@ exports.bar = bar; //// [a.js] "use strict"; exports.__esModule = true; +require("/foo"); +require("/bar"); diff --git a/tests/baselines/reference/pathMappingBasedModuleResolution_rootImport_noAliasWithRoot_realRootFile.js b/tests/baselines/reference/pathMappingBasedModuleResolution_rootImport_noAliasWithRoot_realRootFile.js index 23dd9fb91e0a4..a042e6f8dbb0b 100644 --- a/tests/baselines/reference/pathMappingBasedModuleResolution_rootImport_noAliasWithRoot_realRootFile.js +++ b/tests/baselines/reference/pathMappingBasedModuleResolution_rootImport_noAliasWithRoot_realRootFile.js @@ -24,3 +24,5 @@ exports.bar = bar; //// [a.js] "use strict"; exports.__esModule = true; +require("/foo"); +require("/bar"); diff --git a/tests/baselines/reference/pathMappingBasedModuleResolution_withExtension.js b/tests/baselines/reference/pathMappingBasedModuleResolution_withExtension.js index 3a31b8cd95020..ad60f6a36e17a 100644 --- a/tests/baselines/reference/pathMappingBasedModuleResolution_withExtension.js +++ b/tests/baselines/reference/pathMappingBasedModuleResolution_withExtension.js @@ -24,3 +24,5 @@ exports.bar = bar; //// [a.js] "use strict"; exports.__esModule = true; +require("foo"); +require("bar"); diff --git a/tests/baselines/reference/pathMappingBasedModuleResolution_withExtensionInName.js b/tests/baselines/reference/pathMappingBasedModuleResolution_withExtensionInName.js index c54c0ba61ed26..c88a95e6a7e57 100644 --- a/tests/baselines/reference/pathMappingBasedModuleResolution_withExtensionInName.js +++ b/tests/baselines/reference/pathMappingBasedModuleResolution_withExtensionInName.js @@ -14,3 +14,5 @@ import { y } from "zone.tsx"; //// [a.js] "use strict"; exports.__esModule = true; +require("zone.js"); +require("zone.tsx"); diff --git a/tests/baselines/reference/pathMappingBasedModuleResolution_withExtension_MapedToNodeModules.js b/tests/baselines/reference/pathMappingBasedModuleResolution_withExtension_MapedToNodeModules.js index b7f90ca24d1b1..b12f636dc62a3 100644 --- a/tests/baselines/reference/pathMappingBasedModuleResolution_withExtension_MapedToNodeModules.js +++ b/tests/baselines/reference/pathMappingBasedModuleResolution_withExtension_MapedToNodeModules.js @@ -10,3 +10,4 @@ import foobar from "foo/bar/foobar.js"; //// [/bin/a.js] "use strict"; exports.__esModule = true; +require("foo/bar/foobar.js"); diff --git a/tests/baselines/reference/pathMappingBasedModuleResolution_withExtension_failedLookup.js b/tests/baselines/reference/pathMappingBasedModuleResolution_withExtension_failedLookup.js index e40fe32f46bfe..42460f507594d 100644 --- a/tests/baselines/reference/pathMappingBasedModuleResolution_withExtension_failedLookup.js +++ b/tests/baselines/reference/pathMappingBasedModuleResolution_withExtension_failedLookup.js @@ -5,3 +5,4 @@ import { foo } from "foo"; //// [a.js] "use strict"; exports.__esModule = true; +require("foo"); diff --git a/tests/baselines/reference/privacyCheckExternalModuleExportAssignmentOfGenericClass.js b/tests/baselines/reference/privacyCheckExternalModuleExportAssignmentOfGenericClass.js index 5896705071b1d..4c90004fa6c8e 100644 --- a/tests/baselines/reference/privacyCheckExternalModuleExportAssignmentOfGenericClass.js +++ b/tests/baselines/reference/privacyCheckExternalModuleExportAssignmentOfGenericClass.js @@ -25,6 +25,7 @@ module.exports = Foo; //// [privacyCheckExternalModuleExportAssignmentOfGenericClass_1.js] "use strict"; exports.__esModule = true; +require("./privacyCheckExternalModuleExportAssignmentOfGenericClass_0"); //// [privacyCheckExternalModuleExportAssignmentOfGenericClass_0.d.ts] diff --git a/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithoutExport.js b/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithoutExport.js index 14b52a1ea3ade..cbeb40bbc7cf4 100644 --- a/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithoutExport.js +++ b/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithoutExport.js @@ -73,7 +73,7 @@ define(["require", "exports"], function (require, exports) { exports.c_public = c_public; }); //// [privacyTopLevelAmbientExternalModuleImportWithoutExport_core.js] -define(["require", "exports", "m", "m2", "privacyTopLevelAmbientExternalModuleImportWithoutExport_require"], function (require, exports, im_private_mi_private, im_private_mu_private, im_private_mi_public) { +define(["require", "exports", "m", "m2", "privacyTopLevelAmbientExternalModuleImportWithoutExport_require", "privacyTopLevelAmbientExternalModuleImportWithoutExport_require1"], function (require, exports, im_private_mi_private, im_private_mu_private, im_private_mi_public) { "use strict"; exports.__esModule = true; // Usage of privacy error imports diff --git a/tests/baselines/reference/propertyIdentityWithPrivacyMismatch.js b/tests/baselines/reference/propertyIdentityWithPrivacyMismatch.js index fd3edbcb52cbe..e344c86fe01e4 100644 --- a/tests/baselines/reference/propertyIdentityWithPrivacyMismatch.js +++ b/tests/baselines/reference/propertyIdentityWithPrivacyMismatch.js @@ -29,7 +29,7 @@ var y: Foo2; //// [propertyIdentityWithPrivacyMismatch_0.js] //// [propertyIdentityWithPrivacyMismatch_1.js] -define(["require", "exports"], function (require, exports) { +define(["require", "exports", "mod1", "mod2"], function (require, exports) { "use strict"; exports.__esModule = true; var x; diff --git a/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType1.js b/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType1.js index 151c719e0bd11..417f6758638cc 100644 --- a/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType1.js +++ b/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType1.js @@ -27,7 +27,7 @@ define(["require", "exports"], function (require, exports) { return ClassB; }); //// [recursiveExportAssignmentAndFindAliasedType1_moduleA.js] -define(["require", "exports"], function (require, exports) { +define(["require", "exports", "moduleC", "recursiveExportAssignmentAndFindAliasedType1_moduleB"], function (require, exports) { "use strict"; exports.__esModule = true; }); diff --git a/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType2.js b/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType2.js index 3ef3cc597f5fe..5fbf6360d814f 100644 --- a/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType2.js +++ b/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType2.js @@ -31,7 +31,7 @@ define(["require", "exports"], function (require, exports) { return ClassB; }); //// [recursiveExportAssignmentAndFindAliasedType2_moduleA.js] -define(["require", "exports"], function (require, exports) { +define(["require", "exports", "moduleC", "recursiveExportAssignmentAndFindAliasedType2_moduleB"], function (require, exports) { "use strict"; exports.__esModule = true; }); diff --git a/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType3.js b/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType3.js index 53ad4b5346468..489920a2067fd 100644 --- a/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType3.js +++ b/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType3.js @@ -35,7 +35,7 @@ define(["require", "exports"], function (require, exports) { return ClassB; }); //// [recursiveExportAssignmentAndFindAliasedType3_moduleA.js] -define(["require", "exports"], function (require, exports) { +define(["require", "exports", "moduleC", "recursiveExportAssignmentAndFindAliasedType3_moduleB"], function (require, exports) { "use strict"; exports.__esModule = true; }); diff --git a/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType4.js b/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType4.js index 2ab16bea5ba88..266e6acda24ea 100644 --- a/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType4.js +++ b/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType4.js @@ -29,7 +29,7 @@ define(["require", "exports"], function (require, exports) { return ClassB; }); //// [recursiveExportAssignmentAndFindAliasedType4_moduleA.js] -define(["require", "exports"], function (require, exports) { +define(["require", "exports", "recursiveExportAssignmentAndFindAliasedType4_moduleC", "recursiveExportAssignmentAndFindAliasedType4_moduleB"], function (require, exports) { "use strict"; exports.__esModule = true; }); diff --git a/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType5.js b/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType5.js index 2fd8490563264..574be573d6322 100644 --- a/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType5.js +++ b/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType5.js @@ -38,7 +38,7 @@ define(["require", "exports"], function (require, exports) { return ClassB; }); //// [recursiveExportAssignmentAndFindAliasedType5_moduleA.js] -define(["require", "exports"], function (require, exports) { +define(["require", "exports", "recursiveExportAssignmentAndFindAliasedType5_moduleC", "recursiveExportAssignmentAndFindAliasedType5_moduleB"], function (require, exports) { "use strict"; exports.__esModule = true; }); diff --git a/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType6.js b/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType6.js index 6d5cc60f5e4fd..70af971cf6310 100644 --- a/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType6.js +++ b/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType6.js @@ -47,7 +47,7 @@ define(["require", "exports"], function (require, exports) { return ClassB; }); //// [recursiveExportAssignmentAndFindAliasedType6_moduleA.js] -define(["require", "exports"], function (require, exports) { +define(["require", "exports", "recursiveExportAssignmentAndFindAliasedType6_moduleC", "recursiveExportAssignmentAndFindAliasedType6_moduleB"], function (require, exports) { "use strict"; exports.__esModule = true; }); diff --git a/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType7.js b/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType7.js index c4bc8804f60e5..fccfa1b273030 100644 --- a/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType7.js +++ b/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType7.js @@ -49,7 +49,7 @@ define(["require", "exports"], function (require, exports) { return ClassB; }); //// [recursiveExportAssignmentAndFindAliasedType7_moduleA.js] -define(["require", "exports"], function (require, exports) { +define(["require", "exports", "recursiveExportAssignmentAndFindAliasedType7_moduleC", "recursiveExportAssignmentAndFindAliasedType7_moduleB"], function (require, exports) { "use strict"; exports.__esModule = true; }); diff --git a/tests/baselines/reference/reexportWrittenCorrectlyInDeclaration.js b/tests/baselines/reference/reexportWrittenCorrectlyInDeclaration.js index ae3ce21ff4924..2803e2cb7eab7 100644 --- a/tests/baselines/reference/reexportWrittenCorrectlyInDeclaration.js +++ b/tests/baselines/reference/reexportWrittenCorrectlyInDeclaration.js @@ -47,6 +47,7 @@ exports.ThingB = ThingB_1.ThingB; //// [Test.js] "use strict"; exports.__esModule = true; +require("./Things"); var Test = /** @class */ (function () { function Test() { this.method = function (input) { }; diff --git a/tests/baselines/reference/relativeNamesInClassicResolution.js b/tests/baselines/reference/relativeNamesInClassicResolution.js index cb7616243ef4e..999ec91f63916 100644 --- a/tests/baselines/reference/relativeNamesInClassicResolution.js +++ b/tests/baselines/reference/relativeNamesInClassicResolution.js @@ -7,7 +7,7 @@ import {x} from "./b" export let x = 1; //// [a.js] -define(["require", "exports"], function (require, exports) { +define(["require", "exports", "./b"], function (require, exports) { "use strict"; exports.__esModule = true; }); diff --git a/tests/baselines/reference/requireOfAnEmptyFile1.js b/tests/baselines/reference/requireOfAnEmptyFile1.js index e792d9fa763f5..465f55896a117 100644 --- a/tests/baselines/reference/requireOfAnEmptyFile1.js +++ b/tests/baselines/reference/requireOfAnEmptyFile1.js @@ -13,3 +13,4 @@ import fs = require('./requireOfAnEmptyFile1_b'); "use strict"; //requireOfAnEmptyFile1 exports.__esModule = true; +require("./requireOfAnEmptyFile1_b"); diff --git a/tests/baselines/reference/requireOfJsonFileNonRelativeWithoutExtension.js b/tests/baselines/reference/requireOfJsonFileNonRelativeWithoutExtension.js index 7a85dff350116..6f687b3d4cedd 100644 --- a/tests/baselines/reference/requireOfJsonFileNonRelativeWithoutExtension.js +++ b/tests/baselines/reference/requireOfJsonFileNonRelativeWithoutExtension.js @@ -25,3 +25,5 @@ import e = require("e"); // Should fail //// [out/file1.js] "use strict"; exports.__esModule = true; +require("d.json"); // Should fail +require("e"); // Should fail diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleEmitNone.js b/tests/baselines/reference/requireOfJsonFileWithModuleEmitNone.js index a94bdd896dddd..b426341357a6d 100644 --- a/tests/baselines/reference/requireOfJsonFileWithModuleEmitNone.js +++ b/tests/baselines/reference/requireOfJsonFileWithModuleEmitNone.js @@ -12,3 +12,4 @@ import * as b from './b.json'; //// [out/file1.js] "use strict"; exports.__esModule = true; +require("./b.json"); diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleEmitUndefined.js b/tests/baselines/reference/requireOfJsonFileWithModuleEmitUndefined.js index 84b0acc7733cb..96751ec8e68eb 100644 --- a/tests/baselines/reference/requireOfJsonFileWithModuleEmitUndefined.js +++ b/tests/baselines/reference/requireOfJsonFileWithModuleEmitUndefined.js @@ -17,3 +17,4 @@ import * as b from './b.json'; //// [out/file1.js] "use strict"; exports.__esModule = true; +require("./b.json"); diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitAmd.js b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitAmd.js index 53abd96568028..0368599a36270 100644 --- a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitAmd.js +++ b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitAmd.js @@ -15,7 +15,7 @@ import * as b from './b.json'; "b": "hello" } //// [out/file1.js] -define(["require", "exports"], function (require, exports) { +define(["require", "exports", "./b.json"], function (require, exports) { "use strict"; exports.__esModule = true; }); diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitAmdOutFile.js b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitAmdOutFile.js index f6aa6d997be89..bb333561a2877 100644 --- a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitAmdOutFile.js +++ b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitAmdOutFile.js @@ -14,7 +14,7 @@ define("b", [], { "a": true, "b": "hello" }); -define("file1", ["require", "exports"], function (require, exports) { +define("file1", ["require", "exports", "b"], function (require, exports) { "use strict"; exports.__esModule = true; }); diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitEs2015.js b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitEs2015.js index 12d02801bb242..6c3bb671800e5 100644 --- a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitEs2015.js +++ b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitEs2015.js @@ -15,3 +15,4 @@ import * as b from './b.json'; "b": "hello" } //// [out/file1.js] +import './b.json'; diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitEsNext.js b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitEsNext.js index f3bcbc546fee1..df148813cb656 100644 --- a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitEsNext.js +++ b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitEsNext.js @@ -15,3 +15,4 @@ import * as b from './b.json'; "b": "hello" } //// [out/file1.js] +import './b.json'; diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitNone.js b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitNone.js index 06d357e708983..30d25c693c268 100644 --- a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitNone.js +++ b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitNone.js @@ -17,3 +17,4 @@ import * as b from './b.json'; //// [out/file1.js] "use strict"; exports.__esModule = true; +require("./b.json"); diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitSystem.js b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitSystem.js index 5174a101848c7..9502313c4dbcc 100644 --- a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitSystem.js +++ b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitSystem.js @@ -15,11 +15,14 @@ import * as b from './b.json'; "b": "hello" } //// [out/file1.js] -System.register([], function (exports_1, context_1) { +System.register(["./b.json"], function (exports_1, context_1) { "use strict"; var __moduleName = context_1 && context_1.id; return { - setters: [], + setters: [ + function (_1) { + } + ], execute: function () { } }; diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitUmd.js b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitUmd.js index 9aaecbdbef46b..08e317a03d282 100644 --- a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitUmd.js +++ b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitUmd.js @@ -21,9 +21,10 @@ import * as b from './b.json'; if (v !== undefined) module.exports = v; } else if (typeof define === "function" && define.amd) { - define(["require", "exports"], factory); + define(["require", "exports", "./b.json"], factory); } })(function (require, exports) { "use strict"; exports.__esModule = true; + require("./b.json"); }); diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitUndefined.js b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitUndefined.js index ce1abb0d4d635..7bbce03df4588 100644 --- a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitUndefined.js +++ b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitUndefined.js @@ -17,3 +17,4 @@ import * as b from './b.json'; //// [out/file1.js] "use strict"; exports.__esModule = true; +require("./b.json"); diff --git a/tests/baselines/reference/requireOfJsonFileWithoutEsModuleInterop.js b/tests/baselines/reference/requireOfJsonFileWithoutEsModuleInterop.js index ea5ac25b1b534..4035f6481701b 100644 --- a/tests/baselines/reference/requireOfJsonFileWithoutEsModuleInterop.js +++ b/tests/baselines/reference/requireOfJsonFileWithoutEsModuleInterop.js @@ -17,3 +17,4 @@ import * as test from "./test.json" //// [out/file1.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); +require("./test.json"); diff --git a/tests/baselines/reference/requireOfJsonFileWithoutResolveJsonModuleAndPathMapping.js b/tests/baselines/reference/requireOfJsonFileWithoutResolveJsonModuleAndPathMapping.js index bda2f7194d3c5..13f9dafd3422a 100644 --- a/tests/baselines/reference/requireOfJsonFileWithoutResolveJsonModuleAndPathMapping.js +++ b/tests/baselines/reference/requireOfJsonFileWithoutResolveJsonModuleAndPathMapping.js @@ -10,3 +10,4 @@ import foobar from "foo/bar/foobar.json"; //// [/bin/a.js] "use strict"; exports.__esModule = true; +require("foo/bar/foobar.json"); diff --git a/tests/baselines/reference/reservedWords2.js b/tests/baselines/reference/reservedWords2.js index 49a680085ee25..5265f9f5cbdaa 100644 --- a/tests/baselines/reference/reservedWords2.js +++ b/tests/baselines/reference/reservedWords2.js @@ -20,6 +20,7 @@ exports.__esModule = true; require(); while ( = require("dfdf")) ; +require(); while (from) "foo"; var ; diff --git a/tests/baselines/reference/reuseInnerModuleMember.js b/tests/baselines/reference/reuseInnerModuleMember.js index d432daed2a721..659caba1c8f4d 100644 --- a/tests/baselines/reference/reuseInnerModuleMember.js +++ b/tests/baselines/reference/reuseInnerModuleMember.js @@ -22,6 +22,7 @@ exports.__esModule = true; "use strict"; exports.__esModule = true; /// +require("./reuseInnerModuleMember_0"); var bar; (function (bar) { var x; diff --git a/tests/baselines/reference/scopedPackages.js b/tests/baselines/reference/scopedPackages.js index 75606d2e1b9e7..7d0320873a0af 100644 --- a/tests/baselines/reference/scopedPackages.js +++ b/tests/baselines/reference/scopedPackages.js @@ -18,3 +18,6 @@ import { z } from "@be/bop/e/z"; //// [a.js] "use strict"; exports.__esModule = true; +require("@cow/boy"); +require("@be/bop"); +require("@be/bop/e/z"); diff --git a/tests/baselines/reference/scopedPackagesClassic.js b/tests/baselines/reference/scopedPackagesClassic.js index f42acde230623..30778d001b0e8 100644 --- a/tests/baselines/reference/scopedPackagesClassic.js +++ b/tests/baselines/reference/scopedPackagesClassic.js @@ -10,3 +10,4 @@ import { x } from "@see/saw"; //// [a.js] "use strict"; exports.__esModule = true; +require("@see/saw"); diff --git a/tests/baselines/reference/showConfig/Shows tsconfig for single option/removeUnusedImports/tsconfig.json b/tests/baselines/reference/showConfig/Shows tsconfig for single option/removeUnusedImports/tsconfig.json new file mode 100644 index 0000000000000..5b71b622dc9d0 --- /dev/null +++ b/tests/baselines/reference/showConfig/Shows tsconfig for single option/removeUnusedImports/tsconfig.json @@ -0,0 +1,5 @@ +{ + "compilerOptions": { + "removeUnusedImports": true + } +} diff --git a/tests/baselines/reference/staticInstanceResolution5.js b/tests/baselines/reference/staticInstanceResolution5.js index d66531ff7b676..7ae6fc9d5f7b4 100644 --- a/tests/baselines/reference/staticInstanceResolution5.js +++ b/tests/baselines/reference/staticInstanceResolution5.js @@ -31,7 +31,7 @@ define(["require", "exports"], function (require, exports) { exports.Promise = Promise; }); //// [staticInstanceResolution5_1.js] -define(["require", "exports"], function (require, exports) { +define(["require", "exports", "staticInstanceResolution5_0"], function (require, exports) { "use strict"; exports.__esModule = true; // these 3 should be errors diff --git a/tests/baselines/reference/strictModeReservedWordInImportEqualDeclaration.js b/tests/baselines/reference/strictModeReservedWordInImportEqualDeclaration.js index 16e8580e727cb..68f0c55da4f45 100644 --- a/tests/baselines/reference/strictModeReservedWordInImportEqualDeclaration.js +++ b/tests/baselines/reference/strictModeReservedWordInImportEqualDeclaration.js @@ -5,3 +5,4 @@ import public = require("1"); //// [strictModeReservedWordInImportEqualDeclaration.js] "use strict"; exports.__esModule = true; +require("1"); diff --git a/tests/baselines/reference/strictModeWordInImportDeclaration.js b/tests/baselines/reference/strictModeWordInImportDeclaration.js index 4a335d8a744d9..8994d33903cdb 100644 --- a/tests/baselines/reference/strictModeWordInImportDeclaration.js +++ b/tests/baselines/reference/strictModeWordInImportDeclaration.js @@ -6,3 +6,6 @@ import public from "./1" //// [strictModeWordInImportDeclaration.js] "use strict"; +import "./1"; +import "./1"; +import "./1"; diff --git a/tests/baselines/reference/symbolLinkDeclarationEmitModuleNames.js b/tests/baselines/reference/symbolLinkDeclarationEmitModuleNames.js index 8cf2fab6fb4b5..ec9a377a05e8b 100644 --- a/tests/baselines/reference/symbolLinkDeclarationEmitModuleNames.js +++ b/tests/baselines/reference/symbolLinkDeclarationEmitModuleNames.js @@ -30,6 +30,7 @@ exports.__esModule = true; //// [bindingkey.js] "use strict"; exports.__esModule = true; +require("@loopback/context"); var BindingKey = /** @class */ (function () { function BindingKey() { } @@ -49,9 +50,11 @@ __export(require("./src/bindingkey")); //// [application.js] "use strict"; exports.__esModule = true; +require("@loopback/context"); //// [usage.js] "use strict"; exports.__esModule = true; +require("./application"); var context_1 = require("@loopback/context"); exports.CONTROLLER_CLASS = context_1.BindingKey.create(null); // line in question diff --git a/tests/baselines/reference/symbolLinkDeclarationEmitModuleNamesRootDir.js b/tests/baselines/reference/symbolLinkDeclarationEmitModuleNamesRootDir.js index 95b245269554b..c14c69cc75ce4 100644 --- a/tests/baselines/reference/symbolLinkDeclarationEmitModuleNamesRootDir.js +++ b/tests/baselines/reference/symbolLinkDeclarationEmitModuleNamesRootDir.js @@ -27,9 +27,11 @@ export const CONTROLLER_CLASS = BindingKey.create(null as any); //// [application.js] "use strict"; exports.__esModule = true; +require("@loopback/context"); //// [usage.js] "use strict"; exports.__esModule = true; +require("./application"); var context_1 = require("@loopback/context"); exports.CONTROLLER_CLASS = context_1.BindingKey.create(null); // line in question diff --git a/tests/baselines/reference/symbolMergeValueAndImportedType.js b/tests/baselines/reference/symbolMergeValueAndImportedType.js index 70da47268d5e4..f0080a8b897e0 100644 --- a/tests/baselines/reference/symbolMergeValueAndImportedType.js +++ b/tests/baselines/reference/symbolMergeValueAndImportedType.js @@ -13,5 +13,6 @@ Object.defineProperty(exports, "__esModule", { value: true }); //// [main.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); +require("./other"); const X = 42; console.log('X is ' + X); diff --git a/tests/baselines/reference/systemExportAssignment.js b/tests/baselines/reference/systemExportAssignment.js index 8878da7b57be7..ebe8254144008 100644 --- a/tests/baselines/reference/systemExportAssignment.js +++ b/tests/baselines/reference/systemExportAssignment.js @@ -9,11 +9,14 @@ import * as a from "a"; //// [b.js] -System.register([], function (exports_1, context_1) { +System.register(["a"], function (exports_1, context_1) { "use strict"; var __moduleName = context_1 && context_1.id; return { - setters: [], + setters: [ + function (_1) { + } + ], execute: function () { } }; diff --git a/tests/baselines/reference/systemExportAssignment2.js b/tests/baselines/reference/systemExportAssignment2.js index f4d56cffa6ca6..389d36e219c45 100644 --- a/tests/baselines/reference/systemExportAssignment2.js +++ b/tests/baselines/reference/systemExportAssignment2.js @@ -21,11 +21,14 @@ System.register([], function (exports_1, context_1) { }; }); //// [b.js] -System.register([], function (exports_1, context_1) { +System.register(["a"], function (exports_1, context_1) { "use strict"; var __moduleName = context_1 && context_1.id; return { - setters: [], + setters: [ + function (_1) { + } + ], execute: function () { } }; diff --git a/tests/baselines/reference/systemExportAssignment3.js b/tests/baselines/reference/systemExportAssignment3.js index 5c59fdf21e4fd..530074be03b30 100644 --- a/tests/baselines/reference/systemExportAssignment3.js +++ b/tests/baselines/reference/systemExportAssignment3.js @@ -11,11 +11,14 @@ import * as a from "a"; //// [b.js] -System.register([], function (exports_1, context_1) { +System.register(["a"], function (exports_1, context_1) { "use strict"; var __moduleName = context_1 && context_1.id; return { - setters: [], + setters: [ + function (_1) { + } + ], execute: function () { } }; diff --git a/tests/baselines/reference/systemModule12.js b/tests/baselines/reference/systemModule12.js index 272e1349c1aec..a37894fbd4213 100644 --- a/tests/baselines/reference/systemModule12.js +++ b/tests/baselines/reference/systemModule12.js @@ -4,11 +4,14 @@ import n from 'file1' //// [systemModule12.js] -System.register("NamedModule", [], function (exports_1, context_1) { +System.register("NamedModule", ["file1"], function (exports_1, context_1) { "use strict"; var __moduleName = context_1 && context_1.id; return { - setters: [], + setters: [ + function (_1) { + } + ], execute: function () { } }; diff --git a/tests/baselines/reference/systemModule15.js b/tests/baselines/reference/systemModule15.js index e24403b9c031c..c54ab1ac1cf63 100644 --- a/tests/baselines/reference/systemModule15.js +++ b/tests/baselines/reference/systemModule15.js @@ -54,7 +54,7 @@ System.register([], function (exports_1, context_1) { }; }); //// [file2.js] -System.register(["./file3"], function (exports_1, context_1) { +System.register(["./file3", "./file4"], function (exports_1, context_1) { "use strict"; var moduleCStar, file3_1, file3_2; var __moduleName = context_1 && context_1.id; @@ -64,6 +64,8 @@ System.register(["./file3"], function (exports_1, context_1) { moduleCStar = moduleCStar_1; file3_1 = moduleCStar_1; file3_2 = moduleCStar_1; + }, + function (_1) { } ], execute: function () { 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 f5b45ed25875f..5d6d150c29089 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 @@ -45,6 +45,7 @@ export declare function createDog(): Dog; //// [/src/lib/animals/dog.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); +require("."); var utilities_1 = require("../core/utilities"); function createDog() { return ({ diff --git a/tests/baselines/reference/tsbuild/javascriptProjectEmit/initial-build/loads-js-based-projects-and-emits-them-correctly.js b/tests/baselines/reference/tsbuild/javascriptProjectEmit/initial-build/loads-js-based-projects-and-emits-them-correctly.js index 7417b51952a88..073ebac71a7a8 100644 --- a/tests/baselines/reference/tsbuild/javascriptProjectEmit/initial-build/loads-js-based-projects-and-emits-them-correctly.js +++ b/tests/baselines/reference/tsbuild/javascriptProjectEmit/initial-build/loads-js-based-projects-and-emits-them-correctly.js @@ -59,6 +59,7 @@ export type MyNominal = string & { //// [/lib/sub-project/index.js] "use strict"; exports.__esModule = true; +require("../common/nominal"); /** * @typedef {Nominal} MyNominal */ @@ -116,6 +117,7 @@ export function getVar(): "key"; //// [/lib/sub-project-2/index.js] "use strict"; exports.__esModule = true; +require("../sub-project/index"); var variable = { key: /** @type {MyNominal} */ ('value') }; diff --git a/tests/baselines/reference/tsbuild/lateBoundSymbol/incremental-declaration-doesnt-change/interface-is-merged-and-contains-late-bound-member.js b/tests/baselines/reference/tsbuild/lateBoundSymbol/incremental-declaration-doesnt-change/interface-is-merged-and-contains-late-bound-member.js index 1cdbffe6cc6e4..a6e2fd5d9793a 100644 --- a/tests/baselines/reference/tsbuild/lateBoundSymbol/incremental-declaration-doesnt-change/interface-is-merged-and-contains-late-bound-member.js +++ b/tests/baselines/reference/tsbuild/lateBoundSymbol/incremental-declaration-doesnt-change/interface-is-merged-and-contains-late-bound-member.js @@ -15,6 +15,7 @@ exitCode:: ExitStatus.Success //// [/src/src/main.js] "use strict"; exports.__esModule = true; +require("./hkt"); var sym = Symbol(); diff --git a/tests/baselines/reference/tsbuild/lateBoundSymbol/initial-build/interface-is-merged-and-contains-late-bound-member.js b/tests/baselines/reference/tsbuild/lateBoundSymbol/initial-build/interface-is-merged-and-contains-late-bound-member.js index d89b3a9c89489..c007fc2d8ed37 100644 --- a/tests/baselines/reference/tsbuild/lateBoundSymbol/initial-build/interface-is-merged-and-contains-late-bound-member.js +++ b/tests/baselines/reference/tsbuild/lateBoundSymbol/initial-build/interface-is-merged-and-contains-late-bound-member.js @@ -18,6 +18,7 @@ exports.__esModule = true; //// [/src/src/main.js] "use strict"; exports.__esModule = true; +require("./hkt"); var sym = Symbol(); var x = 10; diff --git a/tests/baselines/reference/tsbuild/moduleSpecifiers/initial-build/synthesized-module-specifiers-resolve-correctly.js b/tests/baselines/reference/tsbuild/moduleSpecifiers/initial-build/synthesized-module-specifiers-resolve-correctly.js index 5c8f8da7b6f20..b17b563820277 100644 --- a/tests/baselines/reference/tsbuild/moduleSpecifiers/initial-build/synthesized-module-specifiers-resolve-correctly.js +++ b/tests/baselines/reference/tsbuild/moduleSpecifiers/initial-build/synthesized-module-specifiers-resolve-correctly.js @@ -71,6 +71,7 @@ export declare type MyNominal = Nominal; //// [/src/lib/solution/sub-project/index.js] "use strict"; exports.__esModule = true; +require("../common/nominal"); //// [/src/lib/solution/sub-project/tsconfig.tsbuildinfo] @@ -127,6 +128,7 @@ export {}; //// [/src/lib/solution/sub-project-2/index.js] "use strict"; exports.__esModule = true; +require("../sub-project/index"); var variable = { key: 'value' }; diff --git a/tests/baselines/reference/tsc/declarationEmit/initial-build/when-same-version-is-referenced-through-source-and-another-symlinked-package.js b/tests/baselines/reference/tsc/declarationEmit/initial-build/when-same-version-is-referenced-through-source-and-another-symlinked-package.js index e634d99e52385..ad975e9ac88ee 100644 --- a/tests/baselines/reference/tsc/declarationEmit/initial-build/when-same-version-is-referenced-through-source-and-another-symlinked-package.js +++ b/tests/baselines/reference/tsc/declarationEmit/initial-build/when-same-version-is-referenced-through-source-and-another-symlinked-package.js @@ -33,5 +33,6 @@ export {}; //// [/src/plugin-one/index.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); +require("plugin-two"); // include this to add reference to symlink diff --git a/tests/baselines/reference/tsxElementResolution17.js b/tests/baselines/reference/tsxElementResolution17.js index 1f61a441d66b9..74886cf79a2a6 100644 --- a/tests/baselines/reference/tsxElementResolution17.js +++ b/tests/baselines/reference/tsxElementResolution17.js @@ -28,7 +28,7 @@ import s2 = require('elements2'); //// [file.jsx] //// [consumer.jsx] -define(["require", "exports", "elements1"], function (require, exports, s1) { +define(["require", "exports", "elements1", "elements2"], function (require, exports, s1) { "use strict"; exports.__esModule = true; ; diff --git a/tests/baselines/reference/tsxPreserveEmit3.js b/tests/baselines/reference/tsxPreserveEmit3.js index d886d4169b817..86aac4c0fb09c 100644 --- a/tests/baselines/reference/tsxPreserveEmit3.js +++ b/tests/baselines/reference/tsxPreserveEmit3.js @@ -18,7 +18,7 @@ import {React} from "./test"; //// [file.jsx] //// [react-consumer.jsx] -define(["require", "exports"], function (require, exports) { +define(["require", "exports", "./test"], function (require, exports) { "use strict"; exports.__esModule = true; }); diff --git a/tests/baselines/reference/typeReferenceDirectives10.js b/tests/baselines/reference/typeReferenceDirectives10.js index 569159df42171..26db090522d69 100644 --- a/tests/baselines/reference/typeReferenceDirectives10.js +++ b/tests/baselines/reference/typeReferenceDirectives10.js @@ -17,6 +17,8 @@ export interface A { //// [app.js] "use strict"; exports.__esModule = true; +/// +require("./ref"); //// [app.d.ts] diff --git a/tests/baselines/reference/typeReferenceDirectives13.js b/tests/baselines/reference/typeReferenceDirectives13.js index 03dabec933100..847b15352101f 100644 --- a/tests/baselines/reference/typeReferenceDirectives13.js +++ b/tests/baselines/reference/typeReferenceDirectives13.js @@ -17,6 +17,8 @@ export interface A { //// [app.js] "use strict"; exports.__esModule = true; +/// +require("./ref"); //// [app.d.ts] diff --git a/tests/baselines/reference/typeReferenceDirectives5.js b/tests/baselines/reference/typeReferenceDirectives5.js index aabb879c485bc..9835b77f04429 100644 --- a/tests/baselines/reference/typeReferenceDirectives5.js +++ b/tests/baselines/reference/typeReferenceDirectives5.js @@ -16,6 +16,8 @@ export interface A { //// [app.js] "use strict"; exports.__esModule = true; +/// +require("./ref"); //// [app.d.ts] diff --git a/tests/baselines/reference/typeReferenceRelatedFiles.js b/tests/baselines/reference/typeReferenceRelatedFiles.js index 77cf0a8e16df8..00e5885b47a6c 100644 --- a/tests/baselines/reference/typeReferenceRelatedFiles.js +++ b/tests/baselines/reference/typeReferenceRelatedFiles.js @@ -22,6 +22,8 @@ export function f() { //// [main.js] "use strict"; exports.__esModule = true; +/// +require("fs"); function f() { return {}; } diff --git a/tests/baselines/reference/typeUsedAsValueError2.js b/tests/baselines/reference/typeUsedAsValueError2.js index 2c068d4f4d27e..7ebdb01886905 100644 --- a/tests/baselines/reference/typeUsedAsValueError2.js +++ b/tests/baselines/reference/typeUsedAsValueError2.js @@ -32,7 +32,7 @@ define(["require", "exports"], function (require, exports) { exports.__esModule = true; }); //// [world.js] -define(["require", "exports"], function (require, exports) { +define(["require", "exports", "helloInterface", "helloNamespace"], function (require, exports) { "use strict"; exports.__esModule = true; HelloInterface.world; diff --git a/tests/baselines/reference/typesVersions.emptyTypes.js b/tests/baselines/reference/typesVersions.emptyTypes.js index 0bcc27d7a65ac..596f4c6821981 100644 --- a/tests/baselines/reference/typesVersions.emptyTypes.js +++ b/tests/baselines/reference/typesVersions.emptyTypes.js @@ -18,3 +18,4 @@ import { a } from "a"; //// [user.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); +require("a"); diff --git a/tests/baselines/reference/typesVersions.justIndex.js b/tests/baselines/reference/typesVersions.justIndex.js index 094376c7d0fa7..bc6a78c31cca0 100644 --- a/tests/baselines/reference/typesVersions.justIndex.js +++ b/tests/baselines/reference/typesVersions.justIndex.js @@ -17,3 +17,4 @@ import { a } from "a"; //// [user.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); +require("a"); diff --git a/tests/baselines/reference/typingsLookupAmd.js b/tests/baselines/reference/typingsLookupAmd.js index 11ccba92814a8..433153d01149c 100644 --- a/tests/baselines/reference/typingsLookupAmd.js +++ b/tests/baselines/reference/typingsLookupAmd.js @@ -12,7 +12,7 @@ import {B} from "b"; //// [foo.js] -define(["require", "exports"], function (require, exports) { +define(["require", "exports", "b"], function (require, exports) { "use strict"; exports.__esModule = true; }); diff --git a/tests/baselines/reference/umd8.js b/tests/baselines/reference/umd8.js index 3aefdded756f3..d9234c86094fb 100644 --- a/tests/baselines/reference/umd8.js +++ b/tests/baselines/reference/umd8.js @@ -23,6 +23,8 @@ let x: any = Foo; // Not OK in value position //// [a.js] "use strict"; exports.__esModule = true; +/// +require("./foo"); var y; // OK in type position y.foo(); var z; // OK in ns position diff --git a/tests/baselines/reference/umdGlobalConflict.js b/tests/baselines/reference/umdGlobalConflict.js index 114bdd643e45c..9631844115e59 100644 --- a/tests/baselines/reference/umdGlobalConflict.js +++ b/tests/baselines/reference/umdGlobalConflict.js @@ -19,6 +19,8 @@ const p: string = Alpha.x; //// [consumer.js] "use strict"; exports.__esModule = true; +require("./v1"); +require("./v2"); //// [global.js] // Should be OK, first in wins var p = Alpha.x; diff --git a/tests/baselines/reference/untypedModuleImport_noImplicitAny.js b/tests/baselines/reference/untypedModuleImport_noImplicitAny.js index 378ebee6d7a2f..d1b1240fe58c7 100644 --- a/tests/baselines/reference/untypedModuleImport_noImplicitAny.js +++ b/tests/baselines/reference/untypedModuleImport_noImplicitAny.js @@ -15,3 +15,4 @@ import * as foo from "foo"; //// [a.js] "use strict"; exports.__esModule = true; +require("foo"); diff --git a/tests/baselines/reference/untypedModuleImport_noImplicitAny_relativePath.js b/tests/baselines/reference/untypedModuleImport_noImplicitAny_relativePath.js index 7e8c52a3bfbbb..aaa2a84c73f33 100644 --- a/tests/baselines/reference/untypedModuleImport_noImplicitAny_relativePath.js +++ b/tests/baselines/reference/untypedModuleImport_noImplicitAny_relativePath.js @@ -13,3 +13,4 @@ import * as foo from "./node_modules/foo"; //// [a.js] "use strict"; exports.__esModule = true; +require("./node_modules/foo"); diff --git a/tests/baselines/reference/untypedModuleImport_noImplicitAny_scoped.js b/tests/baselines/reference/untypedModuleImport_noImplicitAny_scoped.js index fc33d4a2665d6..fc747db61d583 100644 --- a/tests/baselines/reference/untypedModuleImport_noImplicitAny_scoped.js +++ b/tests/baselines/reference/untypedModuleImport_noImplicitAny_scoped.js @@ -13,3 +13,4 @@ import * as foo from "@foo/bar"; //// [a.js] "use strict"; exports.__esModule = true; +require("@foo/bar"); diff --git a/tests/baselines/reference/untypedModuleImport_noImplicitAny_typesForPackageExist.js b/tests/baselines/reference/untypedModuleImport_noImplicitAny_typesForPackageExist.js index e8d757f5e28bc..3194abe76b20e 100644 --- a/tests/baselines/reference/untypedModuleImport_noImplicitAny_typesForPackageExist.js +++ b/tests/baselines/reference/untypedModuleImport_noImplicitAny_typesForPackageExist.js @@ -48,3 +48,9 @@ import * as scopeBarSub from "@scope/bar/sub"; //// [a.js] "use strict"; exports.__esModule = true; +require("foo"); +require("foo/sub"); +require("bar/sub"); +require("@scope/foo"); +require("@scope/foo/sub"); +require("@scope/bar/sub"); diff --git a/tests/baselines/reference/untypedModuleImport_withAugmentation2.js b/tests/baselines/reference/untypedModuleImport_withAugmentation2.js index 6a01db5dd251a..ab69e0ec12aa7 100644 --- a/tests/baselines/reference/untypedModuleImport_withAugmentation2.js +++ b/tests/baselines/reference/untypedModuleImport_withAugmentation2.js @@ -18,3 +18,4 @@ import { } from "augmenter"; //// [a.js] "use strict"; exports.__esModule = true; +require("augmenter"); diff --git a/tests/baselines/reference/unusedInvalidTypeArguments.js b/tests/baselines/reference/unusedInvalidTypeArguments.js index 1a424921c1fee..b9c037ae67ca5 100644 --- a/tests/baselines/reference/unusedInvalidTypeArguments.js +++ b/tests/baselines/reference/unusedInvalidTypeArguments.js @@ -84,6 +84,7 @@ exports.D = D; //// [interface.js] "use strict"; exports.__esModule = true; +require("unknown"); //// [call.js] "use strict"; exports.__esModule = true; diff --git a/tests/baselines/reference/unusedLocalsStartingWithUnderscore.js b/tests/baselines/reference/unusedLocalsStartingWithUnderscore.js index 54b029445e39d..b7ff773e5ea69 100644 --- a/tests/baselines/reference/unusedLocalsStartingWithUnderscore.js +++ b/tests/baselines/reference/unusedLocalsStartingWithUnderscore.js @@ -16,6 +16,7 @@ namespace _ns { //// [a.js] "use strict"; exports.__esModule = true; +require("./a"); for (var _i = 0, _a = []; _i < _a.length; _i++) { var _1 = _a[_i]; } diff --git a/tests/baselines/reference/visibilityOfCrossModuleTypeUsage.js b/tests/baselines/reference/visibilityOfCrossModuleTypeUsage.js index 1eab90467d486..8e7825e709fcc 100644 --- a/tests/baselines/reference/visibilityOfCrossModuleTypeUsage.js +++ b/tests/baselines/reference/visibilityOfCrossModuleTypeUsage.js @@ -32,9 +32,12 @@ exports.__esModule = true; "use strict"; //visibilityOfCrossModuleTypeUsage exports.__esModule = true; +require("./visibilityOfCrossModuleTypeUsage_fs"); +require("./visibilityOfCrossModuleTypeUsage_server"); //// [visibilityOfCrossModuleTypeUsage_fs.js] "use strict"; exports.__esModule = true; +require("./visibilityOfCrossModuleTypeUsage_commands"); function run(configuration) { var absoluteWorkspacePath = configuration.workspace.toAbsolutePath(configuration.server); } diff --git a/tests/cases/compiler/unusedImportDeclaration.ts b/tests/cases/compiler/unusedImportDeclaration.ts index 71fe5aae5a38a..ddcad6da2f391 100644 --- a/tests/cases/compiler/unusedImportDeclaration.ts +++ b/tests/cases/compiler/unusedImportDeclaration.ts @@ -1,6 +1,7 @@ // @module: commonjs // @declaration: true // @Filename: unusedImportDeclaration_testerB.ts +// @removeUnusedImports: true class TesterB { me: string; } diff --git a/tests/cases/compiler/unusedImports1.ts b/tests/cases/compiler/unusedImports1.ts index 30fff0c1ed195..643ecf0ca163b 100644 --- a/tests/cases/compiler/unusedImports1.ts +++ b/tests/cases/compiler/unusedImports1.ts @@ -1,5 +1,6 @@ //@noUnusedLocals:true //@noUnusedParameters:true +//@removeUnusedImports: true // @Filename: file1.ts export class Calculator { diff --git a/tests/cases/compiler/unusedImports10.ts b/tests/cases/compiler/unusedImports10.ts index 1cccfbd38bb49..0a73a1e33531c 100644 --- a/tests/cases/compiler/unusedImports10.ts +++ b/tests/cases/compiler/unusedImports10.ts @@ -1,5 +1,6 @@ //@noUnusedLocals:true //@noUnusedParameters:true +//@removeUnusedImports: true module A { export class Calculator { diff --git a/tests/cases/compiler/unusedImports11.ts b/tests/cases/compiler/unusedImports11.ts index 4f2fed649d152..c3e5b4f45f3ee 100644 --- a/tests/cases/compiler/unusedImports11.ts +++ b/tests/cases/compiler/unusedImports11.ts @@ -1,5 +1,6 @@ //@noUnusedLocals:true //@noUnusedParameters:true +//@removeUnusedImports: true // @filename: b.ts export class Member {} diff --git a/tests/cases/compiler/unusedImports12.ts b/tests/cases/compiler/unusedImports12.ts index 14206284b6439..613c5627f7191 100644 --- a/tests/cases/compiler/unusedImports12.ts +++ b/tests/cases/compiler/unusedImports12.ts @@ -1,5 +1,6 @@ //@noUnusedLocals:true //@noUnusedParameters:true +//@removeUnusedImports: true // @filename: b.ts export class Member {} diff --git a/tests/cases/compiler/unusedImports13.ts b/tests/cases/compiler/unusedImports13.ts index af188e70eae99..61126be3fbbd1 100644 --- a/tests/cases/compiler/unusedImports13.ts +++ b/tests/cases/compiler/unusedImports13.ts @@ -1,6 +1,7 @@ //@noUnusedLocals:true //@module: commonjs //@jsx: preserve +//@removeUnusedImports: true // @filename: foo.tsx import React = require("react"); diff --git a/tests/cases/compiler/unusedImports14.ts b/tests/cases/compiler/unusedImports14.ts index 1823d4bb49b5f..dea15c7e54513 100644 --- a/tests/cases/compiler/unusedImports14.ts +++ b/tests/cases/compiler/unusedImports14.ts @@ -1,6 +1,7 @@ //@noUnusedLocals:true //@module: commonjs //@jsx: react +//@removeUnusedImports: true // @filename: foo.tsx import React = require("react"); diff --git a/tests/cases/compiler/unusedImports15.ts b/tests/cases/compiler/unusedImports15.ts index ef6b277d21de2..c0a83638886c2 100644 --- a/tests/cases/compiler/unusedImports15.ts +++ b/tests/cases/compiler/unusedImports15.ts @@ -2,6 +2,7 @@ //@module: commonjs //@reactNamespace: Element //@jsx: preserve +//@removeUnusedImports: true // @filename: foo.tsx import Element = require("react"); diff --git a/tests/cases/compiler/unusedImports16.ts b/tests/cases/compiler/unusedImports16.ts index ff0c38bb75ea6..92a22ac82332b 100644 --- a/tests/cases/compiler/unusedImports16.ts +++ b/tests/cases/compiler/unusedImports16.ts @@ -2,6 +2,7 @@ //@module: commonjs //@reactNamespace: Element //@jsx: react +//@removeUnusedImports: true // @filename: foo.tsx import Element = require("react"); diff --git a/tests/cases/compiler/unusedImports2.ts b/tests/cases/compiler/unusedImports2.ts index 00e7fcff33bc3..c95eace424cdd 100644 --- a/tests/cases/compiler/unusedImports2.ts +++ b/tests/cases/compiler/unusedImports2.ts @@ -1,5 +1,6 @@ //@noUnusedLocals:true //@noUnusedParameters:true +//@removeUnusedImports: true // @Filename: file1.ts export class Calculator { diff --git a/tests/cases/compiler/unusedImports3.ts b/tests/cases/compiler/unusedImports3.ts index 349c2c9abe8e6..5a16a6599a70b 100644 --- a/tests/cases/compiler/unusedImports3.ts +++ b/tests/cases/compiler/unusedImports3.ts @@ -1,5 +1,6 @@ //@noUnusedLocals:true //@noUnusedParameters:true +//@removeUnusedImports: true // @Filename: file1.ts export class Calculator { diff --git a/tests/cases/compiler/unusedImports4.ts b/tests/cases/compiler/unusedImports4.ts index 472c59658509c..b949afcaae8f1 100644 --- a/tests/cases/compiler/unusedImports4.ts +++ b/tests/cases/compiler/unusedImports4.ts @@ -1,5 +1,6 @@ //@noUnusedLocals:true //@noUnusedParameters:true +//@removeUnusedImports: true // @Filename: file1.ts export class Calculator { diff --git a/tests/cases/compiler/unusedImports5.ts b/tests/cases/compiler/unusedImports5.ts index 85943691ce2e2..486383674d479 100644 --- a/tests/cases/compiler/unusedImports5.ts +++ b/tests/cases/compiler/unusedImports5.ts @@ -1,5 +1,6 @@ //@noUnusedLocals:true //@noUnusedParameters:true +//@removeUnusedImports: true // @Filename: file1.ts export class Calculator { diff --git a/tests/cases/compiler/unusedImports6.ts b/tests/cases/compiler/unusedImports6.ts index 6ff45cc1b295e..219ef5d953903 100644 --- a/tests/cases/compiler/unusedImports6.ts +++ b/tests/cases/compiler/unusedImports6.ts @@ -1,5 +1,6 @@ //@noUnusedLocals:true //@noUnusedParameters:true +//@removeUnusedImports: true // @Filename: file1.ts export class Calculator { diff --git a/tests/cases/compiler/unusedImports7.ts b/tests/cases/compiler/unusedImports7.ts index 94df358174524..71a5c0ce396f9 100644 --- a/tests/cases/compiler/unusedImports7.ts +++ b/tests/cases/compiler/unusedImports7.ts @@ -1,5 +1,6 @@ //@noUnusedLocals:true //@noUnusedParameters:true +//@removeUnusedImports: true // @Filename: file1.ts export class Calculator { diff --git a/tests/cases/compiler/unusedImports8.ts b/tests/cases/compiler/unusedImports8.ts index e8bd982d0380e..e4ed9b8ef6d4f 100644 --- a/tests/cases/compiler/unusedImports8.ts +++ b/tests/cases/compiler/unusedImports8.ts @@ -1,5 +1,6 @@ //@noUnusedLocals:true //@noUnusedParameters:true +//@removeUnusedImports: true // @Filename: file1.ts export class Calculator { diff --git a/tests/cases/compiler/unusedImports9.ts b/tests/cases/compiler/unusedImports9.ts index 2e13e216c1558..b84ca2927b529 100644 --- a/tests/cases/compiler/unusedImports9.ts +++ b/tests/cases/compiler/unusedImports9.ts @@ -1,5 +1,6 @@ //@noUnusedLocals:true //@noUnusedParameters:true +//@removeUnusedImports: true // @Filename: file1.ts export class Calculator { diff --git a/tests/cases/compiler/unusedImports_entireImportDeclaration.ts b/tests/cases/compiler/unusedImports_entireImportDeclaration.ts index fa7fcb7f59632..e880920cc396a 100644 --- a/tests/cases/compiler/unusedImports_entireImportDeclaration.ts +++ b/tests/cases/compiler/unusedImports_entireImportDeclaration.ts @@ -1,4 +1,5 @@ // @noUnusedLocals: true +// @removeUnusedImports: true // @Filename: /a.ts export const a = 0; From 12bd78d6b947652eb06495fa0c32cd9264916909 Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Mon, 25 Nov 2019 10:50:12 -0800 Subject: [PATCH 33/47] Update to match updated diagnostic messages --- src/compiler/program.ts | 4 ++-- tests/baselines/reference/grammarErrors.errors.txt | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/compiler/program.ts b/src/compiler/program.ts index 828752d5031a4..65566d9e157c3 100644 --- a/src/compiler/program.ts +++ b/src/compiler/program.ts @@ -1819,13 +1819,13 @@ namespace ts { switch (node.kind) { case SyntaxKind.ImportClause: if ((node as ImportClause).isTypeOnly) { - diagnostics.push(createDiagnosticForNode(node.parent, Diagnostics._0_can_only_be_used_in_a_ts_file, "import type")); + diagnostics.push(createDiagnosticForNode(node.parent, Diagnostics._0_declarations_can_only_be_used_in_TypeScript_files, "import type")); return; } break; case SyntaxKind.ExportDeclaration: if ((node as ExportDeclaration).isTypeOnly) { - diagnostics.push(createDiagnosticForNode(node, Diagnostics._0_can_only_be_used_in_a_ts_file, "export type")); + diagnostics.push(createDiagnosticForNode(node, Diagnostics._0_declarations_can_only_be_used_in_TypeScript_files, "export type")); return; } break; diff --git a/tests/baselines/reference/grammarErrors.errors.txt b/tests/baselines/reference/grammarErrors.errors.txt index b8772c917c920..9346d1f6b5ca9 100644 --- a/tests/baselines/reference/grammarErrors.errors.txt +++ b/tests/baselines/reference/grammarErrors.errors.txt @@ -1,8 +1,8 @@ error TS5055: Cannot write file '/a.js' because it would overwrite input file. Adding a tsconfig.json file will help organize projects that contain both TypeScript and JavaScript files. Learn more at https://aka.ms/tsconfig. error TS5056: Cannot write file '/a.js' because it would be overwritten by multiple input files. -/a.js(1,1): error TS8009: 'import type' can only be used in a .ts file. -/a.js(2,1): error TS8009: 'export type' can only be used in a .ts file. +/a.js(1,1): error TS8006: 'import type' declarations can only be used in TypeScript files. +/a.js(2,1): error TS8006: 'export type' declarations can only be used in TypeScript files. /b.ts(1,8): error TS1363: Type-only import can specify a default import or named bindings, but not both. @@ -22,8 +22,8 @@ error TS5056: Cannot write file '/a.js' because it would be overwritten by multi ==== /a.js (2 errors) ==== import type A from './a'; ~~~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS8009: 'import type' can only be used in a .ts file. +!!! error TS8006: 'import type' declarations can only be used in TypeScript files. export type { A }; ~~~~~~~~~~~~~~~~~~ -!!! error TS8009: 'export type' can only be used in a .ts file. +!!! error TS8006: 'export type' declarations can only be used in TypeScript files. \ No newline at end of file From 3724f887eeb726e0bfc48669759c681c80fb6376 Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Mon, 25 Nov 2019 11:16:12 -0800 Subject: [PATCH 34/47] Update more baselines --- .../reference/asyncAwaitIsolatedModules_es2017.js | 1 + .../declarationsForFileShadowingGlobalNoError.js | 2 ++ ...portDefaultBindingFollowedWithNamedImportInEs5.js | 1 + .../reference/missingImportAfterModuleImport.js | 2 ++ .../reference/project/baseline2/amd/dont_emit.js | 2 +- .../reference/project/baseline2/node/dont_emit.js | 1 + .../reference/project/declarationDir/amd/a.js | 2 +- .../project/declarationDir/amd/subfolder/c.js | 2 +- .../reference/project/declarationDir/node/a.js | 1 + .../project/declarationDir/node/subfolder/c.js | 1 + .../reference/project/declarationDir2/amd/out/a.js | 2 +- .../project/declarationDir2/amd/out/subfolder/c.js | 2 +- .../reference/project/declarationDir2/node/out/a.js | 1 + .../project/declarationDir2/node/out/subfolder/c.js | 1 + .../reference/project/declarationDir3/amd/out.js | 4 ++-- .../nodeModulesImportHigher/amd/importHigher/root.js | 2 +- .../node/importHigher/root.js | 1 + .../reference/project/nonRelative/amd/lib/foo/a.js | 2 +- .../reference/project/nonRelative/node/lib/foo/a.js | 1 + .../amd/commands.js | 2 +- .../visibilityOfTypeUsedAcrossModules/amd/fs.js | 2 +- .../node/commands.js | 2 ++ .../visibilityOfTypeUsedAcrossModules/node/fs.js | 1 + ...ransformsCorrectly.transformAddCommentToImport.js | 2 ++ ...ates no diagnostics for missing module imports.js | 1 + ...ostics for missing module imports.oldTranspile.js | 1 + .../modules-and-globals-mixed-in-amd.js | 12 ++++++------ .../multiple-emitHelpers-in-all-projects.js | 12 ++++++------ .../multiple-prologues-in-all-projects.js | 12 ++++++------ .../shebang-in-all-projects.js | 12 ++++++------ .../stripInternal.js | 12 ++++++------ .../triple-slash-refs-in-all-projects.js | 12 ++++++------ .../multiple-emitHelpers-in-all-projects.js | 12 ++++++------ .../multiple-prologues-in-all-projects.js | 12 ++++++------ .../stripInternal.js | 12 ++++++------ .../modules-and-globals-mixed-in-amd.js | 12 ++++++------ .../multiple-emitHelpers-in-all-projects.js | 12 ++++++------ .../multiple-prologues-in-all-projects.js | 12 ++++++------ .../initial-build/shebang-in-all-projects.js | 12 ++++++------ .../amdModulesWithOut/initial-build/stripInternal.js | 12 ++++++------ .../triple-slash-refs-in-all-projects.js | 12 ++++++------ ...e-module-resolution-finds-original-source-file.js | 12 ++++++------ 42 files changed, 127 insertions(+), 107 deletions(-) diff --git a/tests/baselines/reference/asyncAwaitIsolatedModules_es2017.js b/tests/baselines/reference/asyncAwaitIsolatedModules_es2017.js index 065aa675b6e57..afa7902c74f20 100644 --- a/tests/baselines/reference/asyncAwaitIsolatedModules_es2017.js +++ b/tests/baselines/reference/asyncAwaitIsolatedModules_es2017.js @@ -40,6 +40,7 @@ module M { } //// [asyncAwaitIsolatedModules_es2017.js] +import "missing"; async function f0() { } async function f1() { } async function f3() { } diff --git a/tests/baselines/reference/declarationsForFileShadowingGlobalNoError.js b/tests/baselines/reference/declarationsForFileShadowingGlobalNoError.js index ed972a1312cb5..a11dc31db695f 100644 --- a/tests/baselines/reference/declarationsForFileShadowingGlobalNoError.js +++ b/tests/baselines/reference/declarationsForFileShadowingGlobalNoError.js @@ -38,6 +38,8 @@ var __extends = (this && this.__extends) || (function () { }; })(); exports.__esModule = true; +require("./custom"); +require("./dom"); exports.mixin = function (Base) { return /** @class */ (function (_super) { __extends(class_1, _super); diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportInEs5.js b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportInEs5.js index 3c55a05f25e7d..94dcbae1a8a3d 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportInEs5.js +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportInEs5.js @@ -29,6 +29,7 @@ exports.m = exports.a; //// [es6ImportDefaultBindingFollowedWithNamedImportInEs5_1.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); +require("./es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"); var es6ImportDefaultBindingFollowedWithNamedImportInEs5_0_1 = require("./es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"); var x1 = es6ImportDefaultBindingFollowedWithNamedImportInEs5_0_1.a; var es6ImportDefaultBindingFollowedWithNamedImportInEs5_0_2 = require("./es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"); diff --git a/tests/baselines/reference/missingImportAfterModuleImport.js b/tests/baselines/reference/missingImportAfterModuleImport.js index a66e96932a3fc..85fcf8b7fdc10 100644 --- a/tests/baselines/reference/missingImportAfterModuleImport.js +++ b/tests/baselines/reference/missingImportAfterModuleImport.js @@ -25,6 +25,8 @@ export = MainModule; //// [missingImportAfterModuleImport_0.js] //// [missingImportAfterModuleImport_1.js] "use strict"; +/// +require("SubModule"); var MainModule = /** @class */ (function () { function MainModule() { } diff --git a/tests/baselines/reference/project/baseline2/amd/dont_emit.js b/tests/baselines/reference/project/baseline2/amd/dont_emit.js index 18dae0f6420b3..945d897c0932b 100644 --- a/tests/baselines/reference/project/baseline2/amd/dont_emit.js +++ b/tests/baselines/reference/project/baseline2/amd/dont_emit.js @@ -1,4 +1,4 @@ -define(["require", "exports"], function (require, exports) { +define(["require", "exports", "decl"], function (require, exports) { "use strict"; exports.__esModule = true; var p = { x: 10, y: 20 }; diff --git a/tests/baselines/reference/project/baseline2/node/dont_emit.js b/tests/baselines/reference/project/baseline2/node/dont_emit.js index ce766eee086a3..a7359784966bc 100644 --- a/tests/baselines/reference/project/baseline2/node/dont_emit.js +++ b/tests/baselines/reference/project/baseline2/node/dont_emit.js @@ -1,3 +1,4 @@ "use strict"; exports.__esModule = true; +require("decl"); var p = { x: 10, y: 20 }; diff --git a/tests/baselines/reference/project/declarationDir/amd/a.js b/tests/baselines/reference/project/declarationDir/amd/a.js index 7dead9acfe131..46d5f851bfb2d 100644 --- a/tests/baselines/reference/project/declarationDir/amd/a.js +++ b/tests/baselines/reference/project/declarationDir/amd/a.js @@ -1,4 +1,4 @@ -define(["require", "exports"], function (require, exports) { +define(["require", "exports", "./subfolder/b"], function (require, exports) { "use strict"; exports.__esModule = true; var A = /** @class */ (function () { diff --git a/tests/baselines/reference/project/declarationDir/amd/subfolder/c.js b/tests/baselines/reference/project/declarationDir/amd/subfolder/c.js index 20ccddc05bfc5..7bcf01c6e9676 100644 --- a/tests/baselines/reference/project/declarationDir/amd/subfolder/c.js +++ b/tests/baselines/reference/project/declarationDir/amd/subfolder/c.js @@ -1,4 +1,4 @@ -define(["require", "exports"], function (require, exports) { +define(["require", "exports", "../a"], function (require, exports) { "use strict"; exports.__esModule = true; var C = /** @class */ (function () { diff --git a/tests/baselines/reference/project/declarationDir/node/a.js b/tests/baselines/reference/project/declarationDir/node/a.js index e1197274fb98a..8dc1ce9605882 100644 --- a/tests/baselines/reference/project/declarationDir/node/a.js +++ b/tests/baselines/reference/project/declarationDir/node/a.js @@ -1,5 +1,6 @@ "use strict"; exports.__esModule = true; +require("./subfolder/b"); var A = /** @class */ (function () { function A() { } diff --git a/tests/baselines/reference/project/declarationDir/node/subfolder/c.js b/tests/baselines/reference/project/declarationDir/node/subfolder/c.js index 22e264212b799..dca2230dac30e 100644 --- a/tests/baselines/reference/project/declarationDir/node/subfolder/c.js +++ b/tests/baselines/reference/project/declarationDir/node/subfolder/c.js @@ -1,5 +1,6 @@ "use strict"; exports.__esModule = true; +require("../a"); var C = /** @class */ (function () { function C() { } diff --git a/tests/baselines/reference/project/declarationDir2/amd/out/a.js b/tests/baselines/reference/project/declarationDir2/amd/out/a.js index 7dead9acfe131..46d5f851bfb2d 100644 --- a/tests/baselines/reference/project/declarationDir2/amd/out/a.js +++ b/tests/baselines/reference/project/declarationDir2/amd/out/a.js @@ -1,4 +1,4 @@ -define(["require", "exports"], function (require, exports) { +define(["require", "exports", "./subfolder/b"], function (require, exports) { "use strict"; exports.__esModule = true; var A = /** @class */ (function () { diff --git a/tests/baselines/reference/project/declarationDir2/amd/out/subfolder/c.js b/tests/baselines/reference/project/declarationDir2/amd/out/subfolder/c.js index 20ccddc05bfc5..7bcf01c6e9676 100644 --- a/tests/baselines/reference/project/declarationDir2/amd/out/subfolder/c.js +++ b/tests/baselines/reference/project/declarationDir2/amd/out/subfolder/c.js @@ -1,4 +1,4 @@ -define(["require", "exports"], function (require, exports) { +define(["require", "exports", "../a"], function (require, exports) { "use strict"; exports.__esModule = true; var C = /** @class */ (function () { diff --git a/tests/baselines/reference/project/declarationDir2/node/out/a.js b/tests/baselines/reference/project/declarationDir2/node/out/a.js index e1197274fb98a..8dc1ce9605882 100644 --- a/tests/baselines/reference/project/declarationDir2/node/out/a.js +++ b/tests/baselines/reference/project/declarationDir2/node/out/a.js @@ -1,5 +1,6 @@ "use strict"; exports.__esModule = true; +require("./subfolder/b"); var A = /** @class */ (function () { function A() { } diff --git a/tests/baselines/reference/project/declarationDir2/node/out/subfolder/c.js b/tests/baselines/reference/project/declarationDir2/node/out/subfolder/c.js index 22e264212b799..dca2230dac30e 100644 --- a/tests/baselines/reference/project/declarationDir2/node/out/subfolder/c.js +++ b/tests/baselines/reference/project/declarationDir2/node/out/subfolder/c.js @@ -1,5 +1,6 @@ "use strict"; exports.__esModule = true; +require("../a"); var C = /** @class */ (function () { function C() { } diff --git a/tests/baselines/reference/project/declarationDir3/amd/out.js b/tests/baselines/reference/project/declarationDir3/amd/out.js index e103f2af4c574..1e131fd8658d4 100644 --- a/tests/baselines/reference/project/declarationDir3/amd/out.js +++ b/tests/baselines/reference/project/declarationDir3/amd/out.js @@ -8,7 +8,7 @@ define("subfolder/b", ["require", "exports"], function (require, exports) { }()); exports.B = B; }); -define("a", ["require", "exports"], function (require, exports) { +define("a", ["require", "exports", "subfolder/b"], function (require, exports) { "use strict"; exports.__esModule = true; var A = /** @class */ (function () { @@ -18,7 +18,7 @@ define("a", ["require", "exports"], function (require, exports) { }()); exports.A = A; }); -define("subfolder/c", ["require", "exports"], function (require, exports) { +define("subfolder/c", ["require", "exports", "a"], function (require, exports) { "use strict"; exports.__esModule = true; var C = /** @class */ (function () { diff --git a/tests/baselines/reference/project/nodeModulesImportHigher/amd/importHigher/root.js b/tests/baselines/reference/project/nodeModulesImportHigher/amd/importHigher/root.js index 65e3b33be1a80..a1b69f8b5613f 100644 --- a/tests/baselines/reference/project/nodeModulesImportHigher/amd/importHigher/root.js +++ b/tests/baselines/reference/project/nodeModulesImportHigher/amd/importHigher/root.js @@ -1,4 +1,4 @@ -define(["require", "exports", "m1"], function (require, exports, m1) { +define(["require", "exports", "m1", "m2"], function (require, exports, m1) { "use strict"; exports.__esModule = true; m1.f1("test"); diff --git a/tests/baselines/reference/project/nodeModulesImportHigher/node/importHigher/root.js b/tests/baselines/reference/project/nodeModulesImportHigher/node/importHigher/root.js index 4fc36cd0222e6..27a110657bc07 100644 --- a/tests/baselines/reference/project/nodeModulesImportHigher/node/importHigher/root.js +++ b/tests/baselines/reference/project/nodeModulesImportHigher/node/importHigher/root.js @@ -1,6 +1,7 @@ "use strict"; exports.__esModule = true; var m1 = require("m1"); +require("m2"); m1.f1("test"); m1.f2.a = 10; m1.f2.person.age = "10"; // Error: Should be number (if direct import of m2 made the m3 module visible). diff --git a/tests/baselines/reference/project/nonRelative/amd/lib/foo/a.js b/tests/baselines/reference/project/nonRelative/amd/lib/foo/a.js index b92af88609dd4..2c6af2dd7788d 100644 --- a/tests/baselines/reference/project/nonRelative/amd/lib/foo/a.js +++ b/tests/baselines/reference/project/nonRelative/amd/lib/foo/a.js @@ -1,4 +1,4 @@ -define(["require", "exports"], function (require, exports) { +define(["require", "exports", "lib/foo/b"], function (require, exports) { "use strict"; exports.__esModule = true; function hello() { } diff --git a/tests/baselines/reference/project/nonRelative/node/lib/foo/a.js b/tests/baselines/reference/project/nonRelative/node/lib/foo/a.js index c83848543b20f..8b40abebc0144 100644 --- a/tests/baselines/reference/project/nonRelative/node/lib/foo/a.js +++ b/tests/baselines/reference/project/nonRelative/node/lib/foo/a.js @@ -1,4 +1,5 @@ "use strict"; exports.__esModule = true; +require("lib/foo/b"); function hello() { } exports.hello = hello; diff --git a/tests/baselines/reference/project/visibilityOfTypeUsedAcrossModules/amd/commands.js b/tests/baselines/reference/project/visibilityOfTypeUsedAcrossModules/amd/commands.js index eb08364649a70..c84e7ec28a0c9 100644 --- a/tests/baselines/reference/project/visibilityOfTypeUsedAcrossModules/amd/commands.js +++ b/tests/baselines/reference/project/visibilityOfTypeUsedAcrossModules/amd/commands.js @@ -1,4 +1,4 @@ -define(["require", "exports"], function (require, exports) { +define(["require", "exports", "fs", "server"], function (require, exports) { "use strict"; exports.__esModule = true; }); diff --git a/tests/baselines/reference/project/visibilityOfTypeUsedAcrossModules/amd/fs.js b/tests/baselines/reference/project/visibilityOfTypeUsedAcrossModules/amd/fs.js index b07077a35d0e0..f48ea108d9cbe 100644 --- a/tests/baselines/reference/project/visibilityOfTypeUsedAcrossModules/amd/fs.js +++ b/tests/baselines/reference/project/visibilityOfTypeUsedAcrossModules/amd/fs.js @@ -1,4 +1,4 @@ -define(["require", "exports"], function (require, exports) { +define(["require", "exports", "./commands"], function (require, exports) { "use strict"; exports.__esModule = true; var RM = /** @class */ (function () { diff --git a/tests/baselines/reference/project/visibilityOfTypeUsedAcrossModules/node/commands.js b/tests/baselines/reference/project/visibilityOfTypeUsedAcrossModules/node/commands.js index 64cbe53a86127..19cf3640c0562 100644 --- a/tests/baselines/reference/project/visibilityOfTypeUsedAcrossModules/node/commands.js +++ b/tests/baselines/reference/project/visibilityOfTypeUsedAcrossModules/node/commands.js @@ -1,2 +1,4 @@ "use strict"; exports.__esModule = true; +require("fs"); +require("server"); diff --git a/tests/baselines/reference/project/visibilityOfTypeUsedAcrossModules/node/fs.js b/tests/baselines/reference/project/visibilityOfTypeUsedAcrossModules/node/fs.js index 8baa948ca7aea..e7666100a8186 100644 --- a/tests/baselines/reference/project/visibilityOfTypeUsedAcrossModules/node/fs.js +++ b/tests/baselines/reference/project/visibilityOfTypeUsedAcrossModules/node/fs.js @@ -1,5 +1,6 @@ "use strict"; exports.__esModule = true; +require("./commands"); var RM = /** @class */ (function () { function RM() { } diff --git a/tests/baselines/reference/transformApi/transformsCorrectly.transformAddCommentToImport.js b/tests/baselines/reference/transformApi/transformsCorrectly.transformAddCommentToImport.js index de19b854d20a7..b1121dbd99f15 100644 --- a/tests/baselines/reference/transformApi/transformsCorrectly.transformAddCommentToImport.js +++ b/tests/baselines/reference/transformApi/transformsCorrectly.transformAddCommentToImport.js @@ -7,6 +7,8 @@ Object.defineProperty(exports, "__esModule", { value: true }); var somewhere_1 = require("somewhere"); exports.Value = somewhere_1.Value; /*comment*/ +require("somewhere"); +/*comment*/ var somewhere_2 = require("somewhere"); /*comment*/ exports.X = somewhere_2.X; diff --git a/tests/baselines/reference/transpile/Generates no diagnostics for missing module imports.js b/tests/baselines/reference/transpile/Generates no diagnostics for missing module imports.js index e9493d9d5917d..878fa1b43b059 100644 --- a/tests/baselines/reference/transpile/Generates no diagnostics for missing module imports.js +++ b/tests/baselines/reference/transpile/Generates no diagnostics for missing module imports.js @@ -1,3 +1,4 @@ "use strict"; exports.__esModule = true; +require("module2"); //# sourceMappingURL=file.js.map \ No newline at end of file diff --git a/tests/baselines/reference/transpile/Generates no diagnostics for missing module imports.oldTranspile.js b/tests/baselines/reference/transpile/Generates no diagnostics for missing module imports.oldTranspile.js index e9493d9d5917d..878fa1b43b059 100644 --- a/tests/baselines/reference/transpile/Generates no diagnostics for missing module imports.oldTranspile.js +++ b/tests/baselines/reference/transpile/Generates no diagnostics for missing module imports.oldTranspile.js @@ -1,3 +1,4 @@ "use strict"; exports.__esModule = true; +require("module2"); //# sourceMappingURL=file.js.map \ No newline at end of file diff --git a/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-declaration-doesnt-change/modules-and-globals-mixed-in-amd.js b/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-declaration-doesnt-change/modules-and-globals-mixed-in-amd.js index f7e72a97df55b..33321a70669e6 100644 --- a/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-declaration-doesnt-change/modules-and-globals-mixed-in-amd.js +++ b/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-declaration-doesnt-change/modules-and-globals-mixed-in-amd.js @@ -31,7 +31,7 @@ define("file2", ["require", "exports"], function (require, exports) { exports.y = 20; }); var globalConst = 10; -define("file3", ["require", "exports"], function (require, exports) { +define("file3", ["require", "exports", "file1"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; @@ -168,7 +168,7 @@ sourceFile:../lib/global.ts 4 > ^^^ 5 > ^^ 6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> 1 > 2 >const 3 > globalConst @@ -186,7 +186,7 @@ sourceFile:../lib/global.ts emittedFile:/src/app/module.js sourceFile:file3.ts ------------------------------------------------------------------- ->>>define("file3", ["require", "exports"], function (require, exports) { +>>>define("file3", ["require", "exports", "file1"], function (require, exports) { >>> "use strict"; >>> Object.defineProperty(exports, "__esModule", { value: true }); >>> exports.z = 30; @@ -262,7 +262,7 @@ sourceFile:file4.ts }, { "pos": 438, - "end": 639, + "end": 648, "kind": "text" } ] @@ -315,8 +315,8 @@ define("file2", ["require", "exports"], function (require, exports) { var globalConst = 10; ---------------------------------------------------------------------- -text: (438-639) -define("file3", ["require", "exports"], function (require, exports) { +text: (438-648) +define("file3", ["require", "exports", "file1"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; diff --git a/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-declaration-doesnt-change/multiple-emitHelpers-in-all-projects.js b/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-declaration-doesnt-change/multiple-emitHelpers-in-all-projects.js index a8031f007545c..d24dc78cc7a78 100644 --- a/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-declaration-doesnt-change/multiple-emitHelpers-in-all-projects.js +++ b/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-declaration-doesnt-change/multiple-emitHelpers-in-all-projects.js @@ -72,7 +72,7 @@ define("file2", ["require", "exports"], function (require, exports) { exports.y = 20; }); var globalConst = 10; -define("file3", ["require", "exports"], function (require, exports) { +define("file3", ["require", "exports", "file1"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; @@ -395,7 +395,7 @@ sourceFile:../lib/global.ts 4 > ^^^ 5 > ^^ 6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> 1 > 2 >const 3 > globalConst @@ -413,7 +413,7 @@ sourceFile:../lib/global.ts emittedFile:/src/app/module.js sourceFile:file3.ts ------------------------------------------------------------------- ->>>define("file3", ["require", "exports"], function (require, exports) { +>>>define("file3", ["require", "exports", "file1"], function (require, exports) { >>> "use strict"; >>> Object.defineProperty(exports, "__esModule", { value: true }); >>> exports.z = 30; @@ -652,7 +652,7 @@ sourceFile:file4.ts }, { "pos": 1935, - "end": 2453, + "end": 2462, "kind": "text" } ], @@ -759,8 +759,8 @@ define("file2", ["require", "exports"], function (require, exports) { var globalConst = 10; ---------------------------------------------------------------------- -text: (1935-2453) -define("file3", ["require", "exports"], function (require, exports) { +text: (1935-2462) +define("file3", ["require", "exports", "file1"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; diff --git a/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-declaration-doesnt-change/multiple-prologues-in-all-projects.js b/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-declaration-doesnt-change/multiple-prologues-in-all-projects.js index 20b15b4d8803a..8a9251a6a7776 100644 --- a/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-declaration-doesnt-change/multiple-prologues-in-all-projects.js +++ b/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-declaration-doesnt-change/multiple-prologues-in-all-projects.js @@ -36,7 +36,7 @@ define("file2", ["require", "exports"], function (require, exports) { exports.y = 20; }); var globalConst = 10; -define("file3", ["require", "exports"], function (require, exports) { +define("file3", ["require", "exports", "file1"], function (require, exports) { "use strict"; "myPrologue"; Object.defineProperty(exports, "__esModule", { value: true }); @@ -237,7 +237,7 @@ sourceFile:../lib/global.ts 4 > ^^^ 5 > ^^ 6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> 1 >"myPrologue3" > 2 >const @@ -256,7 +256,7 @@ sourceFile:../lib/global.ts emittedFile:/src/app/module.js sourceFile:file3.ts ------------------------------------------------------------------- ->>>define("file3", ["require", "exports"], function (require, exports) { +>>>define("file3", ["require", "exports", "file1"], function (require, exports) { >>> "use strict"; >>> "myPrologue"; 1->^^^^ @@ -370,7 +370,7 @@ sourceFile:file4.ts }, { "pos": 523, - "end": 743, + "end": 752, "kind": "text" } ], @@ -464,8 +464,8 @@ define("file2", ["require", "exports"], function (require, exports) { var globalConst = 10; ---------------------------------------------------------------------- -text: (523-743) -define("file3", ["require", "exports"], function (require, exports) { +text: (523-752) +define("file3", ["require", "exports", "file1"], function (require, exports) { "use strict"; "myPrologue"; Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-declaration-doesnt-change/shebang-in-all-projects.js b/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-declaration-doesnt-change/shebang-in-all-projects.js index 8edcec79d8bff..eb9576201a623 100644 --- a/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-declaration-doesnt-change/shebang-in-all-projects.js +++ b/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-declaration-doesnt-change/shebang-in-all-projects.js @@ -32,7 +32,7 @@ define("file2", ["require", "exports"], function (require, exports) { exports.y = 20; }); var globalConst = 10; -define("file3", ["require", "exports"], function (require, exports) { +define("file3", ["require", "exports", "file1"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; @@ -172,7 +172,7 @@ sourceFile:../lib/global.ts 4 > ^^^ 5 > ^^ 6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> 1 > 2 >const 3 > globalConst @@ -190,7 +190,7 @@ sourceFile:../lib/global.ts emittedFile:/src/app/module.js sourceFile:file3.ts ------------------------------------------------------------------- ->>>define("file3", ["require", "exports"], function (require, exports) { +>>>define("file3", ["require", "exports", "file1"], function (require, exports) { >>> "use strict"; >>> Object.defineProperty(exports, "__esModule", { value: true }); >>> exports.z = 30; @@ -267,7 +267,7 @@ sourceFile:file4.ts }, { "pos": 463, - "end": 664, + "end": 673, "kind": "text" } ] @@ -320,8 +320,8 @@ define("file2", ["require", "exports"], function (require, exports) { var globalConst = 10; ---------------------------------------------------------------------- -text: (463-664) -define("file3", ["require", "exports"], function (require, exports) { +text: (463-673) +define("file3", ["require", "exports", "file1"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; diff --git a/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-declaration-doesnt-change/stripInternal.js b/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-declaration-doesnt-change/stripInternal.js index 36435d0421c7a..48b8e111fce8a 100644 --- a/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-declaration-doesnt-change/stripInternal.js +++ b/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-declaration-doesnt-change/stripInternal.js @@ -121,7 +121,7 @@ define("file2", ["require", "exports"], function (require, exports) { exports.y = 20; }); var globalConst = 10; -define("file3", ["require", "exports"], function (require, exports) { +define("file3", ["require", "exports", "file1"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; @@ -1611,7 +1611,7 @@ sourceFile:../lib/global.ts 4 > ^^^ 5 > ^^ 6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> 1 > 2 >const 3 > globalConst @@ -1629,7 +1629,7 @@ sourceFile:../lib/global.ts emittedFile:/src/app/module.js sourceFile:file3.ts ------------------------------------------------------------------- ->>>define("file3", ["require", "exports"], function (require, exports) { +>>>define("file3", ["require", "exports", "file1"], function (require, exports) { >>> "use strict"; >>> Object.defineProperty(exports, "__esModule", { value: true }); >>> exports.z = 30; @@ -1705,7 +1705,7 @@ sourceFile:file4.ts }, { "pos": 4158, - "end": 4359, + "end": 4368, "kind": "text" } ] @@ -1848,8 +1848,8 @@ define("file2", ["require", "exports"], function (require, exports) { var globalConst = 10; ---------------------------------------------------------------------- -text: (4158-4359) -define("file3", ["require", "exports"], function (require, exports) { +text: (4158-4368) +define("file3", ["require", "exports", "file1"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; diff --git a/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-declaration-doesnt-change/triple-slash-refs-in-all-projects.js b/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-declaration-doesnt-change/triple-slash-refs-in-all-projects.js index de9f9dc4ac597..67fdb63473c80 100644 --- a/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-declaration-doesnt-change/triple-slash-refs-in-all-projects.js +++ b/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-declaration-doesnt-change/triple-slash-refs-in-all-projects.js @@ -33,7 +33,7 @@ define("file2", ["require", "exports"], function (require, exports) { exports.y = 20; }); var globalConst = 10; -define("file3", ["require", "exports"], function (require, exports) { +define("file3", ["require", "exports", "file1"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; @@ -208,7 +208,7 @@ sourceFile:../lib/global.ts 4 > ^^^ 5 > ^^ 6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> 1 > 2 >const 3 > globalConst @@ -226,7 +226,7 @@ sourceFile:../lib/global.ts emittedFile:/src/app/module.js sourceFile:file3.ts ------------------------------------------------------------------- ->>>define("file3", ["require", "exports"], function (require, exports) { +>>>define("file3", ["require", "exports", "file1"], function (require, exports) { >>> "use strict"; >>> Object.defineProperty(exports, "__esModule", { value: true }); >>> exports.z = 30; @@ -338,7 +338,7 @@ sourceFile:file4.ts }, { "pos": 513, - "end": 789, + "end": 798, "kind": "text" } ] @@ -405,8 +405,8 @@ define("file2", ["require", "exports"], function (require, exports) { var globalConst = 10; ---------------------------------------------------------------------- -text: (513-789) -define("file3", ["require", "exports"], function (require, exports) { +text: (513-798) +define("file3", ["require", "exports", "file1"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; diff --git a/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-headers-change-without-dts-changes/multiple-emitHelpers-in-all-projects.js b/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-headers-change-without-dts-changes/multiple-emitHelpers-in-all-projects.js index fe117cffae082..f3337380fd4cd 100644 --- a/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-headers-change-without-dts-changes/multiple-emitHelpers-in-all-projects.js +++ b/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-headers-change-without-dts-changes/multiple-emitHelpers-in-all-projects.js @@ -69,7 +69,7 @@ define("file2", ["require", "exports"], function (require, exports) { exports.y = 20; }); var globalConst = 10; -define("file3", ["require", "exports"], function (require, exports) { +define("file3", ["require", "exports", "file1"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; @@ -334,7 +334,7 @@ sourceFile:../lib/global.ts 4 > ^^^ 5 > ^^ 6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> 1 > 2 >const 3 > globalConst @@ -352,7 +352,7 @@ sourceFile:../lib/global.ts emittedFile:/src/app/module.js sourceFile:file3.ts ------------------------------------------------------------------- ->>>define("file3", ["require", "exports"], function (require, exports) { +>>>define("file3", ["require", "exports", "file1"], function (require, exports) { >>> "use strict"; >>> Object.defineProperty(exports, "__esModule", { value: true }); >>> exports.z = 30; @@ -591,7 +591,7 @@ sourceFile:file4.ts }, { "pos": 1821, - "end": 2339, + "end": 2348, "kind": "text" } ], @@ -695,8 +695,8 @@ define("file2", ["require", "exports"], function (require, exports) { var globalConst = 10; ---------------------------------------------------------------------- -text: (1821-2339) -define("file3", ["require", "exports"], function (require, exports) { +text: (1821-2348) +define("file3", ["require", "exports", "file1"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; diff --git a/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-headers-change-without-dts-changes/multiple-prologues-in-all-projects.js b/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-headers-change-without-dts-changes/multiple-prologues-in-all-projects.js index 3d7c28a3a2880..95f2b40145b1c 100644 --- a/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-headers-change-without-dts-changes/multiple-prologues-in-all-projects.js +++ b/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-headers-change-without-dts-changes/multiple-prologues-in-all-projects.js @@ -214,7 +214,7 @@ define("file2", ["require", "exports"], function (require, exports) { exports.y = 20; }); var globalConst = 10; -define("file3", ["require", "exports"], function (require, exports) { +define("file3", ["require", "exports", "file1"], function (require, exports) { "use strict"; "myPrologue"; Object.defineProperty(exports, "__esModule", { value: true }); @@ -401,7 +401,7 @@ sourceFile:../lib/global.ts 4 > ^^^ 5 > ^^ 6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> 1 >"myPrologue3" > 2 >const @@ -420,7 +420,7 @@ sourceFile:../lib/global.ts emittedFile:/src/app/module.js sourceFile:file3.ts ------------------------------------------------------------------- ->>>define("file3", ["require", "exports"], function (require, exports) { +>>>define("file3", ["require", "exports", "file1"], function (require, exports) { >>> "use strict"; >>> "myPrologue"; 1->^^^^ @@ -534,7 +534,7 @@ sourceFile:file4.ts }, { "pos": 514, - "end": 734, + "end": 743, "kind": "text" } ], @@ -628,8 +628,8 @@ define("file2", ["require", "exports"], function (require, exports) { var globalConst = 10; ---------------------------------------------------------------------- -text: (514-734) -define("file3", ["require", "exports"], function (require, exports) { +text: (514-743) +define("file3", ["require", "exports", "file1"], function (require, exports) { "use strict"; "myPrologue"; Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-headers-change-without-dts-changes/stripInternal.js b/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-headers-change-without-dts-changes/stripInternal.js index 455d2e781741c..fd76cd02ad8ba 100644 --- a/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-headers-change-without-dts-changes/stripInternal.js +++ b/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-headers-change-without-dts-changes/stripInternal.js @@ -319,7 +319,7 @@ define("file2", ["require", "exports"], function (require, exports) { exports.y = 20; }); var globalConst = 10; -define("file3", ["require", "exports"], function (require, exports) { +define("file3", ["require", "exports", "file1"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; @@ -1789,7 +1789,7 @@ sourceFile:../lib/global.ts 4 > ^^^ 5 > ^^ 6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> 1 > 2 >const 3 > globalConst @@ -1807,7 +1807,7 @@ sourceFile:../lib/global.ts emittedFile:/src/app/module.js sourceFile:file3.ts ------------------------------------------------------------------- ->>>define("file3", ["require", "exports"], function (require, exports) { +>>>define("file3", ["require", "exports", "file1"], function (require, exports) { >>> "use strict"; >>> Object.defineProperty(exports, "__esModule", { value: true }); >>> exports.z = 30; @@ -1883,7 +1883,7 @@ sourceFile:file4.ts }, { "pos": 4143, - "end": 4344, + "end": 4353, "kind": "text" } ] @@ -2025,8 +2025,8 @@ define("file2", ["require", "exports"], function (require, exports) { var globalConst = 10; ---------------------------------------------------------------------- -text: (4143-4344) -define("file3", ["require", "exports"], function (require, exports) { +text: (4143-4353) +define("file3", ["require", "exports", "file1"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; diff --git a/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/modules-and-globals-mixed-in-amd.js b/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/modules-and-globals-mixed-in-amd.js index dbe3eaffbde12..81ff1adcd260a 100644 --- a/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/modules-and-globals-mixed-in-amd.js +++ b/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/modules-and-globals-mixed-in-amd.js @@ -215,7 +215,7 @@ define("file2", ["require", "exports"], function (require, exports) { exports.y = 20; }); var globalConst = 10; -define("file3", ["require", "exports"], function (require, exports) { +define("file3", ["require", "exports", "file1"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; @@ -325,7 +325,7 @@ sourceFile:../lib/global.ts 4 > ^^^ 5 > ^^ 6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> 1 > 2 >const 3 > globalConst @@ -343,7 +343,7 @@ sourceFile:../lib/global.ts emittedFile:/src/app/module.js sourceFile:file3.ts ------------------------------------------------------------------- ->>>define("file3", ["require", "exports"], function (require, exports) { +>>>define("file3", ["require", "exports", "file1"], function (require, exports) { >>> "use strict"; >>> Object.defineProperty(exports, "__esModule", { value: true }); >>> exports.z = 30; @@ -419,7 +419,7 @@ sourceFile:file4.ts }, { "pos": 409, - "end": 610, + "end": 619, "kind": "text" } ] @@ -471,8 +471,8 @@ define("file2", ["require", "exports"], function (require, exports) { var globalConst = 10; ---------------------------------------------------------------------- -text: (409-610) -define("file3", ["require", "exports"], function (require, exports) { +text: (409-619) +define("file3", ["require", "exports", "file1"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; diff --git a/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/multiple-emitHelpers-in-all-projects.js b/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/multiple-emitHelpers-in-all-projects.js index a2965cde2de7e..8aa17bf535039 100644 --- a/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/multiple-emitHelpers-in-all-projects.js +++ b/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/multiple-emitHelpers-in-all-projects.js @@ -330,7 +330,7 @@ define("file2", ["require", "exports"], function (require, exports) { exports.y = 20; }); var globalConst = 10; -define("file3", ["require", "exports"], function (require, exports) { +define("file3", ["require", "exports", "file1"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; @@ -626,7 +626,7 @@ sourceFile:../lib/global.ts 4 > ^^^ 5 > ^^ 6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> 1 > 2 >const 3 > globalConst @@ -644,7 +644,7 @@ sourceFile:../lib/global.ts emittedFile:/src/app/module.js sourceFile:file3.ts ------------------------------------------------------------------- ->>>define("file3", ["require", "exports"], function (require, exports) { +>>>define("file3", ["require", "exports", "file1"], function (require, exports) { >>> "use strict"; >>> Object.defineProperty(exports, "__esModule", { value: true }); >>> exports.z = 30; @@ -883,7 +883,7 @@ sourceFile:file4.ts }, { "pos": 1906, - "end": 2424, + "end": 2433, "kind": "text" } ], @@ -989,8 +989,8 @@ define("file2", ["require", "exports"], function (require, exports) { var globalConst = 10; ---------------------------------------------------------------------- -text: (1906-2424) -define("file3", ["require", "exports"], function (require, exports) { +text: (1906-2433) +define("file3", ["require", "exports", "file1"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; diff --git a/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/multiple-prologues-in-all-projects.js b/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/multiple-prologues-in-all-projects.js index ce52dcebd472b..9f2987661ca11 100644 --- a/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/multiple-prologues-in-all-projects.js +++ b/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/multiple-prologues-in-all-projects.js @@ -234,7 +234,7 @@ define("file2", ["require", "exports"], function (require, exports) { exports.y = 20; }); var globalConst = 10; -define("file3", ["require", "exports"], function (require, exports) { +define("file3", ["require", "exports", "file1"], function (require, exports) { "use strict"; "myPrologue"; Object.defineProperty(exports, "__esModule", { value: true }); @@ -408,7 +408,7 @@ sourceFile:../lib/global.ts 4 > ^^^ 5 > ^^ 6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> 1 >"myPrologue3" > 2 >const @@ -427,7 +427,7 @@ sourceFile:../lib/global.ts emittedFile:/src/app/module.js sourceFile:file3.ts ------------------------------------------------------------------- ->>>define("file3", ["require", "exports"], function (require, exports) { +>>>define("file3", ["require", "exports", "file1"], function (require, exports) { >>> "use strict"; >>> "myPrologue"; 1->^^^^ @@ -541,7 +541,7 @@ sourceFile:file4.ts }, { "pos": 494, - "end": 714, + "end": 723, "kind": "text" } ], @@ -634,8 +634,8 @@ define("file2", ["require", "exports"], function (require, exports) { var globalConst = 10; ---------------------------------------------------------------------- -text: (494-714) -define("file3", ["require", "exports"], function (require, exports) { +text: (494-723) +define("file3", ["require", "exports", "file1"], function (require, exports) { "use strict"; "myPrologue"; Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/shebang-in-all-projects.js b/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/shebang-in-all-projects.js index ac259989bcecf..5cb709cfd8333 100644 --- a/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/shebang-in-all-projects.js +++ b/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/shebang-in-all-projects.js @@ -226,7 +226,7 @@ define("file2", ["require", "exports"], function (require, exports) { exports.y = 20; }); var globalConst = 10; -define("file3", ["require", "exports"], function (require, exports) { +define("file3", ["require", "exports", "file1"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; @@ -339,7 +339,7 @@ sourceFile:../lib/global.ts 4 > ^^^ 5 > ^^ 6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> 1 > 2 >const 3 > globalConst @@ -357,7 +357,7 @@ sourceFile:../lib/global.ts emittedFile:/src/app/module.js sourceFile:file3.ts ------------------------------------------------------------------- ->>>define("file3", ["require", "exports"], function (require, exports) { +>>>define("file3", ["require", "exports", "file1"], function (require, exports) { >>> "use strict"; >>> Object.defineProperty(exports, "__esModule", { value: true }); >>> exports.z = 30; @@ -434,7 +434,7 @@ sourceFile:file4.ts }, { "pos": 434, - "end": 635, + "end": 644, "kind": "text" } ] @@ -486,8 +486,8 @@ define("file2", ["require", "exports"], function (require, exports) { var globalConst = 10; ---------------------------------------------------------------------- -text: (434-635) -define("file3", ["require", "exports"], function (require, exports) { +text: (434-644) +define("file3", ["require", "exports", "file1"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; diff --git a/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/stripInternal.js b/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/stripInternal.js index 04bdb8e9b467d..7ca2288c5ae43 100644 --- a/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/stripInternal.js +++ b/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/stripInternal.js @@ -344,7 +344,7 @@ define("file2", ["require", "exports"], function (require, exports) { exports.y = 20; }); var globalConst = 10; -define("file3", ["require", "exports"], function (require, exports) { +define("file3", ["require", "exports", "file1"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; @@ -1808,7 +1808,7 @@ sourceFile:../lib/global.ts 4 > ^^^ 5 > ^^ 6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> 1 > 2 >const 3 > globalConst @@ -1826,7 +1826,7 @@ sourceFile:../lib/global.ts emittedFile:/src/app/module.js sourceFile:file3.ts ------------------------------------------------------------------- ->>>define("file3", ["require", "exports"], function (require, exports) { +>>>define("file3", ["require", "exports", "file1"], function (require, exports) { >>> "use strict"; >>> Object.defineProperty(exports, "__esModule", { value: true }); >>> exports.z = 30; @@ -1902,7 +1902,7 @@ sourceFile:file4.ts }, { "pos": 4129, - "end": 4330, + "end": 4339, "kind": "text" } ] @@ -2044,8 +2044,8 @@ define("file2", ["require", "exports"], function (require, exports) { var globalConst = 10; ---------------------------------------------------------------------- -text: (4129-4330) -define("file3", ["require", "exports"], function (require, exports) { +text: (4129-4339) +define("file3", ["require", "exports", "file1"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; diff --git a/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/triple-slash-refs-in-all-projects.js b/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/triple-slash-refs-in-all-projects.js index 3aab51c08f76e..ce53b9793a2bc 100644 --- a/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/triple-slash-refs-in-all-projects.js +++ b/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/triple-slash-refs-in-all-projects.js @@ -272,7 +272,7 @@ define("file2", ["require", "exports"], function (require, exports) { exports.y = 20; }); var globalConst = 10; -define("file3", ["require", "exports"], function (require, exports) { +define("file3", ["require", "exports", "file1"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; @@ -420,7 +420,7 @@ sourceFile:../lib/global.ts 4 > ^^^ 5 > ^^ 6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> 1 > 2 >const 3 > globalConst @@ -438,7 +438,7 @@ sourceFile:../lib/global.ts emittedFile:/src/app/module.js sourceFile:file3.ts ------------------------------------------------------------------- ->>>define("file3", ["require", "exports"], function (require, exports) { +>>>define("file3", ["require", "exports", "file1"], function (require, exports) { >>> "use strict"; >>> Object.defineProperty(exports, "__esModule", { value: true }); >>> exports.z = 30; @@ -550,7 +550,7 @@ sourceFile:file4.ts }, { "pos": 484, - "end": 760, + "end": 769, "kind": "text" } ] @@ -616,8 +616,8 @@ define("file2", ["require", "exports"], function (require, exports) { var globalConst = 10; ---------------------------------------------------------------------- -text: (484-760) -define("file3", ["require", "exports"], function (require, exports) { +text: (484-769) +define("file3", ["require", "exports", "file1"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; diff --git a/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/when-the-module-resolution-finds-original-source-file.js b/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/when-the-module-resolution-finds-original-source-file.js index 1ddbd2fff9afe..2c96dc4204d25 100644 --- a/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/when-the-module-resolution-finds-original-source-file.js +++ b/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/when-the-module-resolution-finds-original-source-file.js @@ -220,7 +220,7 @@ define("lib/file2", ["require", "exports"], function (require, exports) { exports.y = 20; }); var globalConst = 10; -define("file3", ["require", "exports"], function (require, exports) { +define("file3", ["require", "exports", "lib/file1"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; @@ -330,7 +330,7 @@ sourceFile:../lib/global.ts 4 > ^^^ 5 > ^^ 6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> 1 > 2 >const 3 > globalConst @@ -348,7 +348,7 @@ sourceFile:../lib/global.ts emittedFile:/src/app/module.js sourceFile:file3.ts ------------------------------------------------------------------- ->>>define("file3", ["require", "exports"], function (require, exports) { +>>>define("file3", ["require", "exports", "lib/file1"], function (require, exports) { >>> "use strict"; >>> Object.defineProperty(exports, "__esModule", { value: true }); >>> exports.z = 30; @@ -424,7 +424,7 @@ sourceFile:file4.ts }, { "pos": 417, - "end": 618, + "end": 631, "kind": "text" } ] @@ -476,8 +476,8 @@ define("lib/file2", ["require", "exports"], function (require, exports) { var globalConst = 10; ---------------------------------------------------------------------- -text: (417-618) -define("file3", ["require", "exports"], function (require, exports) { +text: (417-631) +define("file3", ["require", "exports", "lib/file1"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; From 42fc34a2ed8b14cac4d3381c33e08dfa9b60b8e6 Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Mon, 25 Nov 2019 11:25:58 -0800 Subject: [PATCH 35/47] Update more tests --- src/testRunner/unittests/tscWatch/emit.ts | 4 ++-- tests/cases/fourslash/codeFixConvertToTypeOnlyExport1.ts | 2 +- tests/cases/fourslash/codeFixConvertToTypeOnlyExport2.ts | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/testRunner/unittests/tscWatch/emit.ts b/src/testRunner/unittests/tscWatch/emit.ts index 01264019962af..798908aa14c68 100644 --- a/src/testRunner/unittests/tscWatch/emit.ts +++ b/src/testRunner/unittests/tscWatch/emit.ts @@ -629,8 +629,8 @@ namespace ts.tscWatch { }; const strictAndEsModule = `"use strict";\nexports.__esModule = true;\n`; verifyEmittedFileContents("\n", [file3, file2, file1], [ - `${strictAndEsModule}var v = 1 /* V */;\n`, - strictAndEsModule, + `${strictAndEsModule}require("./file2");\nvar v = 1 /* V */;\n`, + `${strictAndEsModule}require("./file1");\n`, strictAndEsModule ], modifyFiles); diff --git a/tests/cases/fourslash/codeFixConvertToTypeOnlyExport1.ts b/tests/cases/fourslash/codeFixConvertToTypeOnlyExport1.ts index 3e464c3d97138..00c9083f37720 100644 --- a/tests/cases/fourslash/codeFixConvertToTypeOnlyExport1.ts +++ b/tests/cases/fourslash/codeFixConvertToTypeOnlyExport1.ts @@ -13,6 +13,6 @@ goTo.file("/b.ts"); verify.codeFix({ index: 0, description: ts.Diagnostics.Convert_to_type_only_export.message, - errorCode: ts.Diagnostics.Re_exporting_a_type_when_the_isolatedModules_flag_is_provided_requires_using_an_explicit_type_only_export.code, + errorCode: ts.Diagnostics.Re_exporting_a_type_when_the_isolatedModules_flag_is_provided_requires_using_export_type.code, newFileContent: "export type { A, B } from './a';" }); diff --git a/tests/cases/fourslash/codeFixConvertToTypeOnlyExport2.ts b/tests/cases/fourslash/codeFixConvertToTypeOnlyExport2.ts index 10de257009fb4..16733b082ab04 100644 --- a/tests/cases/fourslash/codeFixConvertToTypeOnlyExport2.ts +++ b/tests/cases/fourslash/codeFixConvertToTypeOnlyExport2.ts @@ -14,7 +14,7 @@ goTo.file("/b.ts"); verify.codeFix({ index: 0, description: ts.Diagnostics.Convert_to_type_only_export.message, - errorCode: ts.Diagnostics.Re_exporting_a_type_when_the_isolatedModules_flag_is_provided_requires_using_an_explicit_type_only_export.code, + errorCode: ts.Diagnostics.Re_exporting_a_type_when_the_isolatedModules_flag_is_provided_requires_using_export_type.code, newFileContent: `export { B } from './a'; export type { A, C } from './a'; From 73cd8abcefafe192c73bfa20812265b27e871de8 Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Mon, 25 Nov 2019 15:19:57 -0800 Subject: [PATCH 36/47] Auto-import as type-only --- src/compiler/emitter.ts | 4 ++ src/services/codefixes/importFixes.ts | 58 ++++++++++++++----- src/services/utilities.ts | 4 +- .../codeFixInferFromUsageContextualImport2.ts | 2 +- .../completionsImport_exportEquals.ts | 14 ++--- .../importNameCodeFixNewImportFile3.ts | 2 +- .../importNameCodeFixNewImportFile4.ts | 2 +- .../importNameCodeFixNewImportTypeOnly.ts | 14 +++++ .../importNameCodeFix_exportEquals.ts | 4 +- 9 files changed, 75 insertions(+), 29 deletions(-) create mode 100644 tests/cases/fourslash/importNameCodeFixNewImportTypeOnly.ts diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index 602a5032be9cd..c27c0b59d42e7 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -3034,6 +3034,10 @@ namespace ts { } function emitImportClause(node: ImportClause) { + if (node.isTypeOnly) { + emitTokenWithComment(SyntaxKind.TypeKeyword, node.pos, writeKeyword, node); + writeSpace(); + } emit(node.name); if (node.name && node.namedBindings) { emitTokenWithComment(SyntaxKind.CommaToken, node.name.end, writePunctuation, node); diff --git a/src/services/codefixes/importFixes.ts b/src/services/codefixes/importFixes.ts index a43aa7f6f9d3c..399da303b1366 100644 --- a/src/services/codefixes/importFixes.ts +++ b/src/services/codefixes/importFixes.ts @@ -30,8 +30,7 @@ namespace ts.codefix { const importType: FixUseImportType[] = []; // Keys are import clause node IDs. const addToExisting = createMap<{ readonly importClause: ImportClause, defaultImport: string | undefined; readonly namedImports: string[] }>(); - // Keys are module specifiers. - const newImports = createMap>(); + const newImports = createNewImportMap(); eachDiagnostic(context, errorCodes, diag => { const info = getFixesInfo(context, diag.code, diag.start); @@ -63,10 +62,10 @@ namespace ts.codefix { break; } case ImportFixKind.AddNew: { - const { moduleSpecifier, importKind } = fix; - let entry = newImports.get(moduleSpecifier); + const { moduleSpecifier, importKind, typeOnly } = fix; + let entry = newImports.get(moduleSpecifier, typeOnly); if (!entry) { - newImports.set(moduleSpecifier, entry = { defaultImport: undefined, namedImports: [], namespaceLikeImport: undefined }); + newImports.set(moduleSpecifier, typeOnly, entry = { defaultImport: undefined, namedImports: [], namespaceLikeImport: undefined }); } switch (importKind) { case ImportKind.Default: @@ -100,13 +99,38 @@ namespace ts.codefix { addToExisting.forEach(({ importClause, defaultImport, namedImports }) => { doAddExistingFix(changes, sourceFile, importClause, defaultImport, namedImports); }); - newImports.forEach((imports, moduleSpecifier) => { - addNewImports(changes, sourceFile, moduleSpecifier, quotePreference, imports); + newImports.forEach((imports, moduleSpecifier, typeOnly) => { + addNewImports(changes, sourceFile, typeOnly, moduleSpecifier, quotePreference, imports); }); })); }, }); + function createNewImportMap() { + // Keys are module specifiers. + const newImports = createMap>(); + return { + get: (moduleSpecifier: string, typeOnly: boolean) => { + return newImports.get(key(moduleSpecifier, typeOnly)); + }, + set: (moduleSpecifier: string, typeOnly: boolean, value: ImportsCollection) => { + return newImports.set(key(moduleSpecifier, typeOnly), value); + }, + forEach: (action: (value: ImportsCollection, moduleSpecifier: string, typeOnly: boolean) => void) => { + newImports.forEach((value, key) => { + const typeOnly = !!+key[0]; + const moduleSpecifier = key.slice(1); + action(value, moduleSpecifier, typeOnly); + }); + }, + }; + + function key(moduleSpecifier: string, typeOnly: boolean) { + const prefix = typeOnly ? "1" : "0"; + return prefix + moduleSpecifier; + } + } + // Sorted with the preferred fix coming first. const enum ImportFixKind { UseNamespace, ImportType, AddToExisting, AddNew } type ImportFix = FixUseNamespaceImport | FixUseImportType | FixAddToExistingImport | FixAddNewImport; @@ -129,6 +153,7 @@ namespace ts.codefix { readonly kind: ImportFixKind.AddNew; readonly moduleSpecifier: string; readonly importKind: ImportKind; + readonly typeOnly: boolean; } const enum ImportKind { @@ -151,6 +176,7 @@ namespace ts.codefix { interface FixAddToExistingImportInfo { readonly declaration: AnyImportSyntax; readonly importKind: ImportKind; + readonly exportedSymbolIsTypeOnly: boolean; } export function getImportCompletionAction( @@ -271,7 +297,7 @@ namespace ts.codefix { return exportedSymbolIsTypeOnly && isSourceFileJS(sourceFile) ? emptyArray : mapDefined(sourceFile.imports, moduleSpecifier => { const i = importFromModuleSpecifier(moduleSpecifier); return (i.kind === SyntaxKind.ImportDeclaration || i.kind === SyntaxKind.ImportEqualsDeclaration) - && checker.getSymbolAtLocation(moduleSpecifier) === moduleSymbol ? { declaration: i, importKind } : undefined; + && checker.getSymbolAtLocation(moduleSpecifier) === moduleSymbol ? { declaration: i, importKind, exportedSymbolIsTypeOnly } : undefined; }); } @@ -291,7 +317,7 @@ namespace ts.codefix { // `position` should only be undefined at a missing jsx namespace, in which case we shouldn't be looking for pure types. exportedSymbolIsTypeOnly && isJs ? { kind: ImportFixKind.ImportType, moduleSpecifier, position: Debug.assertDefined(position, "position should be defined") } - : { kind: ImportFixKind.AddNew, moduleSpecifier, importKind })); + : { kind: ImportFixKind.AddNew, moduleSpecifier, importKind, typeOnly: exportedSymbolIsTypeOnly })); // Sort by presence in package.json, then shortest paths first return sort(choicesForEachExportingModule, (a, b) => { @@ -320,13 +346,15 @@ namespace ts.codefix { return existingDeclaration ? [existingDeclaration] : getNewImportInfos(program, sourceFile, position, exportInfos, host, preferences); } - function newImportInfoFromExistingSpecifier({ declaration, importKind }: FixAddToExistingImportInfo): FixAddNewImport | undefined { + function newImportInfoFromExistingSpecifier({ declaration, importKind, exportedSymbolIsTypeOnly }: FixAddToExistingImportInfo): FixAddNewImport | undefined { const expression = declaration.kind === SyntaxKind.ImportDeclaration ? declaration.moduleSpecifier : declaration.moduleReference.kind === SyntaxKind.ExternalModuleReference ? declaration.moduleReference.expression : undefined; - return expression && isStringLiteral(expression) ? { kind: ImportFixKind.AddNew, moduleSpecifier: expression.text, importKind } : undefined; + return expression && isStringLiteral(expression) + ? { kind: ImportFixKind.AddNew, moduleSpecifier: expression.text, importKind, typeOnly: exportedSymbolIsTypeOnly } + : undefined; } interface FixesInfo { readonly fixes: readonly ImportFix[]; readonly symbolName: string; } @@ -531,7 +559,7 @@ namespace ts.codefix { } case ImportFixKind.AddNew: { const { importKind, moduleSpecifier } = fix; - addNewImports(changes, sourceFile, moduleSpecifier, quotePreference, importKind === ImportKind.Default ? { defaultImport: symbolName, namedImports: emptyArray, namespaceLikeImport: undefined } + addNewImports(changes, sourceFile, fix.typeOnly, moduleSpecifier, quotePreference, importKind === ImportKind.Default ? { defaultImport: symbolName, namedImports: emptyArray, namespaceLikeImport: undefined } : importKind === ImportKind.Named ? { defaultImport: undefined, namedImports: [symbolName], namespaceLikeImport: undefined } : { defaultImport: undefined, namedImports: emptyArray, namespaceLikeImport: { importKind, name: symbolName } }); return [importKind === ImportKind.Default ? Diagnostics.Import_default_0_from_module_1 : Diagnostics.Import_0_from_module_1, symbolName, moduleSpecifier]; @@ -589,13 +617,13 @@ namespace ts.codefix { readonly name: string; } | undefined; } - function addNewImports(changes: textChanges.ChangeTracker, sourceFile: SourceFile, moduleSpecifier: string, quotePreference: QuotePreference, { defaultImport, namedImports, namespaceLikeImport }: ImportsCollection): void { + function addNewImports(changes: textChanges.ChangeTracker, sourceFile: SourceFile, typeOnly: boolean, moduleSpecifier: string, quotePreference: QuotePreference, { defaultImport, namedImports, namespaceLikeImport }: ImportsCollection): void { const quotedModuleSpecifier = makeStringLiteral(moduleSpecifier, quotePreference); if (defaultImport !== undefined || namedImports.length) { insertImport(changes, sourceFile, makeImport( defaultImport === undefined ? undefined : createIdentifier(defaultImport), - namedImports.map(n => createImportSpecifier(/*propertyName*/ undefined, createIdentifier(n))), moduleSpecifier, quotePreference)); + namedImports.map(n => createImportSpecifier(/*propertyName*/ undefined, createIdentifier(n))), moduleSpecifier, quotePreference, typeOnly)); } if (namespaceLikeImport) { insertImport( @@ -603,7 +631,7 @@ namespace ts.codefix { sourceFile, namespaceLikeImport.importKind === ImportKind.Equals ? createImportEqualsDeclaration(/*decorators*/ undefined, /*modifiers*/ undefined, createIdentifier(namespaceLikeImport.name), createExternalModuleReference(quotedModuleSpecifier)) : namespaceLikeImport.importKind === ImportKind.ConstEquals ? createConstEqualsRequireDeclaration(namespaceLikeImport.name, quotedModuleSpecifier) : - createImportDeclaration(/*decorators*/ undefined, /*modifiers*/ undefined, createImportClause(/*name*/ undefined, createNamespaceImport(createIdentifier(namespaceLikeImport.name))), quotedModuleSpecifier)); + createImportDeclaration(/*decorators*/ undefined, /*modifiers*/ undefined, createImportClause(/*name*/ undefined, createNamespaceImport(createIdentifier(namespaceLikeImport.name)), typeOnly), quotedModuleSpecifier)); } } diff --git a/src/services/utilities.ts b/src/services/utilities.ts index ca88a5e0ce0ac..3e16defd179ce 100644 --- a/src/services/utilities.ts +++ b/src/services/utilities.ts @@ -1321,12 +1321,12 @@ namespace ts { return defaultImport || namedImports && namedImports.length ? makeImport(defaultImport, namedImports, moduleSpecifier, quotePreference) : undefined; } - export function makeImport(defaultImport: Identifier | undefined, namedImports: readonly ImportSpecifier[] | undefined, moduleSpecifier: string | Expression, quotePreference: QuotePreference): ImportDeclaration { + export function makeImport(defaultImport: Identifier | undefined, namedImports: readonly ImportSpecifier[] | undefined, moduleSpecifier: string | Expression, quotePreference: QuotePreference, isTypeOnly?: boolean): ImportDeclaration { return createImportDeclaration( /*decorators*/ undefined, /*modifiers*/ undefined, defaultImport || namedImports - ? createImportClause(defaultImport, namedImports && namedImports.length ? createNamedImports(namedImports) : undefined) + ? createImportClause(defaultImport, namedImports && namedImports.length ? createNamedImports(namedImports) : undefined, isTypeOnly) : undefined, typeof moduleSpecifier === "string" ? makeStringLiteral(moduleSpecifier, quotePreference) : moduleSpecifier); } diff --git a/tests/cases/fourslash/codeFixInferFromUsageContextualImport2.ts b/tests/cases/fourslash/codeFixInferFromUsageContextualImport2.ts index f12f9dc9e80ed..8b88015bcfd50 100644 --- a/tests/cases/fourslash/codeFixInferFromUsageContextualImport2.ts +++ b/tests/cases/fourslash/codeFixInferFromUsageContextualImport2.ts @@ -20,7 +20,7 @@ goTo.file("/b.ts"); verify.codeFix({ description: "Infer parameter types from usage", newFileContent: -`import { User } from "./a"; +`import type { User } from "./a"; export function f(user: User) { getEmail(user); diff --git a/tests/cases/fourslash/completionsImport_exportEquals.ts b/tests/cases/fourslash/completionsImport_exportEquals.ts index 1ea3e7e637ea8..4a5d5fdd16d4d 100644 --- a/tests/cases/fourslash/completionsImport_exportEquals.ts +++ b/tests/cases/fourslash/completionsImport_exportEquals.ts @@ -17,7 +17,7 @@ const preferences: FourSlashInterface.UserPreferences = { includeCompletionsForM verify.completions( { marker: "0", - includes: { + includes: { name: "a", source: "/a", hasAction: true, @@ -28,10 +28,10 @@ verify.completions( { marker: "1", includes: { - name: "b", - source: "/a", - hasAction: true, - sortText: completion.SortText.AutoImportSuggestions + name: "b", + source: "/a", + hasAction: true, + sortText: completion.SortText.AutoImportSuggestions }, preferences, } @@ -43,7 +43,7 @@ verify.applyCodeActionFromCompletion("1", { source: "/a", description: `Import 'b' from module "./a"`, newFileContent: -`import { b } from "./a"; +`import type { b } from "./a"; a; let x: b;`, @@ -54,7 +54,7 @@ verify.applyCodeActionFromCompletion("0", { source: "/a", description: `Import 'a' from module "./a"`, newFileContent: -`import { b } from "./a"; +`import type { b } from "./a"; import a = require("./a"); a; diff --git a/tests/cases/fourslash/importNameCodeFixNewImportFile3.ts b/tests/cases/fourslash/importNameCodeFixNewImportFile3.ts index af7901e03e61c..30467e7654965 100644 --- a/tests/cases/fourslash/importNameCodeFixNewImportFile3.ts +++ b/tests/cases/fourslash/importNameCodeFixNewImportFile3.ts @@ -9,7 +9,7 @@ //// } verify.importFixAtPosition([ -`import { XXX } from "./module"; +`import type { XXX } from "./module"; let t: XXX.I;` ]); \ No newline at end of file diff --git a/tests/cases/fourslash/importNameCodeFixNewImportFile4.ts b/tests/cases/fourslash/importNameCodeFixNewImportFile4.ts index 62cf48c4977b9..4d59eb28e5216 100644 --- a/tests/cases/fourslash/importNameCodeFixNewImportFile4.ts +++ b/tests/cases/fourslash/importNameCodeFixNewImportFile4.ts @@ -10,7 +10,7 @@ //// } verify.importFixAtPosition([ -`import { A } from "./module"; +`import type { A } from "./module"; let t: A.B.I;` ]); \ No newline at end of file diff --git a/tests/cases/fourslash/importNameCodeFixNewImportTypeOnly.ts b/tests/cases/fourslash/importNameCodeFixNewImportTypeOnly.ts new file mode 100644 index 0000000000000..3b2b61bf7a597 --- /dev/null +++ b/tests/cases/fourslash/importNameCodeFixNewImportTypeOnly.ts @@ -0,0 +1,14 @@ +/// + +// @target: esnext + +// @Filename: /a.ts +////export interface Car {} + +// @Filename: /b.ts +////function drive(car: /**/Car) {} + +goTo.file("/b.ts"); +verify.importFixAtPosition([`import type { Car } from "./a"; + +function drive(car: Car) {}`]); diff --git a/tests/cases/fourslash/importNameCodeFix_exportEquals.ts b/tests/cases/fourslash/importNameCodeFix_exportEquals.ts index 4ab87df7e7618..5dd9b9f100e7c 100644 --- a/tests/cases/fourslash/importNameCodeFix_exportEquals.ts +++ b/tests/cases/fourslash/importNameCodeFix_exportEquals.ts @@ -16,9 +16,9 @@ verify.codeFixAll({ fixId: "fixMissingImport", fixAllDescription: "Add all missing imports", newFileContent: -`import { b } from "./a"; +`import a = require("./a"); -import a = require("./a"); +import type { b } from "./a"; a; let x: b;`, From f846ff146bbbd91dd6e02ac0b1e8659c154213f9 Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Mon, 25 Nov 2019 16:25:29 -0800 Subject: [PATCH 37/47] Add codefix for splitting type-only import with default and named bindings --- src/compiler/diagnosticMessages.json | 6 ++- src/compiler/factory.ts | 2 +- src/services/codefixes/splitTypeOnlyImport.ts | 43 +++++++++++++++++++ src/services/tsconfig.json | 1 + .../fourslash/codeFixSplitTypeOnlyImport.ts | 39 +++++++++++++++++ 5 files changed, 89 insertions(+), 2 deletions(-) create mode 100644 src/services/codefixes/splitTypeOnlyImport.ts create mode 100644 tests/cases/fourslash/codeFixSplitTypeOnlyImport.ts diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index 5be05ba81c547..8de021af1408f 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -1075,9 +1075,13 @@ "category": "Message", "code": 1366 }, + "Split all invalid type-only imports": { + "category": "Message", + "code": 1377 + }, "Do not emit imports that are unused or used only for types": { "category": "Message", - "code": 1367 + "code": 1368 }, "The types of '{0}' are incompatible between these types.": { diff --git a/src/compiler/factory.ts b/src/compiler/factory.ts index 748ec0b750b1d..e34c999341d1d 100644 --- a/src/compiler/factory.ts +++ b/src/compiler/factory.ts @@ -2270,7 +2270,7 @@ namespace ts { return node.name !== name || node.namedBindings !== namedBindings || node.isTypeOnly !== isTypeOnly - ? updateNode(createImportClause(name, namedBindings), node) + ? updateNode(createImportClause(name, namedBindings, isTypeOnly), node) : node; } diff --git a/src/services/codefixes/splitTypeOnlyImport.ts b/src/services/codefixes/splitTypeOnlyImport.ts new file mode 100644 index 0000000000000..fad43216b55b3 --- /dev/null +++ b/src/services/codefixes/splitTypeOnlyImport.ts @@ -0,0 +1,43 @@ +/* @internal */ +namespace ts.codefix { + const errorCodes = [Diagnostics.Type_only_import_can_specify_a_default_import_or_named_bindings_but_not_both.code]; + const fixId = "splitTypeOnlyImport"; + registerCodeFix({ + errorCodes, + fixIds: [fixId], + getCodeActions: context => { + const changes = textChanges.ChangeTracker.with(context, t => { + return splitTypeOnlyImport(t, getImportDeclaration(context.sourceFile, context.span), context); + }); + if (changes.length) { + return [createCodeFixAction(fixId, changes, Diagnostics.Split_into_two_separate_import_declarations, fixId, Diagnostics.Split_all_invalid_type_only_imports)]; + } + }, + getAllCodeActions: context => codeFixAll(context, errorCodes, (changes, error) => { + splitTypeOnlyImport(changes, getImportDeclaration(context.sourceFile, error), context); + }), + }); + + function getImportDeclaration(sourceFile: SourceFile, span: TextSpan) { + return findAncestor(getTokenAtPosition(sourceFile, span.start), isImportDeclaration); + } + + function splitTypeOnlyImport(changes: textChanges.ChangeTracker, importDeclaration: ImportDeclaration | undefined, context: CodeFixContextBase) { + if (!importDeclaration) { + return; + } + const importClause = Debug.assertDefined(importDeclaration.importClause); + changes.replaceNode(context.sourceFile, importDeclaration, updateImportDeclaration( + importDeclaration, + importDeclaration.decorators, + importDeclaration.modifiers, + updateImportClause(importClause, importClause.name, /*namedBindings*/ undefined, importClause.isTypeOnly), + importDeclaration.moduleSpecifier)); + + changes.insertNodeAfter(context.sourceFile, importDeclaration, createImportDeclaration( + /*decorators*/ undefined, + /*modifiers*/ undefined, + updateImportClause(importClause, /*name*/ undefined, importClause.namedBindings, importClause.isTypeOnly), + importDeclaration.moduleSpecifier)); + } +} diff --git a/src/services/tsconfig.json b/src/services/tsconfig.json index 42157d1ed1375..6df7ec127d26a 100644 --- a/src/services/tsconfig.json +++ b/src/services/tsconfig.json @@ -86,6 +86,7 @@ "codefixes/fixAddModuleReferTypeMissingTypeof.ts", "codefixes/convertToMappedObjectType.ts", "codefixes/removeUnnecessaryAwait.ts", + "codefixes/splitTypeOnlyImport.ts", "codefixes/convertConstToLet.ts", "refactors/convertExport.ts", "refactors/convertImport.ts", diff --git a/tests/cases/fourslash/codeFixSplitTypeOnlyImport.ts b/tests/cases/fourslash/codeFixSplitTypeOnlyImport.ts new file mode 100644 index 0000000000000..9ce49e23c6a48 --- /dev/null +++ b/tests/cases/fourslash/codeFixSplitTypeOnlyImport.ts @@ -0,0 +1,39 @@ +/// + +// @Filename: /a.ts +////export type B = {}; +////export type C = {}; +////export default interface A {} + +// @Filename: /b.ts +////export type E = {}; +////export type F = {}; +////export default class D {} + +// @Filename: /c.ts +////import type A, { B, C } from './a'; +////import type D, * as types from './b'; + +goTo.file("/c.ts"); + +verify.codeFix({ + errorCode: ts.Diagnostics.Type_only_import_can_specify_a_default_import_or_named_bindings_but_not_both.code, + description: ts.Diagnostics.Split_into_two_separate_import_declarations.message, + applyChanges: false, + index: 0, + newFileContent: +`import type A from './a'; +import type { B, C } from './a'; +import type D, * as types from './b';` +}); + +verify.codeFixAll({ + fixId: "splitTypeOnlyImport", + fixAllDescription: ts.Diagnostics.Split_all_invalid_type_only_imports.message, + newFileContent: +`import type A from './a'; +import type { B, C } from './a'; +import type D from './b'; +import type * as types from './b'; +` +}); From b64effaac4d112b2cb68a40135a6cfaecad71194 Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Tue, 26 Nov 2019 08:54:40 -0800 Subject: [PATCH 38/47] Add more services tests --- src/harness/fourslash.ts | 10 +++++++- .../fourslash/completionsTypeOnlyNamespace.ts | 23 +++++++++++++++++++ .../fourslash/goToDefinitionTypeOnlyImport.ts | 15 ++++++++++++ .../quickInfoTypeOnlyNamespaceAndClass.ts | 13 +++++++++++ 4 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 tests/cases/fourslash/completionsTypeOnlyNamespace.ts create mode 100644 tests/cases/fourslash/goToDefinitionTypeOnlyImport.ts create mode 100644 tests/cases/fourslash/quickInfoTypeOnlyNamespaceAndClass.ts diff --git a/src/harness/fourslash.ts b/src/harness/fourslash.ts index 68a0387f37692..9d1e16b838382 100644 --- a/src/harness/fourslash.ts +++ b/src/harness/fourslash.ts @@ -730,7 +730,15 @@ namespace FourSlash { } if (!range) { - this.raiseError(`goToDefinitionsAndBoundSpan failed - found a TextSpan ${JSON.stringify(defs.textSpan)} when it wasn't expected.`); + const marker = this.getMarkerByName(startMarkerName); + const startFile = marker.fileName; + const fileContent = this.getFileContent(startFile); + const spanContent = fileContent.slice(defs.textSpan.start, ts.textSpanEnd(defs.textSpan)); + const spanContentWithMarker = spanContent.slice(0, marker.position - defs.textSpan.start) + `/*${startMarkerName}*/` + spanContent.slice(marker.position - defs.textSpan.start); + const suggestedFileContent = (fileContent.slice(0, defs.textSpan.start) + `\x1b[1;4m[|${spanContentWithMarker}|]\x1b[31m` + fileContent.slice(ts.textSpanEnd(defs.textSpan))) + .split(/\r?\n/).map(line => " ".repeat(6) + line).join(ts.sys.newLine); + this.raiseError(`goToDefinitionsAndBoundSpan failed. Found a starting TextSpan around '${spanContent}' in '${startFile}' (at position ${defs.textSpan.start}). ` + + `If this is the correct input span, put a fourslash range around it: \n\n${suggestedFileContent}\n`); } else if (defs.textSpan.start !== range.pos || defs.textSpan.length !== range.end - range.pos) { const expected: ts.TextSpan = { diff --git a/tests/cases/fourslash/completionsTypeOnlyNamespace.ts b/tests/cases/fourslash/completionsTypeOnlyNamespace.ts new file mode 100644 index 0000000000000..429353886f016 --- /dev/null +++ b/tests/cases/fourslash/completionsTypeOnlyNamespace.ts @@ -0,0 +1,23 @@ +/// + +// @Filename: /a.ts +////export namespace ns { +//// export class Box {} +//// export type Type = {}; +//// export const Value = {}; +////} + +// @Filename: /b.ts +////import type { ns } from './a'; +////let x: ns./**/ + +verify.completions({ + marker: "", + exact: [{ + name: "Box", + text: "class ns.Box", + }, { + name: "Type", + text: "type ns.Type = {}" + }] +}); diff --git a/tests/cases/fourslash/goToDefinitionTypeOnlyImport.ts b/tests/cases/fourslash/goToDefinitionTypeOnlyImport.ts new file mode 100644 index 0000000000000..f7a9da33d9b67 --- /dev/null +++ b/tests/cases/fourslash/goToDefinitionTypeOnlyImport.ts @@ -0,0 +1,15 @@ +/// + +// @Filename: /a.ts +////enum /*1*/SyntaxKind { SourceFile } +////export type { SyntaxKind } + +// @Filename: /b.ts +//// export type { SyntaxKind } from './a'; + +// @Filename: /c.ts +////import type { SyntaxKind } from './b'; +////let kind: [|/*2*/SyntaxKind|]; + + +verify.goToDefinition("2", "1"); diff --git a/tests/cases/fourslash/quickInfoTypeOnlyNamespaceAndClass.ts b/tests/cases/fourslash/quickInfoTypeOnlyNamespaceAndClass.ts new file mode 100644 index 0000000000000..900306fcc24d2 --- /dev/null +++ b/tests/cases/fourslash/quickInfoTypeOnlyNamespaceAndClass.ts @@ -0,0 +1,13 @@ +/// + +// @Filename: /a.ts +////export namespace ns { +//// export class Box {} +////} + +// @Filename: /b.ts +////import type { ns } from './a'; +////let x: /*1*/ns./*2*/Box; + +verify.quickInfoAt("1", "(alias) namespace ns\nimport ns"); +verify.quickInfoAt("2", "class ns.Box"); From 010273aa2e1f18163e1297c949d582804e692874 Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Tue, 26 Nov 2019 09:49:32 -0800 Subject: [PATCH 39/47] Add targeted error message for "export type T;" when T exists --- src/compiler/binder.ts | 9 ++- src/compiler/diagnosticMessages.json | 4 ++ src/compiler/utilities.ts | 3 + ...exportDeclaration_missingBraces.errors.txt | 57 +++++++++++++++++++ .../exportDeclaration_missingBraces.ts | 20 +++++++ 5 files changed, 91 insertions(+), 2 deletions(-) create mode 100644 tests/baselines/reference/exportDeclaration_missingBraces.errors.txt create mode 100644 tests/cases/conformance/externalModules/typeOnly/exportDeclaration_missingBraces.ts diff --git a/src/compiler/binder.ts b/src/compiler/binder.ts index e09fa73e3c234..8abe01cd27d40 100644 --- a/src/compiler/binder.ts +++ b/src/compiler/binder.ts @@ -506,8 +506,13 @@ namespace ts { } } - const declarationName = getNameOfDeclaration(node) || node; const relatedInformation: DiagnosticRelatedInformation[] = []; + if (isTypeAliasDeclaration(node) && nodeIsMissing(node.type) && hasModifier(node, ModifierFlags.Export) && symbol.flags & (SymbolFlags.Alias | SymbolFlags.Type | SymbolFlags.Namespace)) { + // export type T; - may have meant export type { T }? + relatedInformation.push(createDiagnosticForNode(node, Diagnostics.Did_you_mean_0, `export type { ${unescapeLeadingUnderscores(node.name.escapedText)} }`)); + } + + const declarationName = getNameOfDeclaration(node) || node; forEach(symbol.declarations, (declaration, index) => { const decl = getNameOfDeclaration(declaration) || declaration; const diag = createDiagnosticForNode(decl, message, messageNeedsName ? getDisplayName(declaration) : undefined); @@ -520,7 +525,7 @@ namespace ts { }); const diag = createDiagnosticForNode(declarationName, message, messageNeedsName ? getDisplayName(node) : undefined); - file.bindDiagnostics.push(multipleDefaultExports ? addRelatedInfo(diag, ...relatedInformation) : diag); + file.bindDiagnostics.push(addRelatedInfo(diag, ...relatedInformation)); symbol = createSymbol(SymbolFlags.None, name); } diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index 8de021af1408f..873952b068bbb 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -1083,6 +1083,10 @@ "category": "Message", "code": 1368 }, + "Did you mean '{0}'?": { + "category": "Message", + "code": 1369 + }, "The types of '{0}' are incompatible between these types.": { "category": "Error", diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index a21fb0d4792f4..3006a7601c080 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -8332,6 +8332,9 @@ namespace ts { } export function addRelatedInfo(diagnostic: T, ...relatedInformation: DiagnosticRelatedInformation[]): T { + if (!relatedInformation.length) { + return diagnostic; + } if (!diagnostic.relatedInformation) { diagnostic.relatedInformation = []; } diff --git a/tests/baselines/reference/exportDeclaration_missingBraces.errors.txt b/tests/baselines/reference/exportDeclaration_missingBraces.errors.txt new file mode 100644 index 0000000000000..9e74a9eea8b78 --- /dev/null +++ b/tests/baselines/reference/exportDeclaration_missingBraces.errors.txt @@ -0,0 +1,57 @@ +tests/cases/conformance/externalModules/typeOnly/exportDeclaration_missingBraces.ts(1,6): error TS2567: Enum declarations can only merge with namespace or other enum declarations. +tests/cases/conformance/externalModules/typeOnly/exportDeclaration_missingBraces.ts(6,7): error TS2300: Duplicate identifier 'Box'. +tests/cases/conformance/externalModules/typeOnly/exportDeclaration_missingBraces.ts(8,11): error TS2300: Duplicate identifier 'Circle'. +tests/cases/conformance/externalModules/typeOnly/exportDeclaration_missingBraces.ts(11,16): error TS1005: '=' expected. +tests/cases/conformance/externalModules/typeOnly/exportDeclaration_missingBraces.ts(14,13): error TS2567: Enum declarations can only merge with namespace or other enum declarations. +tests/cases/conformance/externalModules/typeOnly/exportDeclaration_missingBraces.ts(14,20): error TS1005: '=' expected. +tests/cases/conformance/externalModules/typeOnly/exportDeclaration_missingBraces.ts(15,13): error TS2300: Duplicate identifier 'Box'. +tests/cases/conformance/externalModules/typeOnly/exportDeclaration_missingBraces.ts(15,16): error TS1005: '=' expected. +tests/cases/conformance/externalModules/typeOnly/exportDeclaration_missingBraces.ts(16,13): error TS2300: Duplicate identifier 'Circle'. +tests/cases/conformance/externalModules/typeOnly/exportDeclaration_missingBraces.ts(16,19): error TS1005: '=' expected. +tests/cases/conformance/externalModules/typeOnly/exportDeclaration_missingBraces.ts(17,15): error TS1005: '=' expected. + + +==== tests/cases/conformance/externalModules/typeOnly/exportDeclaration_missingBraces.ts (11 errors) ==== + enum Numbers { + ~~~~~~~ +!!! error TS2567: Enum declarations can only merge with namespace or other enum declarations. + One, + Two + } + + class Box {} + ~~~ +!!! error TS2300: Duplicate identifier 'Box'. + + interface Circle {} + ~~~~~~ +!!! error TS2300: Duplicate identifier 'Circle'. + + namespace ns { + export type T; // Normal parse error because there is no other 'T' + ~ +!!! error TS1005: '=' expected. + } + + export type Numbers; + ~~~~~~~ +!!! error TS2567: Enum declarations can only merge with namespace or other enum declarations. +!!! related TS1369 tests/cases/conformance/externalModules/typeOnly/exportDeclaration_missingBraces.ts:14:13: Did you mean 'export type { Numbers }'? + ~ +!!! error TS1005: '=' expected. + export type Box; + ~~~ +!!! error TS2300: Duplicate identifier 'Box'. +!!! related TS1369 tests/cases/conformance/externalModules/typeOnly/exportDeclaration_missingBraces.ts:15:13: Did you mean 'export type { Box }'? + ~ +!!! error TS1005: '=' expected. + export type Circle; + ~~~~~~ +!!! error TS2300: Duplicate identifier 'Circle'. +!!! related TS1369 tests/cases/conformance/externalModules/typeOnly/exportDeclaration_missingBraces.ts:16:13: Did you mean 'export type { Circle }'? + ~ +!!! error TS1005: '=' expected. + export type ns; + ~ +!!! error TS1005: '=' expected. + \ No newline at end of file diff --git a/tests/cases/conformance/externalModules/typeOnly/exportDeclaration_missingBraces.ts b/tests/cases/conformance/externalModules/typeOnly/exportDeclaration_missingBraces.ts new file mode 100644 index 0000000000000..e46cd4a69812f --- /dev/null +++ b/tests/cases/conformance/externalModules/typeOnly/exportDeclaration_missingBraces.ts @@ -0,0 +1,20 @@ +// @noEmit: true +// @noTypesAndSymbols: true + +enum Numbers { + One, + Two +} + +class Box {} + +interface Circle {} + +namespace ns { + export type T; // Normal parse error because there is no other 'T' +} + +export type Numbers; +export type Box; +export type Circle; +export type ns; From 4992945c2012bea51939034464c39c64aa1e7a25 Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Tue, 26 Nov 2019 13:54:47 -0800 Subject: [PATCH 40/47] Add targeted error for "import type T = require(...)" --- src/compiler/core.ts | 6 +-- src/compiler/diagnosticMessages.json | 4 ++ src/compiler/parser.ts | 53 +++++++++++-------- .../importEqualsDeclarationError.errors.txt | 17 ++++++ .../typeOnly/importEqualsDeclarationError.ts | 14 +++++ 5 files changed, 68 insertions(+), 26 deletions(-) create mode 100644 tests/baselines/reference/importEqualsDeclarationError.errors.txt create mode 100644 tests/cases/conformance/externalModules/typeOnly/importEqualsDeclarationError.ts diff --git a/src/compiler/core.ts b/src/compiler/core.ts index fe2cdca19fce4..39881001f7fc4 100644 --- a/src/compiler/core.ts +++ b/src/compiler/core.ts @@ -1996,10 +1996,10 @@ namespace ts { return (arg: T) => f(arg) && g(arg); } - export function or(...fs: ((arg: T) => boolean)[]): (arg: T) => boolean { - return arg => { + export function or(...fs: ((...args: T) => boolean)[]): (...args: T) => boolean { + return (...args) => { for (const f of fs) { - if (f(arg)) { + if (f(...args)) { return true; } } diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index 873952b068bbb..91b769af01a8b 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -1087,6 +1087,10 @@ "category": "Message", "code": 1369 }, + "Only ES2015 imports may use 'import type'.": { + "category": "Error", + "code": 1370 + }, "The types of '{0}' are incompatible between these types.": { "category": "Error", diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index 9f1fad90d641f..67dc01fe33fc9 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -6322,11 +6322,21 @@ namespace ts { const afterImportPos = scanner.getStartPos(); let identifier: Identifier | undefined; - if (isIdentifier() && (token() !== SyntaxKind.TypeKeyword || lookAhead(nextTokenAfterImportedIdentifierProducesImportDeclaration))) { + if (isIdentifier()) { identifier = parseIdentifier(); - if (!tokenAfterImportedIdentifierProducesImportDeclaration()) { - return parseImportEqualsDeclaration(node, identifier); - } + } + + let isTypeOnly = false; + if (token() !== SyntaxKind.FromKeyword && + identifier?.escapedText === "type" && + (isIdentifier() || tokenAfterImportDefinitelyProducesImportDeclaration()) + ) { + isTypeOnly = true; + identifier = isIdentifier() ? parseIdentifier() : undefined; + } + + if (identifier && !tokenAfterImportedIdentifierDefinitelyProducesImportDeclaration()) { + return parseImportEqualsDeclaration(node, identifier, isTypeOnly); } // Import statement @@ -6336,9 +6346,9 @@ namespace ts { // import ModuleSpecifier; if (identifier || // import id token() === SyntaxKind.AsteriskToken || // import * - token() === SyntaxKind.OpenBraceToken || // import { - token() === SyntaxKind.TypeKeyword) { // import type - (node).importClause = parseImportClause(identifier, afterImportPos); + token() === SyntaxKind.OpenBraceToken // import { + ) { + (node).importClause = parseImportClause(identifier, afterImportPos, isTypeOnly); parseExpected(SyntaxKind.FromKeyword); } @@ -6347,27 +6357,30 @@ namespace ts { return finishNode(node); } - function tokenAfterImportedIdentifierProducesImportDeclaration() { + function tokenAfterImportDefinitelyProducesImportDeclaration() { + return token() === SyntaxKind.AsteriskToken || token() === SyntaxKind.OpenBraceToken; + } + + function tokenAfterImportedIdentifierDefinitelyProducesImportDeclaration() { // In `import id ___`, the current token decides whether to produce // an ImportDeclaration or ImportEqualsDeclaration. return token() === SyntaxKind.CommaToken || token() === SyntaxKind.FromKeyword; } - function nextTokenAfterImportedIdentifierProducesImportDeclaration() { - nextToken(); - return tokenAfterImportedIdentifierProducesImportDeclaration(); - } - - function parseImportEqualsDeclaration(node: ImportEqualsDeclaration, identifier: Identifier): ImportEqualsDeclaration { + function parseImportEqualsDeclaration(node: ImportEqualsDeclaration, identifier: Identifier, isTypeOnly: boolean): ImportEqualsDeclaration { node.kind = SyntaxKind.ImportEqualsDeclaration; node.name = identifier; parseExpected(SyntaxKind.EqualsToken); node.moduleReference = parseModuleReference(); parseSemicolon(); - return finishNode(node); + const finished = finishNode(node); + if (isTypeOnly) { + parseErrorAtRange(finished, Diagnostics.Only_ES2015_imports_may_use_import_type); + } + return finished; } - function parseImportClause(identifier: Identifier | undefined, fullStart: number) { + function parseImportClause(identifier: Identifier | undefined, fullStart: number, isTypeOnly: boolean) { // ImportClause: // ImportedDefaultBinding // NameSpaceImport @@ -6376,13 +6389,7 @@ namespace ts { // ImportedDefaultBinding, NamedImports const importClause = createNode(SyntaxKind.ImportClause, fullStart); - if (token() === SyntaxKind.TypeKeyword) { - importClause.isTypeOnly = true; - nextToken(); - if (isIdentifier()) { - identifier = parseIdentifier(); - } - } + importClause.isTypeOnly = isTypeOnly; if (identifier) { // ImportedDefaultBinding: diff --git a/tests/baselines/reference/importEqualsDeclarationError.errors.txt b/tests/baselines/reference/importEqualsDeclarationError.errors.txt new file mode 100644 index 0000000000000..d0361ba285f85 --- /dev/null +++ b/tests/baselines/reference/importEqualsDeclarationError.errors.txt @@ -0,0 +1,17 @@ +/c.ts(1,1): error TS1370: Only ES2015 imports may use 'import type'. + + +==== /c.ts (1 errors) ==== + import type T = require('./a'); // Error + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS1370: Only ES2015 imports may use 'import type'. + import type = require('./b'); // Ok + +==== /a.ts (0 errors) ==== + type T = {}; + export = T; + +==== /b.ts (0 errors) ==== + class SomeClass {} + export = SomeClass; + \ No newline at end of file diff --git a/tests/cases/conformance/externalModules/typeOnly/importEqualsDeclarationError.ts b/tests/cases/conformance/externalModules/typeOnly/importEqualsDeclarationError.ts new file mode 100644 index 0000000000000..f3b40cd48dca0 --- /dev/null +++ b/tests/cases/conformance/externalModules/typeOnly/importEqualsDeclarationError.ts @@ -0,0 +1,14 @@ +// @noEmit: true +// @noTypesAndSymbols: true + +// @Filename: /a.ts +type T = {}; +export = T; + +// @Filename: /b.ts +class SomeClass {} +export = SomeClass; + +// @Filename: /c.ts +import type T = require('./a'); // Error +import type = require('./b'); // Ok From f7e889b4c3e8420731b79e547a18195fdc891033 Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Fri, 20 Dec 2019 15:07:12 -0600 Subject: [PATCH 41/47] Flip emit flag --- src/compiler/commandLineParser.ts | 4 ++-- src/compiler/diagnosticMessages.json | 2 +- src/compiler/transformers/ts.ts | 6 +++--- src/compiler/types.ts | 2 +- .../allowImportClausesToMergeWithTypes.js | 1 - ...ultImportsCanPaintCrossModuleDeclaration.js | 1 - .../ambientDeclarationsPatterns_merging1.js | 2 -- .../ambientDeclarationsPatterns_merging2.js | 2 -- .../ambientDeclarationsPatterns_merging3.js | 1 - .../reference/ambientShorthand_duplicate.js | 3 --- .../reference/ambientShorthand_merging.js | 3 --- .../reference/amdModuleConstEnumUsage.js | 2 +- .../reference/api/tsserverlibrary.d.ts | 2 +- tests/baselines/reference/api/typescript.d.ts | 2 +- .../asyncAwaitIsolatedModules_es2017.js | 1 - .../reference/asyncAwaitIsolatedModules_es6.js | 1 - .../reference/asyncImportedPromise_es6.js | 1 - .../reference/augmentExportEquals5.js | 4 ++-- .../reference/augmentExportEquals6_1.js | 2 +- tests/baselines/reference/bangInModuleName.js | 2 +- .../reference/cachedModuleResolution1.js | 2 -- .../reference/cachedModuleResolution2.js | 2 -- .../reference/cachedModuleResolution3.js | 2 -- .../reference/cachedModuleResolution4.js | 2 -- .../reference/cachedModuleResolution5.js | 2 -- .../reference/cachedModuleResolution6.js | 2 -- .../reference/cachedModuleResolution7.js | 2 -- .../reference/cachedModuleResolution8.js | 2 -- .../reference/cachedModuleResolution9.js | 2 -- ...FileSystemWithCapsImportTypeDeclarations.js | 3 --- tests/baselines/reference/chained.js | 2 -- .../reference/circularReferenceInImport.js | 1 - ...onstEnumNamespaceReferenceCausesNoImport.js | 1 - .../reference/constEnumNoEmitReexport.js | 6 ------ .../constEnumNoPreserveDeclarationReexport.js | 3 --- .../declarationEmitAliasExportStar.js | 1 - .../declarationEmitAliasFromIndirectFile.js | 1 - ...clarationEmitBundleWithAmbientReferences.js | 4 ++-- ...arationEmitExportAliasVisibiilityMarking.js | 1 - ...larationEmitForGlobalishSpecifierSymlink.js | 1 - ...arationEmitForGlobalishSpecifierSymlink2.js | 1 - .../declarationEmitInferredTypeAlias5.js | 1 - ...eclarationEmitQualifiedAliasTypeArgument.js | 1 - ...eclarationsForFileShadowingGlobalNoError.js | 2 -- ...eclarationsForIndirectTypeAliasReference.js | 1 - .../decoratedClassFromExternalModule.js | 1 - .../reference/duplicatePackage_globalMerge.js | 4 ---- ...licatePackage_packageIdIncludesSubModule.js | 2 -- .../duplicatePackage_referenceTypes.js | 1 - .../reference/duplicatePackage_subModule.js | 1 - .../reference/duplicatePackage_withErrors.js | 2 -- tests/baselines/reference/dynamicNames.js | 1 - .../reference/emptyDeclarationEmitIsModule.js | 2 -- tests/baselines/reference/enums.js | 1 - .../reference/errorWithSameNameType.js | 2 -- .../reference/es5ModuleInternalNamedImports.js | 2 +- .../reference/es6ExportAssignment2.js | 1 - .../reference/es6ExportAssignment3.js | 1 - .../reference/es6ExportAssignment4.js | 1 - .../reference/es6ExportEqualsInterop.js | 13 ------------- .../reference/es6ImportDefaultBinding.js | 1 - .../reference/es6ImportDefaultBindingAmd.js | 2 +- .../reference/es6ImportDefaultBindingDts.js | 1 - ...ortDefaultBindingFollowedWithNamedImport.js | 1 - ...DefaultBindingFollowedWithNamedImportDts.js | 1 - ...faultBindingFollowedWithNamedImportInEs5.js | 1 - ...BindingFollowedWithNamedImportWithExport.js | 2 +- .../reference/es6ImportDefaultBindingInEs5.js | 1 - .../es6ImportDefaultBindingMergeErrors.js | 3 --- ...es6ImportDefaultBindingNoDefaultProperty.js | 1 - .../es6ImportDefaultBindingWithExport.js | 2 +- .../reference/es6ImportEqualsDeclaration2.js | 1 - .../reference/es6ImportNameSpaceImport.js | 1 - .../reference/es6ImportNameSpaceImportAmd.js | 2 +- .../reference/es6ImportNameSpaceImportDts.js | 1 - .../reference/es6ImportNameSpaceImportInEs5.js | 1 - .../es6ImportNameSpaceImportMergeErrors.js | 4 ---- .../es6ImportNameSpaceImportNoNamedExports.js | 1 - .../es6ImportNameSpaceImportWithExport.js | 2 +- .../reference/es6ImportNamedImport.js | 5 ----- .../reference/es6ImportNamedImportAmd.js | 2 +- .../reference/es6ImportNamedImportDts.js | 4 ---- .../es6ImportNamedImportIdentifiersParsing.js | 5 ----- .../reference/es6ImportNamedImportInEs5.js | 5 ----- .../es6ImportNamedImportMergeErrors.js | 6 ------ .../es6ImportNamedImportNoExportMember.js | 2 -- .../es6ImportNamedImportNoNamedExports.js | 2 -- .../es6ImportNamedImportParsingError.js | 2 -- .../es6ImportNamedImportWithExport.js | 4 ---- ...rtAssignmentMembersVisibleInAugmentation.js | 2 -- ...WithoutAllowSyntheticDefaultImportsError.js | 1 - .../exportClassExtendingIntersection.js | 1 - tests/baselines/reference/exportDeclaration.js | 1 - .../exportDeclaration_moduleSpecifier.js | 1 - .../reference/exportDefaultInterface.js | 1 - .../reference/exportSpellingSuggestion.js | 1 - ...tsAndImportsWithContextualKeywordNames01.js | 3 --- ...tsAndImportsWithContextualKeywordNames02.js | 2 -- .../reference/extendsUntypedModule.js | 1 - .../reference/functionAndImportNameConflict.js | 1 - tests/baselines/reference/generic.js | 1 - .../importCallExpressionCheckReturntype1.js | 2 -- .../importCallExpressionDeclarationEmit3.js | 1 - .../importCallExpressionIncorrect1.js | 1 - .../importCallExpressionIncorrect2.js | 1 - .../importCallExpressionReturnPromiseOfAny.js | 1 - tests/baselines/reference/importDeclTypes.js | 1 - .../reference/importDefaultNamedType.js | 1 - .../importEmptyFromModuleNotExisted.js | 1 - .../importWithTrailingSlash_noResolve.js | 1 - tests/baselines/reference/inferenceLimit.js | 1 - .../reference/isolatedModulesReExportType.js | 2 -- .../jsDeclarationsFunctionLikeClasses.js | 1 - .../jsxFactoryNotIdentifierOrQualifiedName.js | 1 - .../jsxFactoryNotIdentifierOrQualifiedName2.js | 1 - .../reference/mergeWithImportedNamespace.js | 1 - .../reference/mergeWithImportedType.js | 1 - .../baselines/reference/mergedDeclarations7.js | 1 - .../reference/metadataOfClassFromAlias2.js | 1 - .../reference/metadataOfEventAlias.js | 1 - .../missingSemicolonInModuleSpecifier.js | 1 - ...ugmentationCollidingNamesInAugmentation1.js | 2 +- .../moduleAugmentationDeclarationEmit1.js | 1 - .../moduleAugmentationDisallowedExtensions.js | 1 - ...eAugmentationDuringSyntheticDefaultCheck.js | 1 - .../moduleAugmentationExtendAmbientModule1.js | 2 -- .../moduleAugmentationExtendFileModule1.js | 1 - .../reference/moduleAugmentationGlobal1.js | 1 - .../reference/moduleAugmentationGlobal2.js | 2 -- .../reference/moduleAugmentationGlobal3.js | 2 -- .../moduleAugmentationImportsAndExports1.js | 2 -- .../moduleAugmentationImportsAndExports2.js | 1 - .../moduleAugmentationImportsAndExports3.js | 1 - .../moduleAugmentationImportsAndExports4.js | 2 -- .../moduleAugmentationImportsAndExports5.js | 2 -- .../moduleAugmentationImportsAndExports6.js | 2 -- .../moduleAugmentationInAmbientModule1.js | 1 - .../moduleAugmentationInAmbientModule2.js | 1 - .../moduleAugmentationInAmbientModule3.js | 1 - .../moduleAugmentationInAmbientModule4.js | 1 - .../reference/moduleAugmentationNoNewNames.js | 1 - .../reference/moduleAugmentationOfAlias.js | 1 - .../moduleAugmentationsBundledOutput1.js | 4 ++-- .../reference/moduleAugmentationsImports1.js | 4 ++-- .../reference/moduleAugmentationsImports2.js | 6 +++--- .../reference/moduleAugmentationsImports3.js | 4 ++-- .../reference/moduleAugmentationsImports4.js | 2 +- ...ationExportStarShadowingGlobalIsNameable.js | 1 - ...oduleLocalImportNotIncorrectlyRedirected.js | 1 - .../moduleMemberMissingErrorIsRelative.js | 1 - .../reference/moduleResolutionNoTs.js | 7 ------- ...tionPackageIdWithRelativeAndAbsolutePath.js | 2 -- .../moduleResolutionWithExtensions.js | 3 --- ...uleResolutionWithExtensions_notSupported.js | 3 --- ...leResolutionWithExtensions_notSupported2.js | 1 - ...leResolutionWithExtensions_notSupported3.js | 1 - .../moduleResolutionWithExtensions_preferTs.js | 1 - ...olutionWithExtensions_withAmbientPresent.js | 2 -- .../reference/moduleResolutionWithSymlinks.js | 2 -- .../moduleResolutionWithSymlinks_withOutDir.js | 2 -- ...duleResolution_explicitNodeModulesImport.js | 1 - ...on_explicitNodeModulesImport_implicitAny.js | 1 - ...eResolution_packageJson_notAtPackageRoot.js | 1 - ...eJson_notAtPackageRoot_fakeScopedPackage.js | 1 - ...duleResolution_packageJson_scopedPackage.js | 1 - ...eResolution_packageJson_yesAtPackageRoot.js | 1 - ...eJson_yesAtPackageRoot_fakeScopedPackage.js | 1 - ...yesAtPackageRoot_mainFieldInSubDirectory.js | 1 - .../moduleResolution_relativeImportJsFile.js | 1 - ...ution_relativeImportJsFile_noImplicitAny.js | 1 - .../namespaceMergedWithImportAliasNoCrash.js | 1 - .../reference/noBundledEmitFromNodeModules.js | 7 ++----- .../reference/noCrashOnImportShadowing.js | 1 - .../nounusedTypeParameterConstraint.js | 1 - ...athMappingBasedModuleResolution8_classic.js | 2 +- .../pathMappingBasedModuleResolution8_node.js | 1 - ...oduleResolution_rootImport_aliasWithRoot.js | 2 -- ...tImport_aliasWithRoot_differentRootTypes.js | 18 ------------------ ...rootImport_aliasWithRoot_multipleAliases.js | 2 -- ...on_rootImport_aliasWithRoot_realRootFile.js | 2 -- ...uleResolution_rootImport_noAliasWithRoot.js | 2 -- ..._rootImport_noAliasWithRoot_realRootFile.js | 2 -- ...ppingBasedModuleResolution_withExtension.js | 2 -- ...asedModuleResolution_withExtensionInName.js | 2 -- ...olution_withExtension_MapedToNodeModules.js | 1 - ...uleResolution_withExtension_failedLookup.js | 1 - .../reference/project/declarationDir/amd/a.js | 2 +- .../project/declarationDir/amd/subfolder/c.js | 2 +- .../reference/project/declarationDir/node/a.js | 1 - .../project/declarationDir/node/subfolder/c.js | 1 - .../project/declarationDir2/amd/out/a.js | 2 +- .../declarationDir2/amd/out/subfolder/c.js | 2 +- .../project/declarationDir2/node/out/a.js | 1 - .../declarationDir2/node/out/subfolder/c.js | 1 - .../project/declarationDir3/amd/out.js | 4 ++-- .../amd/importHigher/root.js | 2 +- .../node/importHigher/root.js | 1 - .../reexportWrittenCorrectlyInDeclaration.js | 1 - .../relativeNamesInClassicResolution.js | 2 +- .../requireOfJsonFileWithModuleEmitNone.js | 1 - ...requireOfJsonFileWithModuleEmitUndefined.js | 1 - ...fJsonFileWithModuleNodeResolutionEmitAmd.js | 2 +- ...leWithModuleNodeResolutionEmitAmdOutFile.js | 2 +- ...onFileWithModuleNodeResolutionEmitEs2015.js | 1 - ...onFileWithModuleNodeResolutionEmitEsNext.js | 1 - ...JsonFileWithModuleNodeResolutionEmitNone.js | 1 - ...onFileWithModuleNodeResolutionEmitSystem.js | 7 ++----- ...fJsonFileWithModuleNodeResolutionEmitUmd.js | 3 +-- ...ileWithModuleNodeResolutionEmitUndefined.js | 1 - .../requireOfJsonFileWithoutEsModuleInterop.js | 1 - ...leWithoutResolveJsonModuleAndPathMapping.js | 1 - tests/baselines/reference/reservedWords2.js | 1 - tests/baselines/reference/scopedPackages.js | 3 --- .../reference/scopedPackagesClassic.js | 1 - .../preserveUnusedImports/tsconfig.json | 5 +++++ .../removeUnusedImports/tsconfig.json | 5 ----- .../strictModeWordInImportDeclaration.js | 3 --- .../symbolLinkDeclarationEmitModuleNames.js | 3 --- ...bolLinkDeclarationEmitModuleNamesRootDir.js | 2 -- .../symbolMergeValueAndImportedType.js | 1 - .../reference/systemExportAssignment.js | 7 ++----- .../reference/systemExportAssignment2.js | 7 ++----- .../reference/systemExportAssignment3.js | 7 ++----- tests/baselines/reference/systemModule12.js | 7 ++----- tests/baselines/reference/systemModule15.js | 4 +--- ...rmsCorrectly.transformAddCommentToImport.js | 2 -- ...o diagnostics for missing module imports.js | 1 - ... for missing module imports.oldTranspile.js | 1 - .../modules-and-globals-mixed-in-amd.js | 12 ++++++------ .../multiple-emitHelpers-in-all-projects.js | 12 ++++++------ .../multiple-prologues-in-all-projects.js | 12 ++++++------ .../shebang-in-all-projects.js | 12 ++++++------ .../stripInternal.js | 12 ++++++------ .../triple-slash-refs-in-all-projects.js | 12 ++++++------ .../multiple-emitHelpers-in-all-projects.js | 12 ++++++------ .../multiple-prologues-in-all-projects.js | 12 ++++++------ .../stripInternal.js | 12 ++++++------ .../modules-and-globals-mixed-in-amd.js | 12 ++++++------ .../multiple-emitHelpers-in-all-projects.js | 12 ++++++------ .../multiple-prologues-in-all-projects.js | 12 ++++++------ .../initial-build/shebang-in-all-projects.js | 12 ++++++------ .../initial-build/stripInternal.js | 12 ++++++------ .../triple-slash-refs-in-all-projects.js | 12 ++++++------ ...le-resolution-finds-original-source-file.js | 12 ++++++------ ...ing-setup-correctly-and-reports-no-error.js | 1 - ...-based-projects-and-emits-them-correctly.js | 2 -- ...is-merged-and-contains-late-bound-member.js | 1 - ...is-merged-and-contains-late-bound-member.js | 1 - ...ized-module-specifiers-resolve-correctly.js | 2 -- ...ugh-source-and-another-symlinked-package.js | 1 - tests/baselines/reference/tsxPreserveEmit3.js | 2 +- .../reference/typeReferenceDirectives10.js | 2 -- .../reference/typeReferenceDirectives13.js | 2 -- .../reference/typeReferenceDirectives5.js | 2 -- .../reference/typeReferenceRelatedFiles.js | 2 -- .../reference/typesVersions.emptyTypes.js | 1 - .../reference/typesVersions.justIndex.js | 1 - tests/baselines/reference/typingsLookupAmd.js | 2 +- tests/baselines/reference/umd8.js | 2 -- tests/baselines/reference/umdGlobalConflict.js | 2 -- .../untypedModuleImport_noImplicitAny.js | 1 - ...dModuleImport_noImplicitAny_relativePath.js | 1 - ...untypedModuleImport_noImplicitAny_scoped.js | 1 - ...mport_noImplicitAny_typesForPackageExist.js | 6 ------ .../untypedModuleImport_withAugmentation2.js | 1 - .../reference/unusedImportDeclaration.js | 1 + tests/baselines/reference/unusedImports12.js | 1 + tests/baselines/reference/unusedImports9.js | 1 + .../reference/unusedInvalidTypeArguments.js | 1 - .../unusedLocalsStartingWithUnderscore.js | 1 - .../cases/compiler/unusedImportDeclaration.ts | 1 - tests/cases/compiler/unusedImports1.ts | 1 - tests/cases/compiler/unusedImports10.ts | 1 - tests/cases/compiler/unusedImports11.ts | 1 - tests/cases/compiler/unusedImports12.ts | 1 - tests/cases/compiler/unusedImports13.ts | 1 - tests/cases/compiler/unusedImports14.ts | 1 - tests/cases/compiler/unusedImports15.ts | 1 - tests/cases/compiler/unusedImports16.ts | 1 - tests/cases/compiler/unusedImports2.ts | 1 - tests/cases/compiler/unusedImports3.ts | 1 - tests/cases/compiler/unusedImports4.ts | 1 - tests/cases/compiler/unusedImports5.ts | 1 - tests/cases/compiler/unusedImports6.ts | 1 - tests/cases/compiler/unusedImports7.ts | 1 - tests/cases/compiler/unusedImports8.ts | 1 - tests/cases/compiler/unusedImports9.ts | 1 - .../unusedImports_entireImportDeclaration.ts | 1 - 288 files changed, 165 insertions(+), 554 deletions(-) create mode 100644 tests/baselines/reference/showConfig/Shows tsconfig for single option/preserveUnusedImports/tsconfig.json delete mode 100644 tests/baselines/reference/showConfig/Shows tsconfig for single option/removeUnusedImports/tsconfig.json diff --git a/src/compiler/commandLineParser.ts b/src/compiler/commandLineParser.ts index ba0295a0e054a..2e08d87627303 100644 --- a/src/compiler/commandLineParser.ts +++ b/src/compiler/commandLineParser.ts @@ -869,11 +869,11 @@ namespace ts { transpileOptionValue: undefined }, { - name: "removeUnusedImports", + name: "preserveUnusedImports", type: "boolean", affectsEmit: true, category: Diagnostics.Advanced_Options, - description: Diagnostics.Do_not_emit_imports_that_are_unused_or_used_only_for_types + description: Diagnostics.Emit_imports_that_are_unused_or_used_only_for_types }, { name: "preserveConstEnums", diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index 658c7c4b95e17..862b2aa73eab0 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -1087,7 +1087,7 @@ "category": "Message", "code": 1377 }, - "Do not emit imports that are unused or used only for types": { + "Emit imports that are unused or used only for types": { "category": "Message", "code": 1368 }, diff --git a/src/compiler/transformers/ts.ts b/src/compiler/transformers/ts.ts index 032bac9c96025..ca60b9901f61a 100644 --- a/src/compiler/transformers/ts.ts +++ b/src/compiler/transformers/ts.ts @@ -2756,7 +2756,7 @@ namespace ts { } /** - * Visits an import declaration, eliding it if it is not referenced and `removeUnusedImports` is enabled. + * Visits an import declaration, eliding it if it is not referenced and `preserveUnusedImports` is not enabled. * * @param node The import declaration node. */ @@ -2773,7 +2773,7 @@ namespace ts { // Elide the declaration if the import clause was elided. const importClause = visitNode(node.importClause, visitImportClause, isImportClause); - return importClause || !compilerOptions.removeUnusedImports + return importClause || compilerOptions.preserveUnusedImports ? updateImportDeclaration( node, /*decorators*/ undefined, @@ -2917,7 +2917,7 @@ namespace ts { if (isExternalModuleImportEqualsDeclaration(node)) { const isReferenced = resolver.isReferencedAliasDeclaration(node); // If the alias is unreferenced but we want to keep the import, replace with 'import "mod"'. - if (!isReferenced && !compilerOptions.removeUnusedImports) { + if (!isReferenced && !compilerOptions.preserveUnusedImports) { return setOriginalNode( setTextRange( createImportDeclaration( diff --git a/src/compiler/types.ts b/src/compiler/types.ts index 48cd884258915..f305dcfe696be 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -5052,7 +5052,7 @@ namespace ts { incremental?: boolean; tsBuildInfoFile?: string; removeComments?: boolean; - removeUnusedImports?: boolean; + preserveUnusedImports?: boolean; rootDir?: string; rootDirs?: string[]; skipLibCheck?: boolean; diff --git a/tests/baselines/reference/allowImportClausesToMergeWithTypes.js b/tests/baselines/reference/allowImportClausesToMergeWithTypes.js index 165a3a0418e3a..1679fa103723f 100644 --- a/tests/baselines/reference/allowImportClausesToMergeWithTypes.js +++ b/tests/baselines/reference/allowImportClausesToMergeWithTypes.js @@ -42,7 +42,6 @@ b_1["default"]; //// [index.js] "use strict"; exports.__esModule = true; -require("./a"); var x = { x: "" }; zzz; var b_1 = require("./b"); diff --git a/tests/baselines/reference/allowSyntheticDefaultImportsCanPaintCrossModuleDeclaration.js b/tests/baselines/reference/allowSyntheticDefaultImportsCanPaintCrossModuleDeclaration.js index b943b663073f9..96a5bfcb068a7 100644 --- a/tests/baselines/reference/allowSyntheticDefaultImportsCanPaintCrossModuleDeclaration.js +++ b/tests/baselines/reference/allowSyntheticDefaultImportsCanPaintCrossModuleDeclaration.js @@ -18,7 +18,6 @@ exports.__esModule = true; //// [file1.js] "use strict"; exports.__esModule = true; -require("./color"); //// [file2.js] "use strict"; exports.__esModule = true; diff --git a/tests/baselines/reference/ambientDeclarationsPatterns_merging1.js b/tests/baselines/reference/ambientDeclarationsPatterns_merging1.js index 6e455d4e82eb8..56abd8298cdf2 100644 --- a/tests/baselines/reference/ambientDeclarationsPatterns_merging1.js +++ b/tests/baselines/reference/ambientDeclarationsPatterns_merging1.js @@ -20,8 +20,6 @@ import { everywhere, onlyInA } from "b.foo"; // Error //// [testA.js] "use strict"; exports.__esModule = true; -require("a.foo"); //// [testB.js] "use strict"; exports.__esModule = true; -require("b.foo"); // Error diff --git a/tests/baselines/reference/ambientDeclarationsPatterns_merging2.js b/tests/baselines/reference/ambientDeclarationsPatterns_merging2.js index e432846bb9fed..65726bba7225e 100644 --- a/tests/baselines/reference/ambientDeclarationsPatterns_merging2.js +++ b/tests/baselines/reference/ambientDeclarationsPatterns_merging2.js @@ -22,8 +22,6 @@ declare module "a.foo" { //// [testA.js] "use strict"; exports.__esModule = true; -require("a.foo"); //// [testB.js] "use strict"; exports.__esModule = true; -require("b.foo"); // Error diff --git a/tests/baselines/reference/ambientDeclarationsPatterns_merging3.js b/tests/baselines/reference/ambientDeclarationsPatterns_merging3.js index 1a95e69a7d1b5..763f0e94bdb56 100644 --- a/tests/baselines/reference/ambientDeclarationsPatterns_merging3.js +++ b/tests/baselines/reference/ambientDeclarationsPatterns_merging3.js @@ -18,5 +18,4 @@ ohno.a // oh no //// [test.js] "use strict"; exports.__esModule = true; -require("b.foo"); ohno.a; // oh no diff --git a/tests/baselines/reference/ambientShorthand_duplicate.js b/tests/baselines/reference/ambientShorthand_duplicate.js index 197a9d41e3326..08d03c83ed0e6 100644 --- a/tests/baselines/reference/ambientShorthand_duplicate.js +++ b/tests/baselines/reference/ambientShorthand_duplicate.js @@ -15,6 +15,3 @@ import foo from "foo"; //// [user.js] "use strict"; exports.__esModule = true; -/// -/// -require("foo"); diff --git a/tests/baselines/reference/ambientShorthand_merging.js b/tests/baselines/reference/ambientShorthand_merging.js index 0831d76de80a9..15714a48997e8 100644 --- a/tests/baselines/reference/ambientShorthand_merging.js +++ b/tests/baselines/reference/ambientShorthand_merging.js @@ -17,6 +17,3 @@ import foo, {bar} from "foo"; //// [user.js] "use strict"; exports.__esModule = true; -/// -/// -require("foo"); diff --git a/tests/baselines/reference/amdModuleConstEnumUsage.js b/tests/baselines/reference/amdModuleConstEnumUsage.js index d1fc27ac2ea81..a15bdb42ea307 100644 --- a/tests/baselines/reference/amdModuleConstEnumUsage.js +++ b/tests/baselines/reference/amdModuleConstEnumUsage.js @@ -25,7 +25,7 @@ define(["require", "exports"], function (require, exports) { })(CharCode = exports.CharCode || (exports.CharCode = {})); }); //// [file.js] -define(["require", "exports", "defs/cc"], function (require, exports) { +define(["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; var User = /** @class */ (function () { diff --git a/tests/baselines/reference/api/tsserverlibrary.d.ts b/tests/baselines/reference/api/tsserverlibrary.d.ts index cd2abc79a0713..0f61bf4374a08 100644 --- a/tests/baselines/reference/api/tsserverlibrary.d.ts +++ b/tests/baselines/reference/api/tsserverlibrary.d.ts @@ -2670,7 +2670,7 @@ declare namespace ts { incremental?: boolean; tsBuildInfoFile?: string; removeComments?: boolean; - removeUnusedImports?: boolean; + preserveUnusedImports?: boolean; rootDir?: string; rootDirs?: string[]; skipLibCheck?: boolean; diff --git a/tests/baselines/reference/api/typescript.d.ts b/tests/baselines/reference/api/typescript.d.ts index 1a6f32e50ac99..2e2c53206e996 100644 --- a/tests/baselines/reference/api/typescript.d.ts +++ b/tests/baselines/reference/api/typescript.d.ts @@ -2670,7 +2670,7 @@ declare namespace ts { incremental?: boolean; tsBuildInfoFile?: string; removeComments?: boolean; - removeUnusedImports?: boolean; + preserveUnusedImports?: boolean; rootDir?: string; rootDirs?: string[]; skipLibCheck?: boolean; diff --git a/tests/baselines/reference/asyncAwaitIsolatedModules_es2017.js b/tests/baselines/reference/asyncAwaitIsolatedModules_es2017.js index afa7902c74f20..065aa675b6e57 100644 --- a/tests/baselines/reference/asyncAwaitIsolatedModules_es2017.js +++ b/tests/baselines/reference/asyncAwaitIsolatedModules_es2017.js @@ -40,7 +40,6 @@ module M { } //// [asyncAwaitIsolatedModules_es2017.js] -import "missing"; async function f0() { } async function f1() { } async function f3() { } diff --git a/tests/baselines/reference/asyncAwaitIsolatedModules_es6.js b/tests/baselines/reference/asyncAwaitIsolatedModules_es6.js index 0f67dc27be917..015992805bcbd 100644 --- a/tests/baselines/reference/asyncAwaitIsolatedModules_es6.js +++ b/tests/baselines/reference/asyncAwaitIsolatedModules_es6.js @@ -49,7 +49,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; -import "missing"; function f0() { return __awaiter(this, void 0, void 0, function* () { }); } diff --git a/tests/baselines/reference/asyncImportedPromise_es6.js b/tests/baselines/reference/asyncImportedPromise_es6.js index f8c78c5133c48..41bf0f26087ed 100644 --- a/tests/baselines/reference/asyncImportedPromise_es6.js +++ b/tests/baselines/reference/asyncImportedPromise_es6.js @@ -27,7 +27,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge }); }; Object.defineProperty(exports, "__esModule", { value: true }); -require("./task"); class Test { example() { return __awaiter(this, void 0, void 0, function* () { return; }); diff --git a/tests/baselines/reference/augmentExportEquals5.js b/tests/baselines/reference/augmentExportEquals5.js index a32adbe00fd01..e028b2331daf5 100644 --- a/tests/baselines/reference/augmentExportEquals5.js +++ b/tests/baselines/reference/augmentExportEquals5.js @@ -81,12 +81,12 @@ let x: Request; const y = x.id; //// [augmentation.js] -define(["require", "exports", "express"], function (require, exports) { +define(["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; }); //// [consumer.js] -define(["require", "exports", "express", "./augmentation"], function (require, exports) { +define(["require", "exports", "./augmentation"], function (require, exports) { "use strict"; exports.__esModule = true; var x; diff --git a/tests/baselines/reference/augmentExportEquals6_1.js b/tests/baselines/reference/augmentExportEquals6_1.js index 91c92f8bd253c..ab6740d1c372d 100644 --- a/tests/baselines/reference/augmentExportEquals6_1.js +++ b/tests/baselines/reference/augmentExportEquals6_1.js @@ -31,7 +31,7 @@ define(["require", "exports", "file1"], function (require, exports) { exports.__esModule = true; }); //// [file3.js] -define(["require", "exports", "file1", "file2"], function (require, exports) { +define(["require", "exports", "file2"], function (require, exports) { "use strict"; exports.__esModule = true; var a; diff --git a/tests/baselines/reference/bangInModuleName.js b/tests/baselines/reference/bangInModuleName.js index 5d33b6b15ad6d..1a6961f59da5c 100644 --- a/tests/baselines/reference/bangInModuleName.js +++ b/tests/baselines/reference/bangInModuleName.js @@ -16,7 +16,7 @@ import * as http from 'intern/dojo/node!http'; //// [a.js] /// -define(["require", "exports", "intern/dojo/node!http"], function (require, exports) { +define(["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; }); diff --git a/tests/baselines/reference/cachedModuleResolution1.js b/tests/baselines/reference/cachedModuleResolution1.js index 40ba45cc6a5f2..cd83308f922cf 100644 --- a/tests/baselines/reference/cachedModuleResolution1.js +++ b/tests/baselines/reference/cachedModuleResolution1.js @@ -12,8 +12,6 @@ import {x} from "foo"; //// [app.js] "use strict"; exports.__esModule = true; -require("foo"); //// [lib.js] "use strict"; exports.__esModule = true; -require("foo"); diff --git a/tests/baselines/reference/cachedModuleResolution2.js b/tests/baselines/reference/cachedModuleResolution2.js index 870d9b828b3d5..8ecb42a32ae04 100644 --- a/tests/baselines/reference/cachedModuleResolution2.js +++ b/tests/baselines/reference/cachedModuleResolution2.js @@ -13,8 +13,6 @@ import {x} from "foo"; //// [lib.js] "use strict"; exports.__esModule = true; -require("foo"); //// [app.js] "use strict"; exports.__esModule = true; -require("foo"); diff --git a/tests/baselines/reference/cachedModuleResolution3.js b/tests/baselines/reference/cachedModuleResolution3.js index 5c1ec5f1dabdf..f5da694009969 100644 --- a/tests/baselines/reference/cachedModuleResolution3.js +++ b/tests/baselines/reference/cachedModuleResolution3.js @@ -12,8 +12,6 @@ import {x} from "foo"; //// [app.js] "use strict"; exports.__esModule = true; -require("foo"); //// [lib.js] "use strict"; exports.__esModule = true; -require("foo"); diff --git a/tests/baselines/reference/cachedModuleResolution4.js b/tests/baselines/reference/cachedModuleResolution4.js index 3bea56fef019d..f5417960d4692 100644 --- a/tests/baselines/reference/cachedModuleResolution4.js +++ b/tests/baselines/reference/cachedModuleResolution4.js @@ -13,8 +13,6 @@ import {x} from "foo"; //// [lib.js] "use strict"; exports.__esModule = true; -require("foo"); //// [app.js] "use strict"; exports.__esModule = true; -require("foo"); diff --git a/tests/baselines/reference/cachedModuleResolution5.js b/tests/baselines/reference/cachedModuleResolution5.js index e4c6ab2341b20..4fe641e917e61 100644 --- a/tests/baselines/reference/cachedModuleResolution5.js +++ b/tests/baselines/reference/cachedModuleResolution5.js @@ -12,8 +12,6 @@ import {x} from "foo"; //// [app.js] "use strict"; exports.__esModule = true; -require("foo"); //// [lib.js] "use strict"; exports.__esModule = true; -require("foo"); diff --git a/tests/baselines/reference/cachedModuleResolution6.js b/tests/baselines/reference/cachedModuleResolution6.js index 448724e921ab2..364ad55aa6ce1 100644 --- a/tests/baselines/reference/cachedModuleResolution6.js +++ b/tests/baselines/reference/cachedModuleResolution6.js @@ -9,8 +9,6 @@ import {x} from "foo"; //// [app.js] "use strict"; exports.__esModule = true; -require("foo"); //// [lib.js] "use strict"; exports.__esModule = true; -require("foo"); diff --git a/tests/baselines/reference/cachedModuleResolution7.js b/tests/baselines/reference/cachedModuleResolution7.js index f2e85283e078c..9b103fdd9bf16 100644 --- a/tests/baselines/reference/cachedModuleResolution7.js +++ b/tests/baselines/reference/cachedModuleResolution7.js @@ -10,8 +10,6 @@ import {x} from "foo"; //// [lib.js] "use strict"; exports.__esModule = true; -require("foo"); //// [app.js] "use strict"; exports.__esModule = true; -require("foo"); diff --git a/tests/baselines/reference/cachedModuleResolution8.js b/tests/baselines/reference/cachedModuleResolution8.js index e465be03ddc94..9e8b67fabf7ae 100644 --- a/tests/baselines/reference/cachedModuleResolution8.js +++ b/tests/baselines/reference/cachedModuleResolution8.js @@ -9,8 +9,6 @@ import {x} from "foo"; //// [app.js] "use strict"; exports.__esModule = true; -require("foo"); //// [lib.js] "use strict"; exports.__esModule = true; -require("foo"); diff --git a/tests/baselines/reference/cachedModuleResolution9.js b/tests/baselines/reference/cachedModuleResolution9.js index e9eca1505fc27..8de0a1ff17340 100644 --- a/tests/baselines/reference/cachedModuleResolution9.js +++ b/tests/baselines/reference/cachedModuleResolution9.js @@ -11,8 +11,6 @@ import {x} from "foo"; //// [lib.js] "use strict"; exports.__esModule = true; -require("foo"); //// [app.js] "use strict"; exports.__esModule = true; -require("foo"); diff --git a/tests/baselines/reference/caseInsensitiveFileSystemWithCapsImportTypeDeclarations.js b/tests/baselines/reference/caseInsensitiveFileSystemWithCapsImportTypeDeclarations.js index 1dcbd6371213a..ac6e4b7e13502 100644 --- a/tests/baselines/reference/caseInsensitiveFileSystemWithCapsImportTypeDeclarations.js +++ b/tests/baselines/reference/caseInsensitiveFileSystemWithCapsImportTypeDeclarations.js @@ -32,12 +32,9 @@ exports.__esModule = true; //// [type-b.js] "use strict"; exports.__esModule = true; -require("./types"); -require("./type-a"); //// [index.js] "use strict"; exports.__esModule = true; -require("./type-b"); var Broken = /** @class */ (function () { function Broken() { } diff --git a/tests/baselines/reference/chained.js b/tests/baselines/reference/chained.js index a37ab84a1302a..e37d6361b2441 100644 --- a/tests/baselines/reference/chained.js +++ b/tests/baselines/reference/chained.js @@ -30,13 +30,11 @@ var A = /** @class */ (function () { //// [b.js] "use strict"; exports.__esModule = true; -require("./a"); //// [c.js] "use strict"; exports.__esModule = true; //// [d.js] "use strict"; exports.__esModule = true; -require("./c"); new D(); var d = {}; diff --git a/tests/baselines/reference/circularReferenceInImport.js b/tests/baselines/reference/circularReferenceInImport.js index 23140e8035521..432a03d090cac 100644 --- a/tests/baselines/reference/circularReferenceInImport.js +++ b/tests/baselines/reference/circularReferenceInImport.js @@ -17,7 +17,6 @@ export function foo() { //// [app.js] "use strict"; exports.__esModule = true; -require("./db"); function foo() { return new Object(); } diff --git a/tests/baselines/reference/constEnumNamespaceReferenceCausesNoImport.js b/tests/baselines/reference/constEnumNamespaceReferenceCausesNoImport.js index 60adc107142b9..d1ead34bdd5d0 100644 --- a/tests/baselines/reference/constEnumNamespaceReferenceCausesNoImport.js +++ b/tests/baselines/reference/constEnumNamespaceReferenceCausesNoImport.js @@ -26,7 +26,6 @@ exports.fooFunc = fooFunc; //// [index.js] "use strict"; exports.__esModule = true; -require("./foo"); function check(x) { switch (x) { case 0 /* Some */: diff --git a/tests/baselines/reference/constEnumNoEmitReexport.js b/tests/baselines/reference/constEnumNoEmitReexport.js index 45491581a5c27..de1ed1ff03275 100644 --- a/tests/baselines/reference/constEnumNoEmitReexport.js +++ b/tests/baselines/reference/constEnumNoEmitReexport.js @@ -35,11 +35,9 @@ exports.__esModule = true; //// [ImportExport.js] "use strict"; exports.__esModule = true; -require("./ConstEnum"); //// [ImportExportDefault.js] "use strict"; exports.__esModule = true; -require("./ConstEnum"); //// [ReExportDefault.js] "use strict"; exports.__esModule = true; @@ -49,17 +47,13 @@ exports.__esModule = true; //// [Usage1.js] "use strict"; exports.__esModule = true; -require("./ImportExportDefault"); -require("./ReExportDefault"); 0 /* Foo */; 0 /* Foo */; //// [Usage2.js] "use strict"; exports.__esModule = true; -require("./ImportExport"); 0 /* Foo */; //// [Usage3.js] "use strict"; exports.__esModule = true; -require("./ReExport"); 0 /* Foo */; diff --git a/tests/baselines/reference/constEnumNoPreserveDeclarationReexport.js b/tests/baselines/reference/constEnumNoPreserveDeclarationReexport.js index bcbbdcd843d79..0edacd183ef11 100644 --- a/tests/baselines/reference/constEnumNoPreserveDeclarationReexport.js +++ b/tests/baselines/reference/constEnumNoPreserveDeclarationReexport.js @@ -23,9 +23,6 @@ StillEnum.Foo; //// [usages.js] "use strict"; exports.__esModule = true; -require("./ConstEnum"); -require("./ImportExport"); -require("./ReExport"); 0 /* Foo */; 0 /* Foo */; 0 /* Foo */; diff --git a/tests/baselines/reference/declarationEmitAliasExportStar.js b/tests/baselines/reference/declarationEmitAliasExportStar.js index 6baeb6b325066..a7f8932cbf993 100644 --- a/tests/baselines/reference/declarationEmitAliasExportStar.js +++ b/tests/baselines/reference/declarationEmitAliasExportStar.js @@ -18,7 +18,6 @@ exports.__esModule = true; //// [index.js] "use strict"; exports.__esModule = true; -require("./things"); exports.thing2 = function (param) { return null; }; diff --git a/tests/baselines/reference/declarationEmitAliasFromIndirectFile.js b/tests/baselines/reference/declarationEmitAliasFromIndirectFile.js index e2a454c4d5b00..105b406cdadea 100644 --- a/tests/baselines/reference/declarationEmitAliasFromIndirectFile.js +++ b/tests/baselines/reference/declarationEmitAliasFromIndirectFile.js @@ -30,7 +30,6 @@ export default fp.l10ns; //// [app.js] "use strict"; exports.__esModule = true; -require("./instance"); var fp = { l10ns: {} }; exports["default"] = fp.l10ns; diff --git a/tests/baselines/reference/declarationEmitBundleWithAmbientReferences.js b/tests/baselines/reference/declarationEmitBundleWithAmbientReferences.js index 7ead6faffa23a..6c42a82967eac 100644 --- a/tests/baselines/reference/declarationEmitBundleWithAmbientReferences.js +++ b/tests/baselines/reference/declarationEmitBundleWithAmbientReferences.js @@ -21,11 +21,11 @@ export const build = (): DatastoreResult.T => { //// [datastore.bundle.js] -define("datastore_result", ["require", "exports", "lib/result"], function (require, exports) { +define("datastore_result", ["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; }); -define("conditional_directive_field", ["require", "exports", "datastore_result"], function (require, exports) { +define("conditional_directive_field", ["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; exports.build = function () { diff --git a/tests/baselines/reference/declarationEmitExportAliasVisibiilityMarking.js b/tests/baselines/reference/declarationEmitExportAliasVisibiilityMarking.js index be4be43d12af8..fcc0722c07e60 100644 --- a/tests/baselines/reference/declarationEmitExportAliasVisibiilityMarking.js +++ b/tests/baselines/reference/declarationEmitExportAliasVisibiilityMarking.js @@ -20,7 +20,6 @@ exports.__esModule = true; //// [Card.js] "use strict"; exports.__esModule = true; -require("./Types"); exports["default"] = (function (suit, rank) { return ({ suit: suit, rank: rank }); }); //// [index.js] "use strict"; diff --git a/tests/baselines/reference/declarationEmitForGlobalishSpecifierSymlink.js b/tests/baselines/reference/declarationEmitForGlobalishSpecifierSymlink.js index b918b37f7a4ca..00efdd49280a3 100644 --- a/tests/baselines/reference/declarationEmitForGlobalishSpecifierSymlink.js +++ b/tests/baselines/reference/declarationEmitForGlobalishSpecifierSymlink.js @@ -37,7 +37,6 @@ export const a: import("typescript-fsa").A; //// [index.js] "use strict"; exports.__esModule = true; -require("p2"); var typescript_fsa_1 = require("typescript-fsa"); exports.a = typescript_fsa_1.getA(); diff --git a/tests/baselines/reference/declarationEmitForGlobalishSpecifierSymlink2.js b/tests/baselines/reference/declarationEmitForGlobalishSpecifierSymlink2.js index 67779e66a64cf..22889aba46193 100644 --- a/tests/baselines/reference/declarationEmitForGlobalishSpecifierSymlink2.js +++ b/tests/baselines/reference/declarationEmitForGlobalishSpecifierSymlink2.js @@ -25,7 +25,6 @@ export const a: import("typescript-fsa").A; //// [index.js] "use strict"; exports.__esModule = true; -require("p2"); var typescript_fsa_1 = require("typescript-fsa"); exports.a = typescript_fsa_1.getA(); diff --git a/tests/baselines/reference/declarationEmitInferredTypeAlias5.js b/tests/baselines/reference/declarationEmitInferredTypeAlias5.js index 310661daec1c3..918e2898d2ed2 100644 --- a/tests/baselines/reference/declarationEmitInferredTypeAlias5.js +++ b/tests/baselines/reference/declarationEmitInferredTypeAlias5.js @@ -17,7 +17,6 @@ var obj = true; //// [1.js] "use strict"; exports.__esModule = true; -require("./0"); //let v2: Z.Data; var v = "str" || true; exports.v = v; diff --git a/tests/baselines/reference/declarationEmitQualifiedAliasTypeArgument.js b/tests/baselines/reference/declarationEmitQualifiedAliasTypeArgument.js index f2bae90f9bf44..bc895b62ace25 100644 --- a/tests/baselines/reference/declarationEmitQualifiedAliasTypeArgument.js +++ b/tests/baselines/reference/declarationEmitQualifiedAliasTypeArgument.js @@ -30,7 +30,6 @@ export const fun2 = create(); //// [index.js] "use strict"; exports.__esModule = true; -require("./lib"); var bbb_1 = require("./bbb"); exports.fun = bbb_1.create(); exports.fun2 = bbb_1.create(); diff --git a/tests/baselines/reference/declarationsForFileShadowingGlobalNoError.js b/tests/baselines/reference/declarationsForFileShadowingGlobalNoError.js index a11dc31db695f..ed972a1312cb5 100644 --- a/tests/baselines/reference/declarationsForFileShadowingGlobalNoError.js +++ b/tests/baselines/reference/declarationsForFileShadowingGlobalNoError.js @@ -38,8 +38,6 @@ var __extends = (this && this.__extends) || (function () { }; })(); exports.__esModule = true; -require("./custom"); -require("./dom"); exports.mixin = function (Base) { return /** @class */ (function (_super) { __extends(class_1, _super); diff --git a/tests/baselines/reference/declarationsForIndirectTypeAliasReference.js b/tests/baselines/reference/declarationsForIndirectTypeAliasReference.js index 177bc0b0ad6d0..1563e2571cc40 100644 --- a/tests/baselines/reference/declarationsForIndirectTypeAliasReference.js +++ b/tests/baselines/reference/declarationsForIndirectTypeAliasReference.js @@ -39,7 +39,6 @@ exports.__esModule = true; //// [a.js] "use strict"; exports.__esModule = true; -require("./b"); var MAP = { a: "a" }; diff --git a/tests/baselines/reference/decoratedClassFromExternalModule.js b/tests/baselines/reference/decoratedClassFromExternalModule.js index 1144c178fc3e4..ce397323d9ccd 100644 --- a/tests/baselines/reference/decoratedClassFromExternalModule.js +++ b/tests/baselines/reference/decoratedClassFromExternalModule.js @@ -24,4 +24,3 @@ Decorated = __decorate([ ], Decorated); export default Decorated; //// [undecorated.js] -import 'decorated'; diff --git a/tests/baselines/reference/duplicatePackage_globalMerge.js b/tests/baselines/reference/duplicatePackage_globalMerge.js index 616209a490ae0..6f12995e022fc 100644 --- a/tests/baselines/reference/duplicatePackage_globalMerge.js +++ b/tests/baselines/reference/duplicatePackage_globalMerge.js @@ -24,15 +24,11 @@ import { y } from '../tests/index' //// [index.js] "use strict"; exports.__esModule = true; -require("react"); exports.x = 1; //// [index.js] "use strict"; exports.__esModule = true; -require("react"); exports.y = 2; //// [bug25410.js] "use strict"; exports.__esModule = true; -require("./index"); -require("../tests/index"); diff --git a/tests/baselines/reference/duplicatePackage_packageIdIncludesSubModule.js b/tests/baselines/reference/duplicatePackage_packageIdIncludesSubModule.js index 8d46ed59343fd..9817641484e41 100644 --- a/tests/baselines/reference/duplicatePackage_packageIdIncludesSubModule.js +++ b/tests/baselines/reference/duplicatePackage_packageIdIncludesSubModule.js @@ -20,5 +20,3 @@ import { x } from "foo/Bar"; //// [index.js] "use strict"; exports.__esModule = true; -require("foo/Foo"); -require("foo/Bar"); diff --git a/tests/baselines/reference/duplicatePackage_referenceTypes.js b/tests/baselines/reference/duplicatePackage_referenceTypes.js index 41469ece97426..2abd8090e0703 100644 --- a/tests/baselines/reference/duplicatePackage_referenceTypes.js +++ b/tests/baselines/reference/duplicatePackage_referenceTypes.js @@ -28,5 +28,4 @@ let foo: Foo = a.foo; "use strict"; exports.__esModule = true; var a = require("a"); -require("foo"); var foo = a.foo; diff --git a/tests/baselines/reference/duplicatePackage_subModule.js b/tests/baselines/reference/duplicatePackage_subModule.js index 92e54bcabe2e2..0a5793a79a2c7 100644 --- a/tests/baselines/reference/duplicatePackage_subModule.js +++ b/tests/baselines/reference/duplicatePackage_subModule.js @@ -30,6 +30,5 @@ const o: Foo = a.o; //// [index.js] "use strict"; exports.__esModule = true; -require("foo/Foo"); var a = require("a"); var o = a.o; diff --git a/tests/baselines/reference/duplicatePackage_withErrors.js b/tests/baselines/reference/duplicatePackage_withErrors.js index 5bd398d8c1ba9..a7fdafd522f5e 100644 --- a/tests/baselines/reference/duplicatePackage_withErrors.js +++ b/tests/baselines/reference/duplicatePackage_withErrors.js @@ -26,5 +26,3 @@ import { x as xb } from "b"; //// [a.js] "use strict"; exports.__esModule = true; -require("a"); -require("b"); diff --git a/tests/baselines/reference/dynamicNames.js b/tests/baselines/reference/dynamicNames.js index 9ad0e16e4f8f4..9afc45d1a84ba 100644 --- a/tests/baselines/reference/dynamicNames.js +++ b/tests/baselines/reference/dynamicNames.js @@ -164,7 +164,6 @@ exports.s0 = Symbol(); "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const module_1 = require("./module"); -require("./module"); var N; (function (N) { N.c2 = "a"; diff --git a/tests/baselines/reference/emptyDeclarationEmitIsModule.js b/tests/baselines/reference/emptyDeclarationEmitIsModule.js index f4f1b1c1a09b5..fb0cea6365e1b 100644 --- a/tests/baselines/reference/emptyDeclarationEmitIsModule.js +++ b/tests/baselines/reference/emptyDeclarationEmitIsModule.js @@ -12,11 +12,9 @@ export interface Bar { //// [index.js] "use strict"; exports.__esModule = true; -require("./module"); //// [module.js] "use strict"; exports.__esModule = true; -require("./index"); var Foo = /** @class */ (function () { function Foo() { } diff --git a/tests/baselines/reference/enums.js b/tests/baselines/reference/enums.js index b4f58273f8325..09243e4a7f134 100644 --- a/tests/baselines/reference/enums.js +++ b/tests/baselines/reference/enums.js @@ -49,5 +49,4 @@ var flags; //// [c.js] "use strict"; exports.__esModule = true; -require("./a"); var flags = "Type" /* Type */; diff --git a/tests/baselines/reference/errorWithSameNameType.js b/tests/baselines/reference/errorWithSameNameType.js index f1da7bb408749..85dba75385364 100644 --- a/tests/baselines/reference/errorWithSameNameType.js +++ b/tests/baselines/reference/errorWithSameNameType.js @@ -33,8 +33,6 @@ exports.__esModule = true; //// [c.js] "use strict"; exports.__esModule = true; -require("./a"); -require("./b"); var a; var b; if (a === b) { diff --git a/tests/baselines/reference/es5ModuleInternalNamedImports.js b/tests/baselines/reference/es5ModuleInternalNamedImports.js index eb3f09ca03e7c..88b9c1b22ca89 100644 --- a/tests/baselines/reference/es5ModuleInternalNamedImports.js +++ b/tests/baselines/reference/es5ModuleInternalNamedImports.js @@ -36,7 +36,7 @@ import M3 from "M3"; //// [es5ModuleInternalNamedImports.js] -define(["require", "exports", "M3"], function (require, exports) { +define(["require", "exports"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var M; diff --git a/tests/baselines/reference/es6ExportAssignment2.js b/tests/baselines/reference/es6ExportAssignment2.js index e741629de1342..531c9e5a5ba3d 100644 --- a/tests/baselines/reference/es6ExportAssignment2.js +++ b/tests/baselines/reference/es6ExportAssignment2.js @@ -11,4 +11,3 @@ import * as a from "a"; //// [a.js] var a = 10; //// [b.js] -import "a"; diff --git a/tests/baselines/reference/es6ExportAssignment3.js b/tests/baselines/reference/es6ExportAssignment3.js index 93ca61a24bd21..5a2cd208a5a7e 100644 --- a/tests/baselines/reference/es6ExportAssignment3.js +++ b/tests/baselines/reference/es6ExportAssignment3.js @@ -9,4 +9,3 @@ import * as a from "a"; //// [b.js] -import "a"; diff --git a/tests/baselines/reference/es6ExportAssignment4.js b/tests/baselines/reference/es6ExportAssignment4.js index dbb694512cf15..656dcc0729f77 100644 --- a/tests/baselines/reference/es6ExportAssignment4.js +++ b/tests/baselines/reference/es6ExportAssignment4.js @@ -11,4 +11,3 @@ import * as a from "a"; //// [b.js] -import "a"; diff --git a/tests/baselines/reference/es6ExportEqualsInterop.js b/tests/baselines/reference/es6ExportEqualsInterop.js index 88a047427f28e..242472373754d 100644 --- a/tests/baselines/reference/es6ExportEqualsInterop.js +++ b/tests/baselines/reference/es6ExportEqualsInterop.js @@ -234,19 +234,6 @@ z7.a; z8.a; z9.a; z0.a; -// default import -require("interface"); -require("variable"); -require("interface-variable"); -require("module"); -require("interface-module"); -require("variable-module"); -require("function"); -require("function-module"); -require("class"); -require("class-module"); -// namespace import -require("interface"); var y2 = require("variable"); var y3 = require("interface-variable"); var y4 = require("module"); diff --git a/tests/baselines/reference/es6ImportDefaultBinding.js b/tests/baselines/reference/es6ImportDefaultBinding.js index 2f559028ceb87..bdc9b4b846317 100644 --- a/tests/baselines/reference/es6ImportDefaultBinding.js +++ b/tests/baselines/reference/es6ImportDefaultBinding.js @@ -16,7 +16,6 @@ export default a; //// [es6ImportDefaultBinding_1.js] import defaultBinding from "es6ImportDefaultBinding_0"; var x = defaultBinding; -import "es6ImportDefaultBinding_0"; // elide this import since defaultBinding2 is not used //// [es6ImportDefaultBinding_0.d.ts] diff --git a/tests/baselines/reference/es6ImportDefaultBindingAmd.js b/tests/baselines/reference/es6ImportDefaultBindingAmd.js index 093637f9e4289..1f6b3c97c8fe3 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingAmd.js +++ b/tests/baselines/reference/es6ImportDefaultBindingAmd.js @@ -18,7 +18,7 @@ define(["require", "exports"], function (require, exports) { exports.default = a; }); //// [es6ImportDefaultBindingAmd_1.js] -define(["require", "exports", "es6ImportDefaultBindingAmd_0", "es6ImportDefaultBindingAmd_0"], function (require, exports, es6ImportDefaultBindingAmd_0_1) { +define(["require", "exports", "es6ImportDefaultBindingAmd_0"], function (require, exports, es6ImportDefaultBindingAmd_0_1) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var x = es6ImportDefaultBindingAmd_0_1.default; diff --git a/tests/baselines/reference/es6ImportDefaultBindingDts.js b/tests/baselines/reference/es6ImportDefaultBindingDts.js index f9bfc4212cb9b..5011e3144fd16 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingDts.js +++ b/tests/baselines/reference/es6ImportDefaultBindingDts.js @@ -24,7 +24,6 @@ exports.default = c; Object.defineProperty(exports, "__esModule", { value: true }); var server_1 = require("./server"); exports.x = new server_1.default(); -require("./server"); // elide this import since defaultBinding2 is not used //// [server.d.ts] diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport.js b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport.js index 5cf702df1bb62..ff8d6538b0496 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport.js +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport.js @@ -31,7 +31,6 @@ exports.default = {}; //// [es6ImportDefaultBindingFollowedWithNamedImport_1.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -require("./es6ImportDefaultBindingFollowedWithNamedImport_0"); const es6ImportDefaultBindingFollowedWithNamedImport_0_1 = require("./es6ImportDefaultBindingFollowedWithNamedImport_0"); var x1 = es6ImportDefaultBindingFollowedWithNamedImport_0_1.a; const es6ImportDefaultBindingFollowedWithNamedImport_0_2 = require("./es6ImportDefaultBindingFollowedWithNamedImport_0"); diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportDts.js b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportDts.js index 3b80ac7b96d94..05774d9961c4a 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportDts.js +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportDts.js @@ -65,7 +65,6 @@ exports.x11 = x11; //// [client.js] "use strict"; exports.__esModule = true; -require("./server"); var server_1 = require("./server"); exports.x1 = new server_1.a(); var server_2 = require("./server"); diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportInEs5.js b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportInEs5.js index 94dcbae1a8a3d..3c55a05f25e7d 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportInEs5.js +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportInEs5.js @@ -29,7 +29,6 @@ exports.m = exports.a; //// [es6ImportDefaultBindingFollowedWithNamedImportInEs5_1.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -require("./es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"); var es6ImportDefaultBindingFollowedWithNamedImportInEs5_0_1 = require("./es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"); var x1 = es6ImportDefaultBindingFollowedWithNamedImportInEs5_0_1.a; var es6ImportDefaultBindingFollowedWithNamedImportInEs5_0_2 = require("./es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"); diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportWithExport.js b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportWithExport.js index cb7f55f25810d..ff8c1059ad145 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportWithExport.js +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportWithExport.js @@ -31,7 +31,7 @@ define(["require", "exports"], function (require, exports) { exports.default = {}; }); //// [client.js] -define(["require", "exports", "server", "server", "server", "server", "server", "server"], function (require, exports, server_1, server_2, server_3, server_4, server_5) { +define(["require", "exports", "server", "server", "server", "server", "server"], function (require, exports, server_1, server_2, server_3, server_4, server_5) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.x1 = server_1.a; diff --git a/tests/baselines/reference/es6ImportDefaultBindingInEs5.js b/tests/baselines/reference/es6ImportDefaultBindingInEs5.js index f5318955a3a61..a6175197d8eb4 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingInEs5.js +++ b/tests/baselines/reference/es6ImportDefaultBindingInEs5.js @@ -14,7 +14,6 @@ module.exports = a; //// [es6ImportDefaultBindingInEs5_1.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -require("./es6ImportDefaultBindingInEs5_0"); //// [es6ImportDefaultBindingInEs5_0.d.ts] diff --git a/tests/baselines/reference/es6ImportDefaultBindingMergeErrors.js b/tests/baselines/reference/es6ImportDefaultBindingMergeErrors.js index 228fec434a1e6..85f3d34cd6781 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingMergeErrors.js +++ b/tests/baselines/reference/es6ImportDefaultBindingMergeErrors.js @@ -25,7 +25,4 @@ exports.default = a; Object.defineProperty(exports, "__esModule", { value: true }); var es6ImportDefaultBindingMergeErrors_0_1 = require("./es6ImportDefaultBindingMergeErrors_0"); var x = es6ImportDefaultBindingMergeErrors_0_1.default; -require("./es6ImportDefaultBindingMergeErrors_0"); // Should be error var defaultBinding2 = "hello world"; -require("./es6ImportDefaultBindingMergeErrors_0"); // Should be error -require("./es6ImportDefaultBindingMergeErrors_0"); // SHould be error diff --git a/tests/baselines/reference/es6ImportDefaultBindingNoDefaultProperty.js b/tests/baselines/reference/es6ImportDefaultBindingNoDefaultProperty.js index 6395294703259..0b233910696c7 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingNoDefaultProperty.js +++ b/tests/baselines/reference/es6ImportDefaultBindingNoDefaultProperty.js @@ -14,4 +14,3 @@ exports.a = 10; //// [es6ImportDefaultBindingNoDefaultProperty_1.js] "use strict"; exports.__esModule = true; -require("./es6ImportDefaultBindingNoDefaultProperty_0"); diff --git a/tests/baselines/reference/es6ImportDefaultBindingWithExport.js b/tests/baselines/reference/es6ImportDefaultBindingWithExport.js index 1b2ecf4baca5c..38b391ac6d315 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingWithExport.js +++ b/tests/baselines/reference/es6ImportDefaultBindingWithExport.js @@ -17,7 +17,7 @@ define(["require", "exports"], function (require, exports) { exports.default = a; }); //// [client.js] -define(["require", "exports", "server", "server"], function (require, exports, server_1) { +define(["require", "exports", "server"], function (require, exports, server_1) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.x = server_1.default; diff --git a/tests/baselines/reference/es6ImportEqualsDeclaration2.js b/tests/baselines/reference/es6ImportEqualsDeclaration2.js index 48699f43d0d3d..cc6d33a9afa4c 100644 --- a/tests/baselines/reference/es6ImportEqualsDeclaration2.js +++ b/tests/baselines/reference/es6ImportEqualsDeclaration2.js @@ -20,4 +20,3 @@ import {a} from "server"; //// [client.js] -import "server"; diff --git a/tests/baselines/reference/es6ImportNameSpaceImport.js b/tests/baselines/reference/es6ImportNameSpaceImport.js index 1453d71846737..7ab8a62bf6fe3 100644 --- a/tests/baselines/reference/es6ImportNameSpaceImport.js +++ b/tests/baselines/reference/es6ImportNameSpaceImport.js @@ -18,7 +18,6 @@ exports.a = 10; Object.defineProperty(exports, "__esModule", { value: true }); const nameSpaceBinding = require("./es6ImportNameSpaceImport_0"); var x = nameSpaceBinding.a; -require("./es6ImportNameSpaceImport_0"); // elide this //// [es6ImportNameSpaceImport_0.d.ts] diff --git a/tests/baselines/reference/es6ImportNameSpaceImportAmd.js b/tests/baselines/reference/es6ImportNameSpaceImportAmd.js index f502e5266e711..17a0509f09331 100644 --- a/tests/baselines/reference/es6ImportNameSpaceImportAmd.js +++ b/tests/baselines/reference/es6ImportNameSpaceImportAmd.js @@ -16,7 +16,7 @@ define(["require", "exports"], function (require, exports) { exports.a = 10; }); //// [es6ImportNameSpaceImportAmd_1.js] -define(["require", "exports", "es6ImportNameSpaceImportAmd_0", "es6ImportNameSpaceImportAmd_0"], function (require, exports, nameSpaceBinding) { +define(["require", "exports", "es6ImportNameSpaceImportAmd_0"], function (require, exports, nameSpaceBinding) { "use strict"; exports.__esModule = true; var x = nameSpaceBinding.a; diff --git a/tests/baselines/reference/es6ImportNameSpaceImportDts.js b/tests/baselines/reference/es6ImportNameSpaceImportDts.js index 99be98c04cffb..e39402c36332c 100644 --- a/tests/baselines/reference/es6ImportNameSpaceImportDts.js +++ b/tests/baselines/reference/es6ImportNameSpaceImportDts.js @@ -23,7 +23,6 @@ exports.c = c; exports.__esModule = true; var nameSpaceBinding = require("./server"); exports.x = new nameSpaceBinding.c(); -require("./server"); // unreferenced //// [server.d.ts] diff --git a/tests/baselines/reference/es6ImportNameSpaceImportInEs5.js b/tests/baselines/reference/es6ImportNameSpaceImportInEs5.js index 6fcf69a73a464..4382d8f16b294 100644 --- a/tests/baselines/reference/es6ImportNameSpaceImportInEs5.js +++ b/tests/baselines/reference/es6ImportNameSpaceImportInEs5.js @@ -18,7 +18,6 @@ exports.a = 10; Object.defineProperty(exports, "__esModule", { value: true }); var nameSpaceBinding = require("./es6ImportNameSpaceImportInEs5_0"); var x = nameSpaceBinding.a; -require("./es6ImportNameSpaceImportInEs5_0"); // elide this //// [es6ImportNameSpaceImportInEs5_0.d.ts] diff --git a/tests/baselines/reference/es6ImportNameSpaceImportMergeErrors.js b/tests/baselines/reference/es6ImportNameSpaceImportMergeErrors.js index cd0edc24bb8a6..1a41e265e7dfc 100644 --- a/tests/baselines/reference/es6ImportNameSpaceImportMergeErrors.js +++ b/tests/baselines/reference/es6ImportNameSpaceImportMergeErrors.js @@ -21,8 +21,4 @@ exports.a = 10; //// [es6ImportNameSpaceImportMergeErrors_1.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -require("./es6ImportNameSpaceImportMergeErrors_0"); -require("./es6ImportNameSpaceImportMergeErrors_0"); // should be error -require("./es6ImportNameSpaceImportMergeErrors_0"); // should be error -require("./es6ImportNameSpaceImportMergeErrors_0"); // should be error var nameSpaceBinding3 = 10; diff --git a/tests/baselines/reference/es6ImportNameSpaceImportNoNamedExports.js b/tests/baselines/reference/es6ImportNameSpaceImportNoNamedExports.js index 23947d9276431..760a4a9682818 100644 --- a/tests/baselines/reference/es6ImportNameSpaceImportNoNamedExports.js +++ b/tests/baselines/reference/es6ImportNameSpaceImportNoNamedExports.js @@ -14,4 +14,3 @@ module.exports = a; //// [es6ImportNameSpaceImportNoNamedExports_1.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -require("./es6ImportNameSpaceImportNoNamedExports_0"); // error diff --git a/tests/baselines/reference/es6ImportNameSpaceImportWithExport.js b/tests/baselines/reference/es6ImportNameSpaceImportWithExport.js index a2ce760a00fe6..57aa0cf0c05c3 100644 --- a/tests/baselines/reference/es6ImportNameSpaceImportWithExport.js +++ b/tests/baselines/reference/es6ImportNameSpaceImportWithExport.js @@ -16,7 +16,7 @@ define(["require", "exports"], function (require, exports) { exports.a = 10; }); //// [client.js] -define(["require", "exports", "server", "server"], function (require, exports, nameSpaceBinding) { +define(["require", "exports", "server"], function (require, exports, nameSpaceBinding) { "use strict"; exports.__esModule = true; exports.x = nameSpaceBinding.a; diff --git a/tests/baselines/reference/es6ImportNamedImport.js b/tests/baselines/reference/es6ImportNamedImport.js index ac02b81b6adce..0ce1c57403e38 100644 --- a/tests/baselines/reference/es6ImportNamedImport.js +++ b/tests/baselines/reference/es6ImportNamedImport.js @@ -54,7 +54,6 @@ exports.aaaa = 10; //// [es6ImportNamedImport_1.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -require("./es6ImportNamedImport_0"); const es6ImportNamedImport_0_1 = require("./es6ImportNamedImport_0"); var xxxx = es6ImportNamedImport_0_1.a; const es6ImportNamedImport_0_2 = require("./es6ImportNamedImport_0"); @@ -76,10 +75,6 @@ const es6ImportNamedImport_0_8 = require("./es6ImportNamedImport_0"); var z111 = es6ImportNamedImport_0_8.z1; const es6ImportNamedImport_0_9 = require("./es6ImportNamedImport_0"); var z2 = es6ImportNamedImport_0_9.z2; // z2 shouldn't give redeclare error -// These are elided -require("./es6ImportNamedImport_0"); -// These are elided -require("./es6ImportNamedImport_0"); //// [es6ImportNamedImport_0.d.ts] diff --git a/tests/baselines/reference/es6ImportNamedImportAmd.js b/tests/baselines/reference/es6ImportNamedImportAmd.js index 5118b0c5e7caf..6b7a4bd5743df 100644 --- a/tests/baselines/reference/es6ImportNamedImportAmd.js +++ b/tests/baselines/reference/es6ImportNamedImportAmd.js @@ -54,7 +54,7 @@ define(["require", "exports"], function (require, exports) { exports.aaaa = 10; }); //// [es6ImportNamedImportAmd_1.js] -define(["require", "exports", "es6ImportNamedImportAmd_0", "es6ImportNamedImportAmd_0", "es6ImportNamedImportAmd_0", "es6ImportNamedImportAmd_0", "es6ImportNamedImportAmd_0", "es6ImportNamedImportAmd_0", "es6ImportNamedImportAmd_0", "es6ImportNamedImportAmd_0", "es6ImportNamedImportAmd_0", "es6ImportNamedImportAmd_0", "es6ImportNamedImportAmd_0", "es6ImportNamedImportAmd_0"], function (require, exports, es6ImportNamedImportAmd_0_1, es6ImportNamedImportAmd_0_2, es6ImportNamedImportAmd_0_3, es6ImportNamedImportAmd_0_4, es6ImportNamedImportAmd_0_5, es6ImportNamedImportAmd_0_6, es6ImportNamedImportAmd_0_7, es6ImportNamedImportAmd_0_8, es6ImportNamedImportAmd_0_9) { +define(["require", "exports", "es6ImportNamedImportAmd_0", "es6ImportNamedImportAmd_0", "es6ImportNamedImportAmd_0", "es6ImportNamedImportAmd_0", "es6ImportNamedImportAmd_0", "es6ImportNamedImportAmd_0", "es6ImportNamedImportAmd_0", "es6ImportNamedImportAmd_0", "es6ImportNamedImportAmd_0"], function (require, exports, es6ImportNamedImportAmd_0_1, es6ImportNamedImportAmd_0_2, es6ImportNamedImportAmd_0_3, es6ImportNamedImportAmd_0_4, es6ImportNamedImportAmd_0_5, es6ImportNamedImportAmd_0_6, es6ImportNamedImportAmd_0_7, es6ImportNamedImportAmd_0_8, es6ImportNamedImportAmd_0_9) { "use strict"; exports.__esModule = true; var xxxx = es6ImportNamedImportAmd_0_1.a; diff --git a/tests/baselines/reference/es6ImportNamedImportDts.js b/tests/baselines/reference/es6ImportNamedImportDts.js index 0b6d1c9f2f4df..ea001629665db 100644 --- a/tests/baselines/reference/es6ImportNamedImportDts.js +++ b/tests/baselines/reference/es6ImportNamedImportDts.js @@ -135,7 +135,6 @@ exports.aaaa1 = aaaa1; //// [client.js] "use strict"; exports.__esModule = true; -require("./server"); var server_1 = require("./server"); exports.xxxx = new server_1.a(); var server_2 = require("./server"); @@ -157,9 +156,6 @@ var server_8 = require("./server"); exports.z111 = new server_8.z1(); var server_9 = require("./server"); exports.z2 = new server_9.z2(); // z2 shouldn't give redeclare error -// not referenced -require("./server"); -require("./server"); //// [server.d.ts] diff --git a/tests/baselines/reference/es6ImportNamedImportIdentifiersParsing.js b/tests/baselines/reference/es6ImportNamedImportIdentifiersParsing.js index 2986b559bf613..5e22dd98bd442 100644 --- a/tests/baselines/reference/es6ImportNamedImportIdentifiersParsing.js +++ b/tests/baselines/reference/es6ImportNamedImportIdentifiersParsing.js @@ -6,8 +6,3 @@ import { default as yield } from "somemodule"; // no error import { default as default } from "somemodule"; // default as is ok, error of default binding name //// [es6ImportNamedImportIdentifiersParsing.js] -import "somemodule"; // Allowed -import "somemodule"; // Error - as this is keyword that is not allowed as identifier -import "somemodule"; // error to use default as binding name -import "somemodule"; // no error -import "somemodule"; // default as is ok, error of default binding name diff --git a/tests/baselines/reference/es6ImportNamedImportInEs5.js b/tests/baselines/reference/es6ImportNamedImportInEs5.js index dfaafd1d5ce34..9226170d84b51 100644 --- a/tests/baselines/reference/es6ImportNamedImportInEs5.js +++ b/tests/baselines/reference/es6ImportNamedImportInEs5.js @@ -54,7 +54,6 @@ exports.aaaa = 10; //// [es6ImportNamedImportInEs5_1.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -require("./es6ImportNamedImportInEs5_0"); var es6ImportNamedImportInEs5_0_1 = require("./es6ImportNamedImportInEs5_0"); var xxxx = es6ImportNamedImportInEs5_0_1.a; var es6ImportNamedImportInEs5_0_2 = require("./es6ImportNamedImportInEs5_0"); @@ -76,10 +75,6 @@ var es6ImportNamedImportInEs5_0_8 = require("./es6ImportNamedImportInEs5_0"); var z111 = es6ImportNamedImportInEs5_0_8.z1; var es6ImportNamedImportInEs5_0_9 = require("./es6ImportNamedImportInEs5_0"); var z2 = es6ImportNamedImportInEs5_0_9.z2; // z2 shouldn't give redeclare error -// These are elided -require("./es6ImportNamedImportInEs5_0"); -// These are elided -require("./es6ImportNamedImportInEs5_0"); //// [es6ImportNamedImportInEs5_0.d.ts] diff --git a/tests/baselines/reference/es6ImportNamedImportMergeErrors.js b/tests/baselines/reference/es6ImportNamedImportMergeErrors.js index abbcedcabe186..61b2cbf76b3e2 100644 --- a/tests/baselines/reference/es6ImportNamedImportMergeErrors.js +++ b/tests/baselines/reference/es6ImportNamedImportMergeErrors.js @@ -29,11 +29,5 @@ exports.z1 = exports.a; //// [es6ImportNamedImportMergeErrors_1.js] "use strict"; exports.__esModule = true; -require("./es6ImportNamedImportMergeErrors_0"); -require("./es6ImportNamedImportMergeErrors_0"); -require("./es6ImportNamedImportMergeErrors_0"); // should be error var x = 10; -require("./es6ImportNamedImportMergeErrors_0"); // should be error var x44 = 10; -require("./es6ImportNamedImportMergeErrors_0"); // should be error -require("./es6ImportNamedImportMergeErrors_0"); // should be error diff --git a/tests/baselines/reference/es6ImportNamedImportNoExportMember.js b/tests/baselines/reference/es6ImportNamedImportNoExportMember.js index 11ee7f79773e4..2c8e9fe5fecfd 100644 --- a/tests/baselines/reference/es6ImportNamedImportNoExportMember.js +++ b/tests/baselines/reference/es6ImportNamedImportNoExportMember.js @@ -16,5 +16,3 @@ exports.x = exports.a; //// [es6ImportNamedImport_1.js] "use strict"; exports.__esModule = true; -require("./es6ImportNamedImportNoExportMember_0"); -require("./es6ImportNamedImportNoExportMember_0"); diff --git a/tests/baselines/reference/es6ImportNamedImportNoNamedExports.js b/tests/baselines/reference/es6ImportNamedImportNoNamedExports.js index 787467b81d892..ea0d398355ec8 100644 --- a/tests/baselines/reference/es6ImportNamedImportNoNamedExports.js +++ b/tests/baselines/reference/es6ImportNamedImportNoNamedExports.js @@ -15,5 +15,3 @@ module.exports = a; //// [es6ImportNamedImportNoNamedExports_1.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -require("./es6ImportNamedImportNoNamedExports_0"); -require("./es6ImportNamedImportNoNamedExports_0"); diff --git a/tests/baselines/reference/es6ImportNamedImportParsingError.js b/tests/baselines/reference/es6ImportNamedImportParsingError.js index 538e59ab6611b..76f14f91ff2b3 100644 --- a/tests/baselines/reference/es6ImportNamedImportParsingError.js +++ b/tests/baselines/reference/es6ImportNamedImportParsingError.js @@ -16,10 +16,8 @@ export var a = 10; export var x = a; export var m = a; //// [es6ImportNamedImportParsingError_1.js] -import * ; from; "es6ImportNamedImportParsingError_0"; -import "es6ImportNamedImportParsingError_0"; { a; } diff --git a/tests/baselines/reference/es6ImportNamedImportWithExport.js b/tests/baselines/reference/es6ImportNamedImportWithExport.js index 57729915c04fa..b864f86258ef1 100644 --- a/tests/baselines/reference/es6ImportNamedImportWithExport.js +++ b/tests/baselines/reference/es6ImportNamedImportWithExport.js @@ -53,7 +53,6 @@ exports.aaaa = 10; //// [client.js] "use strict"; exports.__esModule = true; -require("./server"); var server_1 = require("./server"); exports.xxxx = server_1.a; var server_2 = require("./server"); @@ -75,9 +74,6 @@ var server_8 = require("./server"); exports.z111 = server_8.z1; var server_9 = require("./server"); exports.z2 = server_9.z2; // z2 shouldn't give redeclare error -// Non referenced imports -require("./server"); -require("./server"); //// [server.d.ts] diff --git a/tests/baselines/reference/exportAssignmentMembersVisibleInAugmentation.js b/tests/baselines/reference/exportAssignmentMembersVisibleInAugmentation.js index 77b1d1cf13754..8690fecc969a8 100644 --- a/tests/baselines/reference/exportAssignmentMembersVisibleInAugmentation.js +++ b/tests/baselines/reference/exportAssignmentMembersVisibleInAugmentation.js @@ -22,11 +22,9 @@ declare module "foo" { //// [a.js] "use strict"; exports.__esModule = true; -require("foo"); //// [b.js] "use strict"; exports.__esModule = true; -require("foo"); //// [a.d.ts] diff --git a/tests/baselines/reference/exportAssignmentWithoutAllowSyntheticDefaultImportsError.js b/tests/baselines/reference/exportAssignmentWithoutAllowSyntheticDefaultImportsError.js index c8422563b9847..5d433cba79b71 100644 --- a/tests/baselines/reference/exportAssignmentWithoutAllowSyntheticDefaultImportsError.js +++ b/tests/baselines/reference/exportAssignmentWithoutAllowSyntheticDefaultImportsError.js @@ -10,4 +10,3 @@ import bar from './bar'; //// [bar.js] function bar() { } //// [foo.js] -import './bar'; diff --git a/tests/baselines/reference/exportClassExtendingIntersection.js b/tests/baselines/reference/exportClassExtendingIntersection.js index c4921bbe45c07..dcc2480579634 100644 --- a/tests/baselines/reference/exportClassExtendingIntersection.js +++ b/tests/baselines/reference/exportClassExtendingIntersection.js @@ -60,7 +60,6 @@ var __extends = (this && this.__extends) || (function () { }; })(); exports.__esModule = true; -require("./BaseClass"); function MyMixin(base) { return /** @class */ (function (_super) { __extends(class_1, _super); diff --git a/tests/baselines/reference/exportDeclaration.js b/tests/baselines/reference/exportDeclaration.js index 5fab92d93cffb..2699093d1323d 100644 --- a/tests/baselines/reference/exportDeclaration.js +++ b/tests/baselines/reference/exportDeclaration.js @@ -21,5 +21,4 @@ var A = /** @class */ (function () { //// [b.js] "use strict"; exports.__esModule = true; -require("./a"); new A(); diff --git a/tests/baselines/reference/exportDeclaration_moduleSpecifier.js b/tests/baselines/reference/exportDeclaration_moduleSpecifier.js index a57204c9722ad..edc093f700b89 100644 --- a/tests/baselines/reference/exportDeclaration_moduleSpecifier.js +++ b/tests/baselines/reference/exportDeclaration_moduleSpecifier.js @@ -27,5 +27,4 @@ exports.__esModule = true; //// [c.js] "use strict"; exports.__esModule = true; -require("./b"); new A(); diff --git a/tests/baselines/reference/exportDefaultInterface.js b/tests/baselines/reference/exportDefaultInterface.js index 38ac96b608be6..e7b5c945e327e 100644 --- a/tests/baselines/reference/exportDefaultInterface.js +++ b/tests/baselines/reference/exportDefaultInterface.js @@ -20,6 +20,5 @@ a.value.toExponential(); //// [b.js] "use strict"; exports.__esModule = true; -require("./a"); var a; a.value.toExponential(); diff --git a/tests/baselines/reference/exportSpellingSuggestion.js b/tests/baselines/reference/exportSpellingSuggestion.js index a1eb1ee515570..66bf80f609422 100644 --- a/tests/baselines/reference/exportSpellingSuggestion.js +++ b/tests/baselines/reference/exportSpellingSuggestion.js @@ -19,4 +19,3 @@ exports.assertNever = assertNever; //// [b.js] "use strict"; exports.__esModule = true; -require("./a"); diff --git a/tests/baselines/reference/exportsAndImportsWithContextualKeywordNames01.js b/tests/baselines/reference/exportsAndImportsWithContextualKeywordNames01.js index 7380a9f2d1467..1cd4fee3c7924 100644 --- a/tests/baselines/reference/exportsAndImportsWithContextualKeywordNames01.js +++ b/tests/baselines/reference/exportsAndImportsWithContextualKeywordNames01.js @@ -31,12 +31,9 @@ exports.get = get; //// [t2.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -require("./t1"); //// [t3.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -require("./t1"); //// [t4.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -require("./t1"); diff --git a/tests/baselines/reference/exportsAndImportsWithContextualKeywordNames02.js b/tests/baselines/reference/exportsAndImportsWithContextualKeywordNames02.js index f4a51dff60392..cf1976e5b03f2 100644 --- a/tests/baselines/reference/exportsAndImportsWithContextualKeywordNames02.js +++ b/tests/baselines/reference/exportsAndImportsWithContextualKeywordNames02.js @@ -31,8 +31,6 @@ var y = as.return; //// [t3.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -require("./t1"); //// [t4.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -require("./t1"); diff --git a/tests/baselines/reference/extendsUntypedModule.js b/tests/baselines/reference/extendsUntypedModule.js index 10562a4783a48..ff5dce7df0de5 100644 --- a/tests/baselines/reference/extendsUntypedModule.js +++ b/tests/baselines/reference/extendsUntypedModule.js @@ -31,7 +31,6 @@ var __extends = (this && this.__extends) || (function () { })(); exports.__esModule = true; var foo_1 = require("foo"); -require("bar"); // error: unused var A = /** @class */ (function (_super) { __extends(A, _super); function A() { diff --git a/tests/baselines/reference/functionAndImportNameConflict.js b/tests/baselines/reference/functionAndImportNameConflict.js index daf839ccd301d..2bc6d91b2c3e6 100644 --- a/tests/baselines/reference/functionAndImportNameConflict.js +++ b/tests/baselines/reference/functionAndImportNameConflict.js @@ -18,7 +18,6 @@ exports.f = f; //// [f2.js] "use strict"; exports.__esModule = true; -require("./f1"); function f() { } exports.f = f; diff --git a/tests/baselines/reference/generic.js b/tests/baselines/reference/generic.js index 4d52629ee8233..ba9093b688330 100644 --- a/tests/baselines/reference/generic.js +++ b/tests/baselines/reference/generic.js @@ -24,7 +24,6 @@ exports.A = A; //// [b.js] "use strict"; exports.__esModule = true; -require("./a"); var a = { a: "" }; var b = { a: 3 }; var c = {}; diff --git a/tests/baselines/reference/importCallExpressionCheckReturntype1.js b/tests/baselines/reference/importCallExpressionCheckReturntype1.js index 8fb905a6f514c..3cc4893ff6720 100644 --- a/tests/baselines/reference/importCallExpressionCheckReturntype1.js +++ b/tests/baselines/reference/importCallExpressionCheckReturntype1.js @@ -30,8 +30,6 @@ exports.C = C; //// [1.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -require("./defaultPath"); -require("./anotherModule"); let p1 = Promise.resolve().then(() => require("./defaultPath")); let p2 = Promise.resolve().then(() => require("./defaultPath")); let p3 = Promise.resolve().then(() => require("./defaultPath")); diff --git a/tests/baselines/reference/importCallExpressionDeclarationEmit3.js b/tests/baselines/reference/importCallExpressionDeclarationEmit3.js index 8dedb5abbec8b..d38c2309a3308 100644 --- a/tests/baselines/reference/importCallExpressionDeclarationEmit3.js +++ b/tests/baselines/reference/importCallExpressionDeclarationEmit3.js @@ -16,7 +16,6 @@ export var p2: Promise = import("./0"); //// [0.js] export function foo() { return "foo"; } //// [1.js] -import "./0"; import("./0"); export var p0 = import(getPath()); export var p1 = import("./0"); diff --git a/tests/baselines/reference/importCallExpressionIncorrect1.js b/tests/baselines/reference/importCallExpressionIncorrect1.js index 89393f21f575a..c007d1c8c6fe8 100644 --- a/tests/baselines/reference/importCallExpressionIncorrect1.js +++ b/tests/baselines/reference/importCallExpressionIncorrect1.js @@ -11,4 +11,3 @@ import { foo } from './0'; export function foo() { return "foo"; } //// [1.js] import ; -import './0'; diff --git a/tests/baselines/reference/importCallExpressionIncorrect2.js b/tests/baselines/reference/importCallExpressionIncorrect2.js index 7f99125d9f84d..718bef9b9a8e3 100644 --- a/tests/baselines/reference/importCallExpressionIncorrect2.js +++ b/tests/baselines/reference/importCallExpressionIncorrect2.js @@ -10,4 +10,3 @@ var x = import { foo } from './0'; export function foo() { return "foo"; } //// [1.js] var x = ; -import './0'; diff --git a/tests/baselines/reference/importCallExpressionReturnPromiseOfAny.js b/tests/baselines/reference/importCallExpressionReturnPromiseOfAny.js index 548d4dd94683e..8c94510b6095b 100644 --- a/tests/baselines/reference/importCallExpressionReturnPromiseOfAny.js +++ b/tests/baselines/reference/importCallExpressionReturnPromiseOfAny.js @@ -42,7 +42,6 @@ exports.C = C; //// [1.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -require("./defaultPath"); Promise.resolve().then(() => require(`${directory}\${moduleFile}`)); Promise.resolve().then(() => require(getSpecifier())); var p1 = Promise.resolve().then(() => require(ValidSomeCondition() ? "./0" : "externalModule")); diff --git a/tests/baselines/reference/importDeclTypes.js b/tests/baselines/reference/importDeclTypes.js index 0377eda86279f..640dd4a19b46b 100644 --- a/tests/baselines/reference/importDeclTypes.js +++ b/tests/baselines/reference/importDeclTypes.js @@ -13,4 +13,3 @@ import { Foo } from "@types/foo-bar"; //// [a.js] "use strict"; exports.__esModule = true; -require("@types/foo-bar"); diff --git a/tests/baselines/reference/importDefaultNamedType.js b/tests/baselines/reference/importDefaultNamedType.js index 0c5115f6ec944..72f4f462ce4a5 100644 --- a/tests/baselines/reference/importDefaultNamedType.js +++ b/tests/baselines/reference/importDefaultNamedType.js @@ -19,4 +19,3 @@ exports["default"] = A; //// [b.js] "use strict"; exports.__esModule = true; -require("./a"); diff --git a/tests/baselines/reference/importEmptyFromModuleNotExisted.js b/tests/baselines/reference/importEmptyFromModuleNotExisted.js index fd108f956358e..aa08db2e99e7f 100644 --- a/tests/baselines/reference/importEmptyFromModuleNotExisted.js +++ b/tests/baselines/reference/importEmptyFromModuleNotExisted.js @@ -5,4 +5,3 @@ import {} from 'module-not-existed' //// [importEmptyFromModuleNotExisted.js] "use strict"; exports.__esModule = true; -require("module-not-existed"); diff --git a/tests/baselines/reference/importWithTrailingSlash_noResolve.js b/tests/baselines/reference/importWithTrailingSlash_noResolve.js index 0c69a900fd17c..20afebedc2b1b 100644 --- a/tests/baselines/reference/importWithTrailingSlash_noResolve.js +++ b/tests/baselines/reference/importWithTrailingSlash_noResolve.js @@ -5,4 +5,3 @@ import foo from "./foo/"; //// [a.js] "use strict"; exports.__esModule = true; -require("./foo/"); diff --git a/tests/baselines/reference/inferenceLimit.js b/tests/baselines/reference/inferenceLimit.js index 3ed15784fc4b8..e27d155d6169d 100644 --- a/tests/baselines/reference/inferenceLimit.js +++ b/tests/baselines/reference/inferenceLimit.js @@ -55,7 +55,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge }); }; Object.defineProperty(exports, "__esModule", { value: true }); -require("./mymodule"); class BrokenClass { constructor() { } brokenMethod(field, value) { diff --git a/tests/baselines/reference/isolatedModulesReExportType.js b/tests/baselines/reference/isolatedModulesReExportType.js index 196c07f52877a..292eea217cf20 100644 --- a/tests/baselines/reference/isolatedModulesReExportType.js +++ b/tests/baselines/reference/isolatedModulesReExportType.js @@ -66,5 +66,3 @@ exports.C = exportValue_1.C; // OK, even though the namespace it exports is only types. var NS = require("./exportT"); exports.NS = NS; -// Error, not clear (to an isolated module) whether `T4` is a type. -require("./exportT"); diff --git a/tests/baselines/reference/jsDeclarationsFunctionLikeClasses.js b/tests/baselines/reference/jsDeclarationsFunctionLikeClasses.js index 7c8b97a601309..96b9cfbd62b5a 100644 --- a/tests/baselines/reference/jsDeclarationsFunctionLikeClasses.js +++ b/tests/baselines/reference/jsDeclarationsFunctionLikeClasses.js @@ -42,7 +42,6 @@ exports.Point = Point; //// [referencer.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -require("./source"); /** * @param {Point} p */ diff --git a/tests/baselines/reference/jsxFactoryNotIdentifierOrQualifiedName.js b/tests/baselines/reference/jsxFactoryNotIdentifierOrQualifiedName.js index 3d1d064dc085b..8e4b1d8fc12f8 100644 --- a/tests/baselines/reference/jsxFactoryNotIdentifierOrQualifiedName.js +++ b/tests/baselines/reference/jsxFactoryNotIdentifierOrQualifiedName.js @@ -70,7 +70,6 @@ function toCamelCase(text) { //// [test.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -require("./Element"); let c; class A { view() { diff --git a/tests/baselines/reference/jsxFactoryNotIdentifierOrQualifiedName2.js b/tests/baselines/reference/jsxFactoryNotIdentifierOrQualifiedName2.js index 1bd1b97725553..6c7c95e36ff1a 100644 --- a/tests/baselines/reference/jsxFactoryNotIdentifierOrQualifiedName2.js +++ b/tests/baselines/reference/jsxFactoryNotIdentifierOrQualifiedName2.js @@ -70,7 +70,6 @@ function toCamelCase(text) { //// [test.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -require("./Element"); let c; class A { view() { diff --git a/tests/baselines/reference/mergeWithImportedNamespace.js b/tests/baselines/reference/mergeWithImportedNamespace.js index 4164f5ee24f87..ff7248a68f33a 100644 --- a/tests/baselines/reference/mergeWithImportedNamespace.js +++ b/tests/baselines/reference/mergeWithImportedNamespace.js @@ -19,4 +19,3 @@ var N; //// [f2.js] "use strict"; exports.__esModule = true; -require("./f1"); diff --git a/tests/baselines/reference/mergeWithImportedType.js b/tests/baselines/reference/mergeWithImportedType.js index 50d65fcc799b4..27622372a8357 100644 --- a/tests/baselines/reference/mergeWithImportedType.js +++ b/tests/baselines/reference/mergeWithImportedType.js @@ -17,4 +17,3 @@ var E; //// [f2.js] "use strict"; exports.__esModule = true; -require("./f1"); diff --git a/tests/baselines/reference/mergedDeclarations7.js b/tests/baselines/reference/mergedDeclarations7.js index 1b25b58fcd67d..8fa3f2d0731f5 100644 --- a/tests/baselines/reference/mergedDeclarations7.js +++ b/tests/baselines/reference/mergedDeclarations7.js @@ -26,5 +26,4 @@ let p: Passport = passport.use(); "use strict"; exports.__esModule = true; var passport = require("passport"); -require("passport"); var p = passport.use(); diff --git a/tests/baselines/reference/metadataOfClassFromAlias2.js b/tests/baselines/reference/metadataOfClassFromAlias2.js index cf6e59c7aa595..c106f12edd3f7 100644 --- a/tests/baselines/reference/metadataOfClassFromAlias2.js +++ b/tests/baselines/reference/metadataOfClassFromAlias2.js @@ -35,7 +35,6 @@ var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; Object.defineProperty(exports, "__esModule", { value: true }); -require("./auxiliry"); function annotation() { return function (target) { }; } diff --git a/tests/baselines/reference/metadataOfEventAlias.js b/tests/baselines/reference/metadataOfEventAlias.js index 97332cccc25f0..fdb66aa1c7c02 100644 --- a/tests/baselines/reference/metadataOfEventAlias.js +++ b/tests/baselines/reference/metadataOfEventAlias.js @@ -26,7 +26,6 @@ var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; Object.defineProperty(exports, "__esModule", { value: true }); -require("./event"); function Input(target, key) { } var SomeClass = /** @class */ (function () { function SomeClass() { diff --git a/tests/baselines/reference/missingSemicolonInModuleSpecifier.js b/tests/baselines/reference/missingSemicolonInModuleSpecifier.js index 90734b16859d1..889f2b800be14 100644 --- a/tests/baselines/reference/missingSemicolonInModuleSpecifier.js +++ b/tests/baselines/reference/missingSemicolonInModuleSpecifier.js @@ -14,5 +14,4 @@ exports.x = 1; //// [b.js] "use strict"; exports.__esModule = true; -require("./a"); (function () { return 1; }()); diff --git a/tests/baselines/reference/moduleAugmentationCollidingNamesInAugmentation1.js b/tests/baselines/reference/moduleAugmentationCollidingNamesInAugmentation1.js index 6ba86d490181a..949a30efc8fca 100644 --- a/tests/baselines/reference/moduleAugmentationCollidingNamesInAugmentation1.js +++ b/tests/baselines/reference/moduleAugmentationCollidingNamesInAugmentation1.js @@ -50,7 +50,7 @@ define(["require", "exports", "./observable"], function (require, exports, obser observable_1.Observable.prototype.map = function () { }; }); //// [main.js] -define(["require", "exports", "./observable", "./map1", "./map2"], function (require, exports) { +define(["require", "exports", "./map1", "./map2"], function (require, exports) { "use strict"; exports.__esModule = true; var x; diff --git a/tests/baselines/reference/moduleAugmentationDeclarationEmit1.js b/tests/baselines/reference/moduleAugmentationDeclarationEmit1.js index 030ed6aa4c8bb..818c49c9edf8f 100644 --- a/tests/baselines/reference/moduleAugmentationDeclarationEmit1.js +++ b/tests/baselines/reference/moduleAugmentationDeclarationEmit1.js @@ -46,7 +46,6 @@ observable_1.Observable.prototype.map = function () { }; //// [main.js] "use strict"; exports.__esModule = true; -require("./observable"); require("./map"); var x; var y = x.map(function (x) { return x + 1; }); diff --git a/tests/baselines/reference/moduleAugmentationDisallowedExtensions.js b/tests/baselines/reference/moduleAugmentationDisallowedExtensions.js index 242ca38f6da12..02e2fb313c470 100644 --- a/tests/baselines/reference/moduleAugmentationDisallowedExtensions.js +++ b/tests/baselines/reference/moduleAugmentationDisallowedExtensions.js @@ -67,5 +67,4 @@ exports.b = 1; //// [main.js] "use strict"; exports.__esModule = true; -require("./observable"); require("./x"); diff --git a/tests/baselines/reference/moduleAugmentationDuringSyntheticDefaultCheck.js b/tests/baselines/reference/moduleAugmentationDuringSyntheticDefaultCheck.js index fc8bc1ecd6e11..a0b5e178464f5 100644 --- a/tests/baselines/reference/moduleAugmentationDuringSyntheticDefaultCheck.js +++ b/tests/baselines/reference/moduleAugmentationDuringSyntheticDefaultCheck.js @@ -37,7 +37,6 @@ import moment = require("moment-timezone"); //// [idx.js] "use strict"; exports.__esModule = true; -require("moment"); //// [idx.test.js] "use strict"; /// diff --git a/tests/baselines/reference/moduleAugmentationExtendAmbientModule1.js b/tests/baselines/reference/moduleAugmentationExtendAmbientModule1.js index c9f0b2f6bd4a9..1ef8a7cd15414 100644 --- a/tests/baselines/reference/moduleAugmentationExtendAmbientModule1.js +++ b/tests/baselines/reference/moduleAugmentationExtendAmbientModule1.js @@ -40,8 +40,6 @@ observable_1.Observable.prototype.map = function () { }; //// [main.js] "use strict"; exports.__esModule = true; -/// -require("observable"); require("./map"); var x; var y = x.map(function (x) { return x + 1; }); diff --git a/tests/baselines/reference/moduleAugmentationExtendFileModule1.js b/tests/baselines/reference/moduleAugmentationExtendFileModule1.js index 469b4a1b3a275..85b30f4d0027f 100644 --- a/tests/baselines/reference/moduleAugmentationExtendFileModule1.js +++ b/tests/baselines/reference/moduleAugmentationExtendFileModule1.js @@ -46,7 +46,6 @@ observable_1.Observable.prototype.map = function () { }; //// [main.js] "use strict"; exports.__esModule = true; -require("./observable"); require("./map"); var x; var y = x.map(function (x) { return x + 1; }); diff --git a/tests/baselines/reference/moduleAugmentationGlobal1.js b/tests/baselines/reference/moduleAugmentationGlobal1.js index 64c3e17382855..68e504d5019f2 100644 --- a/tests/baselines/reference/moduleAugmentationGlobal1.js +++ b/tests/baselines/reference/moduleAugmentationGlobal1.js @@ -29,7 +29,6 @@ exports.A = A; //// [f2.js] "use strict"; exports.__esModule = true; -require("./f1"); var x = [1]; var y = x.getA().x; diff --git a/tests/baselines/reference/moduleAugmentationGlobal2.js b/tests/baselines/reference/moduleAugmentationGlobal2.js index d182b12381305..41cf9457d2580 100644 --- a/tests/baselines/reference/moduleAugmentationGlobal2.js +++ b/tests/baselines/reference/moduleAugmentationGlobal2.js @@ -29,8 +29,6 @@ exports.A = A; //// [f2.js] "use strict"; exports.__esModule = true; -// change the shape of Array -require("./f1"); var x = [1]; var y = x.getCountAsString().toLowerCase(); diff --git a/tests/baselines/reference/moduleAugmentationGlobal3.js b/tests/baselines/reference/moduleAugmentationGlobal3.js index b722776c0b110..f1df42ad8cc8f 100644 --- a/tests/baselines/reference/moduleAugmentationGlobal3.js +++ b/tests/baselines/reference/moduleAugmentationGlobal3.js @@ -32,8 +32,6 @@ exports.A = A; //// [f2.js] "use strict"; exports.__esModule = true; -// change the shape of Array -require("./f1"); //// [f3.js] "use strict"; exports.__esModule = true; diff --git a/tests/baselines/reference/moduleAugmentationImportsAndExports1.js b/tests/baselines/reference/moduleAugmentationImportsAndExports1.js index 767cb1184452a..63e5d11072328 100644 --- a/tests/baselines/reference/moduleAugmentationImportsAndExports1.js +++ b/tests/baselines/reference/moduleAugmentationImportsAndExports1.js @@ -48,12 +48,10 @@ exports.B = B; "use strict"; exports.__esModule = true; var f1_1 = require("./f1"); -require("./f2"); f1_1.A.prototype.foo = function () { return undefined; }; //// [f4.js] "use strict"; exports.__esModule = true; -require("./f1"); require("./f3"); var a; var b = a.foo().n; diff --git a/tests/baselines/reference/moduleAugmentationImportsAndExports2.js b/tests/baselines/reference/moduleAugmentationImportsAndExports2.js index 3e460ddc5a049..9c07fcbd93394 100644 --- a/tests/baselines/reference/moduleAugmentationImportsAndExports2.js +++ b/tests/baselines/reference/moduleAugmentationImportsAndExports2.js @@ -64,7 +64,6 @@ f1_1.A.prototype.foo = function () { return undefined; }; //// [f4.js] "use strict"; exports.__esModule = true; -require("./f1"); require("./f3"); var a; var b = a.foo().n; diff --git a/tests/baselines/reference/moduleAugmentationImportsAndExports3.js b/tests/baselines/reference/moduleAugmentationImportsAndExports3.js index fdb6425895c8a..8229de12e5ffb 100644 --- a/tests/baselines/reference/moduleAugmentationImportsAndExports3.js +++ b/tests/baselines/reference/moduleAugmentationImportsAndExports3.js @@ -62,7 +62,6 @@ f1_1.A.prototype.foo = function () { return undefined; }; //// [f4.js] "use strict"; exports.__esModule = true; -require("./f1"); require("./f3"); var a; var b = a.foo().n; diff --git a/tests/baselines/reference/moduleAugmentationImportsAndExports4.js b/tests/baselines/reference/moduleAugmentationImportsAndExports4.js index 9ff2333977bf4..0bc6aea7d425a 100644 --- a/tests/baselines/reference/moduleAugmentationImportsAndExports4.js +++ b/tests/baselines/reference/moduleAugmentationImportsAndExports4.js @@ -60,12 +60,10 @@ exports.B = B; "use strict"; exports.__esModule = true; var f1_1 = require("./f1"); -require("./f2"); f1_1.A.prototype.foo = function () { return undefined; }; //// [f4.js] "use strict"; exports.__esModule = true; -require("./f1"); require("./f3"); var a; var b = a.foo().n; diff --git a/tests/baselines/reference/moduleAugmentationImportsAndExports5.js b/tests/baselines/reference/moduleAugmentationImportsAndExports5.js index c603252089a05..aa6111a807e41 100644 --- a/tests/baselines/reference/moduleAugmentationImportsAndExports5.js +++ b/tests/baselines/reference/moduleAugmentationImportsAndExports5.js @@ -60,12 +60,10 @@ exports.B = B; "use strict"; exports.__esModule = true; var f1_1 = require("./f1"); -require("./f2"); f1_1.A.prototype.foo = function () { return undefined; }; //// [f4.js] "use strict"; exports.__esModule = true; -require("./f1"); require("./f3"); var a; var b = a.foo().n; diff --git a/tests/baselines/reference/moduleAugmentationImportsAndExports6.js b/tests/baselines/reference/moduleAugmentationImportsAndExports6.js index dfe9393003860..fc4a9a4438096 100644 --- a/tests/baselines/reference/moduleAugmentationImportsAndExports6.js +++ b/tests/baselines/reference/moduleAugmentationImportsAndExports6.js @@ -60,12 +60,10 @@ exports.B = B; "use strict"; exports.__esModule = true; var f1_1 = require("./f1"); -require("./f2"); f1_1.A.prototype.foo = function () { return undefined; }; //// [f4.js] "use strict"; exports.__esModule = true; -require("./f1"); require("./f3"); var a; var b = a.foo().n; diff --git a/tests/baselines/reference/moduleAugmentationInAmbientModule1.js b/tests/baselines/reference/moduleAugmentationInAmbientModule1.js index 3e5ffe8c5e271..fe6aabc0a5eed 100644 --- a/tests/baselines/reference/moduleAugmentationInAmbientModule1.js +++ b/tests/baselines/reference/moduleAugmentationInAmbientModule1.js @@ -30,7 +30,6 @@ x.foo().x; "use strict"; /// exports.__esModule = true; -require("Observable"); var x; x.foo().x; diff --git a/tests/baselines/reference/moduleAugmentationInAmbientModule2.js b/tests/baselines/reference/moduleAugmentationInAmbientModule2.js index 04481d65c07ac..f3d276309ef27 100644 --- a/tests/baselines/reference/moduleAugmentationInAmbientModule2.js +++ b/tests/baselines/reference/moduleAugmentationInAmbientModule2.js @@ -31,7 +31,6 @@ x.foo().x; "use strict"; /// exports.__esModule = true; -require("Observable"); require("Map"); var x; x.foo().x; diff --git a/tests/baselines/reference/moduleAugmentationInAmbientModule3.js b/tests/baselines/reference/moduleAugmentationInAmbientModule3.js index 494636fff2bea..3cedfd66d5deb 100644 --- a/tests/baselines/reference/moduleAugmentationInAmbientModule3.js +++ b/tests/baselines/reference/moduleAugmentationInAmbientModule3.js @@ -41,7 +41,6 @@ x.foo2().x2; "use strict"; /// exports.__esModule = true; -require("Observable"); require("Map"); var x; x.foo().x; diff --git a/tests/baselines/reference/moduleAugmentationInAmbientModule4.js b/tests/baselines/reference/moduleAugmentationInAmbientModule4.js index 777ba7f41fbcb..ab4ff1bc79f11 100644 --- a/tests/baselines/reference/moduleAugmentationInAmbientModule4.js +++ b/tests/baselines/reference/moduleAugmentationInAmbientModule4.js @@ -44,7 +44,6 @@ x.foo2().x2; /// /// exports.__esModule = true; -require("Observable"); require("Map"); var x; x.foo().x; diff --git a/tests/baselines/reference/moduleAugmentationNoNewNames.js b/tests/baselines/reference/moduleAugmentationNoNewNames.js index 175d7c9808e47..0887377bc5895 100644 --- a/tests/baselines/reference/moduleAugmentationNoNewNames.js +++ b/tests/baselines/reference/moduleAugmentationNoNewNames.js @@ -38,7 +38,6 @@ observable_1.Observable.prototype.map = function () { }; //// [main.js] "use strict"; exports.__esModule = true; -require("./observable"); require("./map"); var x; var y = x.map(function (x) { return x + 1; }); diff --git a/tests/baselines/reference/moduleAugmentationOfAlias.js b/tests/baselines/reference/moduleAugmentationOfAlias.js index 05843508545a1..1b77eeeec1891 100644 --- a/tests/baselines/reference/moduleAugmentationOfAlias.js +++ b/tests/baselines/reference/moduleAugmentationOfAlias.js @@ -26,7 +26,6 @@ exports.__esModule = true; //// [c.js] "use strict"; exports.__esModule = true; -require("./a"); function f(i) { i.x; } diff --git a/tests/baselines/reference/moduleAugmentationsBundledOutput1.js b/tests/baselines/reference/moduleAugmentationsBundledOutput1.js index 42f58d9f7f7bf..4646709b25d9a 100644 --- a/tests/baselines/reference/moduleAugmentationsBundledOutput1.js +++ b/tests/baselines/reference/moduleAugmentationsBundledOutput1.js @@ -87,13 +87,13 @@ define("m3", ["require", "exports"], function (require, exports) { }()); exports.C2 = C2; }); -define("m4", ["require", "exports", "m1", "m3"], function (require, exports, m1_2) { +define("m4", ["require", "exports", "m1"], function (require, exports, m1_2) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); m1_2.Cls.prototype.baz1 = function () { return undefined; }; m1_2.Cls.prototype.baz2 = function () { return undefined; }; }); -define("test", ["require", "exports", "m1", "m2", "m4"], function (require, exports) { +define("test", ["require", "exports", "m2", "m4"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var c; diff --git a/tests/baselines/reference/moduleAugmentationsImports1.js b/tests/baselines/reference/moduleAugmentationsImports1.js index 410ed88ff616a..a27810927974f 100644 --- a/tests/baselines/reference/moduleAugmentationsImports1.js +++ b/tests/baselines/reference/moduleAugmentationsImports1.js @@ -63,13 +63,13 @@ define("b", ["require", "exports"], function (require, exports) { exports.B = B; }); /// -define("d", ["require", "exports", "a", "b", "C"], function (require, exports, a_1) { +define("d", ["require", "exports", "a"], function (require, exports, a_1) { "use strict"; exports.__esModule = true; a_1.A.prototype.getB = function () { return undefined; }; a_1.A.prototype.getCls = function () { return undefined; }; }); -define("main", ["require", "exports", "a", "d"], function (require, exports) { +define("main", ["require", "exports", "d"], function (require, exports) { "use strict"; exports.__esModule = true; var a; diff --git a/tests/baselines/reference/moduleAugmentationsImports2.js b/tests/baselines/reference/moduleAugmentationsImports2.js index b67bf335ae8cb..4274300a63945 100644 --- a/tests/baselines/reference/moduleAugmentationsImports2.js +++ b/tests/baselines/reference/moduleAugmentationsImports2.js @@ -68,17 +68,17 @@ define("b", ["require", "exports"], function (require, exports) { exports.B = B; }); /// -define("d", ["require", "exports", "a", "b"], function (require, exports, a_1) { +define("d", ["require", "exports", "a"], function (require, exports, a_1) { "use strict"; exports.__esModule = true; a_1.A.prototype.getB = function () { return undefined; }; }); -define("e", ["require", "exports", "a", "C"], function (require, exports, a_2) { +define("e", ["require", "exports", "a"], function (require, exports, a_2) { "use strict"; exports.__esModule = true; a_2.A.prototype.getCls = function () { return undefined; }; }); -define("main", ["require", "exports", "a", "d", "e"], function (require, exports) { +define("main", ["require", "exports", "d", "e"], function (require, exports) { "use strict"; exports.__esModule = true; var a; diff --git a/tests/baselines/reference/moduleAugmentationsImports3.js b/tests/baselines/reference/moduleAugmentationsImports3.js index 93dbce91bab04..921e65b2e0fe0 100644 --- a/tests/baselines/reference/moduleAugmentationsImports3.js +++ b/tests/baselines/reference/moduleAugmentationsImports3.js @@ -66,12 +66,12 @@ define("b", ["require", "exports"], function (require, exports) { }()); exports.B = B; }); -define("e", ["require", "exports", "a", "C"], function (require, exports, a_1) { +define("e", ["require", "exports", "a"], function (require, exports, a_1) { "use strict"; exports.__esModule = true; a_1.A.prototype.getCls = function () { return undefined; }; }); -define("main", ["require", "exports", "a", "D", "e"], function (require, exports) { +define("main", ["require", "exports", "D", "e"], function (require, exports) { "use strict"; exports.__esModule = true; var a; diff --git a/tests/baselines/reference/moduleAugmentationsImports4.js b/tests/baselines/reference/moduleAugmentationsImports4.js index f1943fa49ae20..3eea145e5f499 100644 --- a/tests/baselines/reference/moduleAugmentationsImports4.js +++ b/tests/baselines/reference/moduleAugmentationsImports4.js @@ -67,7 +67,7 @@ define("b", ["require", "exports"], function (require, exports) { }()); exports.B = B; }); -define("main", ["require", "exports", "a", "D", "E"], function (require, exports) { +define("main", ["require", "exports", "D", "E"], function (require, exports) { "use strict"; exports.__esModule = true; var a; diff --git a/tests/baselines/reference/moduleDeclarationExportStarShadowingGlobalIsNameable.js b/tests/baselines/reference/moduleDeclarationExportStarShadowingGlobalIsNameable.js index e89cf5fd97351..f123c66504d05 100644 --- a/tests/baselines/reference/moduleDeclarationExportStarShadowingGlobalIsNameable.js +++ b/tests/baselines/reference/moduleDeclarationExportStarShadowingGlobalIsNameable.js @@ -34,7 +34,6 @@ exports.__esModule = true; //// [index.js] "use strict"; exports.__esModule = true; -require("./model"); exports.func = function (account, acc2) { }; diff --git a/tests/baselines/reference/moduleLocalImportNotIncorrectlyRedirected.js b/tests/baselines/reference/moduleLocalImportNotIncorrectlyRedirected.js index 4bb96cc1ec7dc..88a0f5a10f5ef 100644 --- a/tests/baselines/reference/moduleLocalImportNotIncorrectlyRedirected.js +++ b/tests/baselines/reference/moduleLocalImportNotIncorrectlyRedirected.js @@ -21,4 +21,3 @@ import { ISpinButton } from "troublesome-lib"; //// [index.js] "use strict"; exports.__esModule = true; -require("troublesome-lib"); diff --git a/tests/baselines/reference/moduleMemberMissingErrorIsRelative.js b/tests/baselines/reference/moduleMemberMissingErrorIsRelative.js index f02663cc7206b..5a081fb924af7 100644 --- a/tests/baselines/reference/moduleMemberMissingErrorIsRelative.js +++ b/tests/baselines/reference/moduleMemberMissingErrorIsRelative.js @@ -11,4 +11,3 @@ exports.__esModule = true; //// [bar.js] "use strict"; exports.__esModule = true; -require("./foo"); diff --git a/tests/baselines/reference/moduleResolutionNoTs.js b/tests/baselines/reference/moduleResolutionNoTs.js index 096c36b62d38c..33f692396fac6 100644 --- a/tests/baselines/reference/moduleResolutionNoTs.js +++ b/tests/baselines/reference/moduleResolutionNoTs.js @@ -32,10 +32,3 @@ exports["default"] = 0; //// [user.js] "use strict"; exports.__esModule = true; -require("./x.ts"); -require("./y.tsx"); -require("./z.d.ts"); -// Making sure the suggested fixes are valid: -require("./x"); -require("./y"); -require("./z"); diff --git a/tests/baselines/reference/moduleResolutionPackageIdWithRelativeAndAbsolutePath.js b/tests/baselines/reference/moduleResolutionPackageIdWithRelativeAndAbsolutePath.js index 07842b7a843cb..9f09bea10cf20 100644 --- a/tests/baselines/reference/moduleResolutionPackageIdWithRelativeAndAbsolutePath.js +++ b/tests/baselines/reference/moduleResolutionPackageIdWithRelativeAndAbsolutePath.js @@ -42,5 +42,3 @@ import { makeSharedOption } from "@shared/lib/app"; // Includes option as module //// [/project/src/app.js] "use strict"; exports.__esModule = true; -require("anotherLib"); // Include the lib that recursively includes option as relative module resolution in this directory -require("@shared/lib/app"); // Includes option as module in shared folder but as module in node_modules folder diff --git a/tests/baselines/reference/moduleResolutionWithExtensions.js b/tests/baselines/reference/moduleResolutionWithExtensions.js index acc5f826a7192..3406bb0adaee5 100644 --- a/tests/baselines/reference/moduleResolutionWithExtensions.js +++ b/tests/baselines/reference/moduleResolutionWithExtensions.js @@ -32,13 +32,10 @@ exports["default"] = 0; //// [b.js] "use strict"; exports.__esModule = true; -require("./a"); // '.js' extension: stripped and replaced with '.ts' //// [d.js] "use strict"; exports.__esModule = true; -require("./a.js"); //// [jquery_user_1.js] "use strict"; exports.__esModule = true; -require("./jquery.js"); diff --git a/tests/baselines/reference/moduleResolutionWithExtensions_notSupported.js b/tests/baselines/reference/moduleResolutionWithExtensions_notSupported.js index 25b2af7146f5d..6771a977b3572 100644 --- a/tests/baselines/reference/moduleResolutionWithExtensions_notSupported.js +++ b/tests/baselines/reference/moduleResolutionWithExtensions_notSupported.js @@ -15,6 +15,3 @@ import js from "./js"; // OK because it's an untyped module. //// [a.js] "use strict"; exports.__esModule = true; -require("./tsx"); // Not allowed. -require("./jsx"); // Not allowed. -require("./js"); // OK because it's an untyped module. diff --git a/tests/baselines/reference/moduleResolutionWithExtensions_notSupported2.js b/tests/baselines/reference/moduleResolutionWithExtensions_notSupported2.js index 9d3af5640e1cf..a11d43d56dfe3 100644 --- a/tests/baselines/reference/moduleResolutionWithExtensions_notSupported2.js +++ b/tests/baselines/reference/moduleResolutionWithExtensions_notSupported2.js @@ -11,4 +11,3 @@ import jsx from "./jsx"; //// [a.js] "use strict"; exports.__esModule = true; -require("./jsx"); diff --git a/tests/baselines/reference/moduleResolutionWithExtensions_notSupported3.js b/tests/baselines/reference/moduleResolutionWithExtensions_notSupported3.js index 31cbbff0f13f6..1c8a2537e0fa3 100644 --- a/tests/baselines/reference/moduleResolutionWithExtensions_notSupported3.js +++ b/tests/baselines/reference/moduleResolutionWithExtensions_notSupported3.js @@ -11,4 +11,3 @@ import jsx from "./jsx"; //// [a.js] "use strict"; exports.__esModule = true; -require("./jsx"); diff --git a/tests/baselines/reference/moduleResolutionWithExtensions_preferTs.js b/tests/baselines/reference/moduleResolutionWithExtensions_preferTs.js index 45deb941a3098..b02d23302ae76 100644 --- a/tests/baselines/reference/moduleResolutionWithExtensions_preferTs.js +++ b/tests/baselines/reference/moduleResolutionWithExtensions_preferTs.js @@ -16,4 +16,3 @@ exports["default"] = 0; //// [a.js] "use strict"; exports.__esModule = true; -require("./b"); diff --git a/tests/baselines/reference/moduleResolutionWithExtensions_withAmbientPresent.js b/tests/baselines/reference/moduleResolutionWithExtensions_withAmbientPresent.js index d7e577b979dc9..3563f7db251ad 100644 --- a/tests/baselines/reference/moduleResolutionWithExtensions_withAmbientPresent.js +++ b/tests/baselines/reference/moduleResolutionWithExtensions_withAmbientPresent.js @@ -17,5 +17,3 @@ import { x } from "js"; //// [a.js] "use strict"; exports.__esModule = true; -/// -require("js"); diff --git a/tests/baselines/reference/moduleResolutionWithSymlinks.js b/tests/baselines/reference/moduleResolutionWithSymlinks.js index 773e05ee7a9fc..de15c90fdf1cf 100644 --- a/tests/baselines/reference/moduleResolutionWithSymlinks.js +++ b/tests/baselines/reference/moduleResolutionWithSymlinks.js @@ -58,8 +58,6 @@ exports.MyClass2 = library_a_1.MyClass; //// [/src/app.js] "use strict"; exports.__esModule = true; -require("./library-a"); -require("./library-b"); var x; var y; x = y; diff --git a/tests/baselines/reference/moduleResolutionWithSymlinks_withOutDir.js b/tests/baselines/reference/moduleResolutionWithSymlinks_withOutDir.js index 0328b63991124..0b7fa8fb41656 100644 --- a/tests/baselines/reference/moduleResolutionWithSymlinks_withOutDir.js +++ b/tests/baselines/reference/moduleResolutionWithSymlinks_withOutDir.js @@ -37,8 +37,6 @@ exports.MyClass2 = library_a_1.MyClass; //// [/src/bin/app.js] "use strict"; exports.__esModule = true; -require("./library-a"); -require("./library-b"); var x; var y; x = y; diff --git a/tests/baselines/reference/moduleResolution_explicitNodeModulesImport.js b/tests/baselines/reference/moduleResolution_explicitNodeModulesImport.js index 34461865dc6a5..93a083da53af6 100644 --- a/tests/baselines/reference/moduleResolution_explicitNodeModulesImport.js +++ b/tests/baselines/reference/moduleResolution_explicitNodeModulesImport.js @@ -10,4 +10,3 @@ import { x } from "../node_modules/foo"; //// [index.js] "use strict"; exports.__esModule = true; -require("../node_modules/foo"); diff --git a/tests/baselines/reference/moduleResolution_explicitNodeModulesImport_implicitAny.js b/tests/baselines/reference/moduleResolution_explicitNodeModulesImport_implicitAny.js index f27a535133d26..1b5b469570de2 100644 --- a/tests/baselines/reference/moduleResolution_explicitNodeModulesImport_implicitAny.js +++ b/tests/baselines/reference/moduleResolution_explicitNodeModulesImport_implicitAny.js @@ -10,4 +10,3 @@ import { y } from "../node_modules/foo"; //// [index.js] "use strict"; exports.__esModule = true; -require("../node_modules/foo"); diff --git a/tests/baselines/reference/moduleResolution_packageJson_notAtPackageRoot.js b/tests/baselines/reference/moduleResolution_packageJson_notAtPackageRoot.js index 8237113ec1029..941774f4d3520 100644 --- a/tests/baselines/reference/moduleResolution_packageJson_notAtPackageRoot.js +++ b/tests/baselines/reference/moduleResolution_packageJson_notAtPackageRoot.js @@ -18,4 +18,3 @@ import { x } from "foo/bar"; //// [a.js] "use strict"; exports.__esModule = true; -require("foo/bar"); diff --git a/tests/baselines/reference/moduleResolution_packageJson_notAtPackageRoot_fakeScopedPackage.js b/tests/baselines/reference/moduleResolution_packageJson_notAtPackageRoot_fakeScopedPackage.js index fd9718833486b..4539828924157 100644 --- a/tests/baselines/reference/moduleResolution_packageJson_notAtPackageRoot_fakeScopedPackage.js +++ b/tests/baselines/reference/moduleResolution_packageJson_notAtPackageRoot_fakeScopedPackage.js @@ -18,4 +18,3 @@ import { x } from "foo/@bar"; //// [a.js] "use strict"; exports.__esModule = true; -require("foo/@bar"); diff --git a/tests/baselines/reference/moduleResolution_packageJson_scopedPackage.js b/tests/baselines/reference/moduleResolution_packageJson_scopedPackage.js index 25e6af0107ecd..32495ee1ab308 100644 --- a/tests/baselines/reference/moduleResolution_packageJson_scopedPackage.js +++ b/tests/baselines/reference/moduleResolution_packageJson_scopedPackage.js @@ -13,4 +13,3 @@ import { x } from "@foo/bar"; //// [a.js] "use strict"; exports.__esModule = true; -require("@foo/bar"); diff --git a/tests/baselines/reference/moduleResolution_packageJson_yesAtPackageRoot.js b/tests/baselines/reference/moduleResolution_packageJson_yesAtPackageRoot.js index a52a5fb9d502e..ed006b0e62dcd 100644 --- a/tests/baselines/reference/moduleResolution_packageJson_yesAtPackageRoot.js +++ b/tests/baselines/reference/moduleResolution_packageJson_yesAtPackageRoot.js @@ -16,4 +16,3 @@ import { x } from "foo/bar"; //// [a.js] "use strict"; exports.__esModule = true; -require("foo/bar"); diff --git a/tests/baselines/reference/moduleResolution_packageJson_yesAtPackageRoot_fakeScopedPackage.js b/tests/baselines/reference/moduleResolution_packageJson_yesAtPackageRoot_fakeScopedPackage.js index 8c8715c5b6e21..129feb6060f24 100644 --- a/tests/baselines/reference/moduleResolution_packageJson_yesAtPackageRoot_fakeScopedPackage.js +++ b/tests/baselines/reference/moduleResolution_packageJson_yesAtPackageRoot_fakeScopedPackage.js @@ -18,4 +18,3 @@ import { x } from "foo/@bar"; //// [a.js] "use strict"; exports.__esModule = true; -require("foo/@bar"); diff --git a/tests/baselines/reference/moduleResolution_packageJson_yesAtPackageRoot_mainFieldInSubDirectory.js b/tests/baselines/reference/moduleResolution_packageJson_yesAtPackageRoot_mainFieldInSubDirectory.js index e076bbe8c863c..1aa0a624d8dbc 100644 --- a/tests/baselines/reference/moduleResolution_packageJson_yesAtPackageRoot_mainFieldInSubDirectory.js +++ b/tests/baselines/reference/moduleResolution_packageJson_yesAtPackageRoot_mainFieldInSubDirectory.js @@ -13,4 +13,3 @@ import { x } from "foo"; //// [index.js] "use strict"; exports.__esModule = true; -require("foo"); diff --git a/tests/baselines/reference/moduleResolution_relativeImportJsFile.js b/tests/baselines/reference/moduleResolution_relativeImportJsFile.js index e1966a84e8004..94984a414e271 100644 --- a/tests/baselines/reference/moduleResolution_relativeImportJsFile.js +++ b/tests/baselines/reference/moduleResolution_relativeImportJsFile.js @@ -10,4 +10,3 @@ import * as b from "./b"; //// [a.js] "use strict"; exports.__esModule = true; -require("./b"); diff --git a/tests/baselines/reference/moduleResolution_relativeImportJsFile_noImplicitAny.js b/tests/baselines/reference/moduleResolution_relativeImportJsFile_noImplicitAny.js index f8ea5f032c01d..28b512b91a4f7 100644 --- a/tests/baselines/reference/moduleResolution_relativeImportJsFile_noImplicitAny.js +++ b/tests/baselines/reference/moduleResolution_relativeImportJsFile_noImplicitAny.js @@ -10,4 +10,3 @@ import * as b from "./b"; //// [a.js] "use strict"; exports.__esModule = true; -require("./b"); diff --git a/tests/baselines/reference/namespaceMergedWithImportAliasNoCrash.js b/tests/baselines/reference/namespaceMergedWithImportAliasNoCrash.js index c0cf4cdae0ffc..866aa225db931 100644 --- a/tests/baselines/reference/namespaceMergedWithImportAliasNoCrash.js +++ b/tests/baselines/reference/namespaceMergedWithImportAliasNoCrash.js @@ -23,7 +23,6 @@ Library.foo; // should be an error //// [file2.js] "use strict"; exports.__esModule = true; -require("./file1"); var Lib; (function (Lib) { Lib.foo = ""; diff --git a/tests/baselines/reference/noBundledEmitFromNodeModules.js b/tests/baselines/reference/noBundledEmitFromNodeModules.js index da94eb4add4e9..b52a7ff9a376d 100644 --- a/tests/baselines/reference/noBundledEmitFromNodeModules.js +++ b/tests/baselines/reference/noBundledEmitFromNodeModules.js @@ -8,14 +8,11 @@ import { C } from "projB"; //// [out.js] -System.register("a", ["node_modules/projB/index"], function (exports_1, context_1) { +System.register("a", [], function (exports_1, context_1) { "use strict"; var __moduleName = context_1 && context_1.id; return { - setters: [ - function (_1) { - } - ], + setters: [], execute: function () { } }; diff --git a/tests/baselines/reference/noCrashOnImportShadowing.js b/tests/baselines/reference/noCrashOnImportShadowing.js index 3eb84c700dc70..7ca2116954d6f 100644 --- a/tests/baselines/reference/noCrashOnImportShadowing.js +++ b/tests/baselines/reference/noCrashOnImportShadowing.js @@ -39,7 +39,6 @@ B.zzz; //// [index.js] "use strict"; exports.__esModule = true; -require("./a"); var x = { x: "" }; B.zzz; var OriginalB = require("./b"); diff --git a/tests/baselines/reference/nounusedTypeParameterConstraint.js b/tests/baselines/reference/nounusedTypeParameterConstraint.js index 243b7b3f92b82..a448315fa70db 100644 --- a/tests/baselines/reference/nounusedTypeParameterConstraint.js +++ b/tests/baselines/reference/nounusedTypeParameterConstraint.js @@ -13,4 +13,3 @@ exports.__esModule = true; //// [test.js] "use strict"; exports.__esModule = true; -require("./bar"); diff --git a/tests/baselines/reference/pathMappingBasedModuleResolution8_classic.js b/tests/baselines/reference/pathMappingBasedModuleResolution8_classic.js index 56777b5e8dc2e..f8f2d9aec31db 100644 --- a/tests/baselines/reference/pathMappingBasedModuleResolution8_classic.js +++ b/tests/baselines/reference/pathMappingBasedModuleResolution8_classic.js @@ -14,7 +14,7 @@ define(["require", "exports"], function (require, exports) { exports.x = 1 + 2; }); //// [index.js] -define(["require", "exports", "@speedy/folder1/testing"], function (require, exports) { +define(["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; }); diff --git a/tests/baselines/reference/pathMappingBasedModuleResolution8_node.js b/tests/baselines/reference/pathMappingBasedModuleResolution8_node.js index 7037a9e440d25..73d51d4fcbfb8 100644 --- a/tests/baselines/reference/pathMappingBasedModuleResolution8_node.js +++ b/tests/baselines/reference/pathMappingBasedModuleResolution8_node.js @@ -14,4 +14,3 @@ exports.x = 1 + 2; //// [index.js] "use strict"; exports.__esModule = true; -require("@speedy/folder1/testing"); diff --git a/tests/baselines/reference/pathMappingBasedModuleResolution_rootImport_aliasWithRoot.js b/tests/baselines/reference/pathMappingBasedModuleResolution_rootImport_aliasWithRoot.js index fc0593dd42c96..b880a69fe2d41 100644 --- a/tests/baselines/reference/pathMappingBasedModuleResolution_rootImport_aliasWithRoot.js +++ b/tests/baselines/reference/pathMappingBasedModuleResolution_rootImport_aliasWithRoot.js @@ -24,5 +24,3 @@ exports.bar = bar; //// [a.js] "use strict"; exports.__esModule = true; -require("/foo"); -require("/bar"); diff --git a/tests/baselines/reference/pathMappingBasedModuleResolution_rootImport_aliasWithRoot_differentRootTypes.js b/tests/baselines/reference/pathMappingBasedModuleResolution_rootImport_aliasWithRoot_differentRootTypes.js index 832635069c130..a7e74a35a45e7 100644 --- a/tests/baselines/reference/pathMappingBasedModuleResolution_rootImport_aliasWithRoot_differentRootTypes.js +++ b/tests/baselines/reference/pathMappingBasedModuleResolution_rootImport_aliasWithRoot_differentRootTypes.js @@ -40,21 +40,3 @@ exports.bar = bar; //// [a.js] "use strict"; exports.__esModule = true; -require("/foo"); -require("/bar"); -require("c:/foo"); -require("c:/bar"); -require("c:\\foo"); -require("c:\\bar"); -require("//server/foo"); -require("//server/bar"); -require("\\\\server\\foo"); -require("\\\\server\\bar"); -require("file:///foo"); -require("file:///bar"); -require("file://c:/foo"); -require("file://c:/bar"); -require("file://server/foo"); -require("file://server/bar"); -require("http://server/foo"); -require("http://server/bar"); diff --git a/tests/baselines/reference/pathMappingBasedModuleResolution_rootImport_aliasWithRoot_multipleAliases.js b/tests/baselines/reference/pathMappingBasedModuleResolution_rootImport_aliasWithRoot_multipleAliases.js index 9f8346b936fdf..59b7c08567628 100644 --- a/tests/baselines/reference/pathMappingBasedModuleResolution_rootImport_aliasWithRoot_multipleAliases.js +++ b/tests/baselines/reference/pathMappingBasedModuleResolution_rootImport_aliasWithRoot_multipleAliases.js @@ -24,5 +24,3 @@ exports.bar = bar; //// [a.js] "use strict"; exports.__esModule = true; -require("/import/foo"); -require("/client/bar"); diff --git a/tests/baselines/reference/pathMappingBasedModuleResolution_rootImport_aliasWithRoot_realRootFile.js b/tests/baselines/reference/pathMappingBasedModuleResolution_rootImport_aliasWithRoot_realRootFile.js index d30cc1322ce49..aa8645bc401e7 100644 --- a/tests/baselines/reference/pathMappingBasedModuleResolution_rootImport_aliasWithRoot_realRootFile.js +++ b/tests/baselines/reference/pathMappingBasedModuleResolution_rootImport_aliasWithRoot_realRootFile.js @@ -24,5 +24,3 @@ exports.bar = bar; //// [a.js] "use strict"; exports.__esModule = true; -require("/foo"); -require("/bar"); diff --git a/tests/baselines/reference/pathMappingBasedModuleResolution_rootImport_noAliasWithRoot.js b/tests/baselines/reference/pathMappingBasedModuleResolution_rootImport_noAliasWithRoot.js index 9b1bb2988e658..bce7220d6289a 100644 --- a/tests/baselines/reference/pathMappingBasedModuleResolution_rootImport_noAliasWithRoot.js +++ b/tests/baselines/reference/pathMappingBasedModuleResolution_rootImport_noAliasWithRoot.js @@ -24,5 +24,3 @@ exports.bar = bar; //// [a.js] "use strict"; exports.__esModule = true; -require("/foo"); -require("/bar"); diff --git a/tests/baselines/reference/pathMappingBasedModuleResolution_rootImport_noAliasWithRoot_realRootFile.js b/tests/baselines/reference/pathMappingBasedModuleResolution_rootImport_noAliasWithRoot_realRootFile.js index a042e6f8dbb0b..23dd9fb91e0a4 100644 --- a/tests/baselines/reference/pathMappingBasedModuleResolution_rootImport_noAliasWithRoot_realRootFile.js +++ b/tests/baselines/reference/pathMappingBasedModuleResolution_rootImport_noAliasWithRoot_realRootFile.js @@ -24,5 +24,3 @@ exports.bar = bar; //// [a.js] "use strict"; exports.__esModule = true; -require("/foo"); -require("/bar"); diff --git a/tests/baselines/reference/pathMappingBasedModuleResolution_withExtension.js b/tests/baselines/reference/pathMappingBasedModuleResolution_withExtension.js index ad60f6a36e17a..3a31b8cd95020 100644 --- a/tests/baselines/reference/pathMappingBasedModuleResolution_withExtension.js +++ b/tests/baselines/reference/pathMappingBasedModuleResolution_withExtension.js @@ -24,5 +24,3 @@ exports.bar = bar; //// [a.js] "use strict"; exports.__esModule = true; -require("foo"); -require("bar"); diff --git a/tests/baselines/reference/pathMappingBasedModuleResolution_withExtensionInName.js b/tests/baselines/reference/pathMappingBasedModuleResolution_withExtensionInName.js index c88a95e6a7e57..c54c0ba61ed26 100644 --- a/tests/baselines/reference/pathMappingBasedModuleResolution_withExtensionInName.js +++ b/tests/baselines/reference/pathMappingBasedModuleResolution_withExtensionInName.js @@ -14,5 +14,3 @@ import { y } from "zone.tsx"; //// [a.js] "use strict"; exports.__esModule = true; -require("zone.js"); -require("zone.tsx"); diff --git a/tests/baselines/reference/pathMappingBasedModuleResolution_withExtension_MapedToNodeModules.js b/tests/baselines/reference/pathMappingBasedModuleResolution_withExtension_MapedToNodeModules.js index b12f636dc62a3..b7f90ca24d1b1 100644 --- a/tests/baselines/reference/pathMappingBasedModuleResolution_withExtension_MapedToNodeModules.js +++ b/tests/baselines/reference/pathMappingBasedModuleResolution_withExtension_MapedToNodeModules.js @@ -10,4 +10,3 @@ import foobar from "foo/bar/foobar.js"; //// [/bin/a.js] "use strict"; exports.__esModule = true; -require("foo/bar/foobar.js"); diff --git a/tests/baselines/reference/pathMappingBasedModuleResolution_withExtension_failedLookup.js b/tests/baselines/reference/pathMappingBasedModuleResolution_withExtension_failedLookup.js index 42460f507594d..e40fe32f46bfe 100644 --- a/tests/baselines/reference/pathMappingBasedModuleResolution_withExtension_failedLookup.js +++ b/tests/baselines/reference/pathMappingBasedModuleResolution_withExtension_failedLookup.js @@ -5,4 +5,3 @@ import { foo } from "foo"; //// [a.js] "use strict"; exports.__esModule = true; -require("foo"); diff --git a/tests/baselines/reference/project/declarationDir/amd/a.js b/tests/baselines/reference/project/declarationDir/amd/a.js index 46d5f851bfb2d..7dead9acfe131 100644 --- a/tests/baselines/reference/project/declarationDir/amd/a.js +++ b/tests/baselines/reference/project/declarationDir/amd/a.js @@ -1,4 +1,4 @@ -define(["require", "exports", "./subfolder/b"], function (require, exports) { +define(["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; var A = /** @class */ (function () { diff --git a/tests/baselines/reference/project/declarationDir/amd/subfolder/c.js b/tests/baselines/reference/project/declarationDir/amd/subfolder/c.js index 7bcf01c6e9676..20ccddc05bfc5 100644 --- a/tests/baselines/reference/project/declarationDir/amd/subfolder/c.js +++ b/tests/baselines/reference/project/declarationDir/amd/subfolder/c.js @@ -1,4 +1,4 @@ -define(["require", "exports", "../a"], function (require, exports) { +define(["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; var C = /** @class */ (function () { diff --git a/tests/baselines/reference/project/declarationDir/node/a.js b/tests/baselines/reference/project/declarationDir/node/a.js index 8dc1ce9605882..e1197274fb98a 100644 --- a/tests/baselines/reference/project/declarationDir/node/a.js +++ b/tests/baselines/reference/project/declarationDir/node/a.js @@ -1,6 +1,5 @@ "use strict"; exports.__esModule = true; -require("./subfolder/b"); var A = /** @class */ (function () { function A() { } diff --git a/tests/baselines/reference/project/declarationDir/node/subfolder/c.js b/tests/baselines/reference/project/declarationDir/node/subfolder/c.js index dca2230dac30e..22e264212b799 100644 --- a/tests/baselines/reference/project/declarationDir/node/subfolder/c.js +++ b/tests/baselines/reference/project/declarationDir/node/subfolder/c.js @@ -1,6 +1,5 @@ "use strict"; exports.__esModule = true; -require("../a"); var C = /** @class */ (function () { function C() { } diff --git a/tests/baselines/reference/project/declarationDir2/amd/out/a.js b/tests/baselines/reference/project/declarationDir2/amd/out/a.js index 46d5f851bfb2d..7dead9acfe131 100644 --- a/tests/baselines/reference/project/declarationDir2/amd/out/a.js +++ b/tests/baselines/reference/project/declarationDir2/amd/out/a.js @@ -1,4 +1,4 @@ -define(["require", "exports", "./subfolder/b"], function (require, exports) { +define(["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; var A = /** @class */ (function () { diff --git a/tests/baselines/reference/project/declarationDir2/amd/out/subfolder/c.js b/tests/baselines/reference/project/declarationDir2/amd/out/subfolder/c.js index 7bcf01c6e9676..20ccddc05bfc5 100644 --- a/tests/baselines/reference/project/declarationDir2/amd/out/subfolder/c.js +++ b/tests/baselines/reference/project/declarationDir2/amd/out/subfolder/c.js @@ -1,4 +1,4 @@ -define(["require", "exports", "../a"], function (require, exports) { +define(["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; var C = /** @class */ (function () { diff --git a/tests/baselines/reference/project/declarationDir2/node/out/a.js b/tests/baselines/reference/project/declarationDir2/node/out/a.js index 8dc1ce9605882..e1197274fb98a 100644 --- a/tests/baselines/reference/project/declarationDir2/node/out/a.js +++ b/tests/baselines/reference/project/declarationDir2/node/out/a.js @@ -1,6 +1,5 @@ "use strict"; exports.__esModule = true; -require("./subfolder/b"); var A = /** @class */ (function () { function A() { } diff --git a/tests/baselines/reference/project/declarationDir2/node/out/subfolder/c.js b/tests/baselines/reference/project/declarationDir2/node/out/subfolder/c.js index dca2230dac30e..22e264212b799 100644 --- a/tests/baselines/reference/project/declarationDir2/node/out/subfolder/c.js +++ b/tests/baselines/reference/project/declarationDir2/node/out/subfolder/c.js @@ -1,6 +1,5 @@ "use strict"; exports.__esModule = true; -require("../a"); var C = /** @class */ (function () { function C() { } diff --git a/tests/baselines/reference/project/declarationDir3/amd/out.js b/tests/baselines/reference/project/declarationDir3/amd/out.js index 1e131fd8658d4..e103f2af4c574 100644 --- a/tests/baselines/reference/project/declarationDir3/amd/out.js +++ b/tests/baselines/reference/project/declarationDir3/amd/out.js @@ -8,7 +8,7 @@ define("subfolder/b", ["require", "exports"], function (require, exports) { }()); exports.B = B; }); -define("a", ["require", "exports", "subfolder/b"], function (require, exports) { +define("a", ["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; var A = /** @class */ (function () { @@ -18,7 +18,7 @@ define("a", ["require", "exports", "subfolder/b"], function (require, exports) { }()); exports.A = A; }); -define("subfolder/c", ["require", "exports", "a"], function (require, exports) { +define("subfolder/c", ["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; var C = /** @class */ (function () { diff --git a/tests/baselines/reference/project/nodeModulesImportHigher/amd/importHigher/root.js b/tests/baselines/reference/project/nodeModulesImportHigher/amd/importHigher/root.js index a1b69f8b5613f..65e3b33be1a80 100644 --- a/tests/baselines/reference/project/nodeModulesImportHigher/amd/importHigher/root.js +++ b/tests/baselines/reference/project/nodeModulesImportHigher/amd/importHigher/root.js @@ -1,4 +1,4 @@ -define(["require", "exports", "m1", "m2"], function (require, exports, m1) { +define(["require", "exports", "m1"], function (require, exports, m1) { "use strict"; exports.__esModule = true; m1.f1("test"); diff --git a/tests/baselines/reference/project/nodeModulesImportHigher/node/importHigher/root.js b/tests/baselines/reference/project/nodeModulesImportHigher/node/importHigher/root.js index 27a110657bc07..4fc36cd0222e6 100644 --- a/tests/baselines/reference/project/nodeModulesImportHigher/node/importHigher/root.js +++ b/tests/baselines/reference/project/nodeModulesImportHigher/node/importHigher/root.js @@ -1,7 +1,6 @@ "use strict"; exports.__esModule = true; var m1 = require("m1"); -require("m2"); m1.f1("test"); m1.f2.a = 10; m1.f2.person.age = "10"; // Error: Should be number (if direct import of m2 made the m3 module visible). diff --git a/tests/baselines/reference/reexportWrittenCorrectlyInDeclaration.js b/tests/baselines/reference/reexportWrittenCorrectlyInDeclaration.js index 2803e2cb7eab7..ae3ce21ff4924 100644 --- a/tests/baselines/reference/reexportWrittenCorrectlyInDeclaration.js +++ b/tests/baselines/reference/reexportWrittenCorrectlyInDeclaration.js @@ -47,7 +47,6 @@ exports.ThingB = ThingB_1.ThingB; //// [Test.js] "use strict"; exports.__esModule = true; -require("./Things"); var Test = /** @class */ (function () { function Test() { this.method = function (input) { }; diff --git a/tests/baselines/reference/relativeNamesInClassicResolution.js b/tests/baselines/reference/relativeNamesInClassicResolution.js index 999ec91f63916..cb7616243ef4e 100644 --- a/tests/baselines/reference/relativeNamesInClassicResolution.js +++ b/tests/baselines/reference/relativeNamesInClassicResolution.js @@ -7,7 +7,7 @@ import {x} from "./b" export let x = 1; //// [a.js] -define(["require", "exports", "./b"], function (require, exports) { +define(["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; }); diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleEmitNone.js b/tests/baselines/reference/requireOfJsonFileWithModuleEmitNone.js index b426341357a6d..a94bdd896dddd 100644 --- a/tests/baselines/reference/requireOfJsonFileWithModuleEmitNone.js +++ b/tests/baselines/reference/requireOfJsonFileWithModuleEmitNone.js @@ -12,4 +12,3 @@ import * as b from './b.json'; //// [out/file1.js] "use strict"; exports.__esModule = true; -require("./b.json"); diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleEmitUndefined.js b/tests/baselines/reference/requireOfJsonFileWithModuleEmitUndefined.js index 96751ec8e68eb..84b0acc7733cb 100644 --- a/tests/baselines/reference/requireOfJsonFileWithModuleEmitUndefined.js +++ b/tests/baselines/reference/requireOfJsonFileWithModuleEmitUndefined.js @@ -17,4 +17,3 @@ import * as b from './b.json'; //// [out/file1.js] "use strict"; exports.__esModule = true; -require("./b.json"); diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitAmd.js b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitAmd.js index 0368599a36270..53abd96568028 100644 --- a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitAmd.js +++ b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitAmd.js @@ -15,7 +15,7 @@ import * as b from './b.json'; "b": "hello" } //// [out/file1.js] -define(["require", "exports", "./b.json"], function (require, exports) { +define(["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; }); diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitAmdOutFile.js b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitAmdOutFile.js index bb333561a2877..f6aa6d997be89 100644 --- a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitAmdOutFile.js +++ b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitAmdOutFile.js @@ -14,7 +14,7 @@ define("b", [], { "a": true, "b": "hello" }); -define("file1", ["require", "exports", "b"], function (require, exports) { +define("file1", ["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; }); diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitEs2015.js b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitEs2015.js index 6c3bb671800e5..12d02801bb242 100644 --- a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitEs2015.js +++ b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitEs2015.js @@ -15,4 +15,3 @@ import * as b from './b.json'; "b": "hello" } //// [out/file1.js] -import './b.json'; diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitEsNext.js b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitEsNext.js index df148813cb656..f3bcbc546fee1 100644 --- a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitEsNext.js +++ b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitEsNext.js @@ -15,4 +15,3 @@ import * as b from './b.json'; "b": "hello" } //// [out/file1.js] -import './b.json'; diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitNone.js b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitNone.js index 30d25c693c268..06d357e708983 100644 --- a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitNone.js +++ b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitNone.js @@ -17,4 +17,3 @@ import * as b from './b.json'; //// [out/file1.js] "use strict"; exports.__esModule = true; -require("./b.json"); diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitSystem.js b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitSystem.js index 9502313c4dbcc..5174a101848c7 100644 --- a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitSystem.js +++ b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitSystem.js @@ -15,14 +15,11 @@ import * as b from './b.json'; "b": "hello" } //// [out/file1.js] -System.register(["./b.json"], function (exports_1, context_1) { +System.register([], function (exports_1, context_1) { "use strict"; var __moduleName = context_1 && context_1.id; return { - setters: [ - function (_1) { - } - ], + setters: [], execute: function () { } }; diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitUmd.js b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitUmd.js index 08e317a03d282..9aaecbdbef46b 100644 --- a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitUmd.js +++ b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitUmd.js @@ -21,10 +21,9 @@ import * as b from './b.json'; if (v !== undefined) module.exports = v; } else if (typeof define === "function" && define.amd) { - define(["require", "exports", "./b.json"], factory); + define(["require", "exports"], factory); } })(function (require, exports) { "use strict"; exports.__esModule = true; - require("./b.json"); }); diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitUndefined.js b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitUndefined.js index 7bbce03df4588..ce1abb0d4d635 100644 --- a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitUndefined.js +++ b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitUndefined.js @@ -17,4 +17,3 @@ import * as b from './b.json'; //// [out/file1.js] "use strict"; exports.__esModule = true; -require("./b.json"); diff --git a/tests/baselines/reference/requireOfJsonFileWithoutEsModuleInterop.js b/tests/baselines/reference/requireOfJsonFileWithoutEsModuleInterop.js index 4035f6481701b..ea5ac25b1b534 100644 --- a/tests/baselines/reference/requireOfJsonFileWithoutEsModuleInterop.js +++ b/tests/baselines/reference/requireOfJsonFileWithoutEsModuleInterop.js @@ -17,4 +17,3 @@ import * as test from "./test.json" //// [out/file1.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -require("./test.json"); diff --git a/tests/baselines/reference/requireOfJsonFileWithoutResolveJsonModuleAndPathMapping.js b/tests/baselines/reference/requireOfJsonFileWithoutResolveJsonModuleAndPathMapping.js index 13f9dafd3422a..bda2f7194d3c5 100644 --- a/tests/baselines/reference/requireOfJsonFileWithoutResolveJsonModuleAndPathMapping.js +++ b/tests/baselines/reference/requireOfJsonFileWithoutResolveJsonModuleAndPathMapping.js @@ -10,4 +10,3 @@ import foobar from "foo/bar/foobar.json"; //// [/bin/a.js] "use strict"; exports.__esModule = true; -require("foo/bar/foobar.json"); diff --git a/tests/baselines/reference/reservedWords2.js b/tests/baselines/reference/reservedWords2.js index 5265f9f5cbdaa..49a680085ee25 100644 --- a/tests/baselines/reference/reservedWords2.js +++ b/tests/baselines/reference/reservedWords2.js @@ -20,7 +20,6 @@ exports.__esModule = true; require(); while ( = require("dfdf")) ; -require(); while (from) "foo"; var ; diff --git a/tests/baselines/reference/scopedPackages.js b/tests/baselines/reference/scopedPackages.js index 7d0320873a0af..75606d2e1b9e7 100644 --- a/tests/baselines/reference/scopedPackages.js +++ b/tests/baselines/reference/scopedPackages.js @@ -18,6 +18,3 @@ import { z } from "@be/bop/e/z"; //// [a.js] "use strict"; exports.__esModule = true; -require("@cow/boy"); -require("@be/bop"); -require("@be/bop/e/z"); diff --git a/tests/baselines/reference/scopedPackagesClassic.js b/tests/baselines/reference/scopedPackagesClassic.js index 30778d001b0e8..f42acde230623 100644 --- a/tests/baselines/reference/scopedPackagesClassic.js +++ b/tests/baselines/reference/scopedPackagesClassic.js @@ -10,4 +10,3 @@ import { x } from "@see/saw"; //// [a.js] "use strict"; exports.__esModule = true; -require("@see/saw"); diff --git a/tests/baselines/reference/showConfig/Shows tsconfig for single option/preserveUnusedImports/tsconfig.json b/tests/baselines/reference/showConfig/Shows tsconfig for single option/preserveUnusedImports/tsconfig.json new file mode 100644 index 0000000000000..a276f50446e87 --- /dev/null +++ b/tests/baselines/reference/showConfig/Shows tsconfig for single option/preserveUnusedImports/tsconfig.json @@ -0,0 +1,5 @@ +{ + "compilerOptions": { + "preserveUnusedImports": true + } +} diff --git a/tests/baselines/reference/showConfig/Shows tsconfig for single option/removeUnusedImports/tsconfig.json b/tests/baselines/reference/showConfig/Shows tsconfig for single option/removeUnusedImports/tsconfig.json deleted file mode 100644 index 5b71b622dc9d0..0000000000000 --- a/tests/baselines/reference/showConfig/Shows tsconfig for single option/removeUnusedImports/tsconfig.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "compilerOptions": { - "removeUnusedImports": true - } -} diff --git a/tests/baselines/reference/strictModeWordInImportDeclaration.js b/tests/baselines/reference/strictModeWordInImportDeclaration.js index 8994d33903cdb..4a335d8a744d9 100644 --- a/tests/baselines/reference/strictModeWordInImportDeclaration.js +++ b/tests/baselines/reference/strictModeWordInImportDeclaration.js @@ -6,6 +6,3 @@ import public from "./1" //// [strictModeWordInImportDeclaration.js] "use strict"; -import "./1"; -import "./1"; -import "./1"; diff --git a/tests/baselines/reference/symbolLinkDeclarationEmitModuleNames.js b/tests/baselines/reference/symbolLinkDeclarationEmitModuleNames.js index ec9a377a05e8b..8cf2fab6fb4b5 100644 --- a/tests/baselines/reference/symbolLinkDeclarationEmitModuleNames.js +++ b/tests/baselines/reference/symbolLinkDeclarationEmitModuleNames.js @@ -30,7 +30,6 @@ exports.__esModule = true; //// [bindingkey.js] "use strict"; exports.__esModule = true; -require("@loopback/context"); var BindingKey = /** @class */ (function () { function BindingKey() { } @@ -50,11 +49,9 @@ __export(require("./src/bindingkey")); //// [application.js] "use strict"; exports.__esModule = true; -require("@loopback/context"); //// [usage.js] "use strict"; exports.__esModule = true; -require("./application"); var context_1 = require("@loopback/context"); exports.CONTROLLER_CLASS = context_1.BindingKey.create(null); // line in question diff --git a/tests/baselines/reference/symbolLinkDeclarationEmitModuleNamesRootDir.js b/tests/baselines/reference/symbolLinkDeclarationEmitModuleNamesRootDir.js index c14c69cc75ce4..95b245269554b 100644 --- a/tests/baselines/reference/symbolLinkDeclarationEmitModuleNamesRootDir.js +++ b/tests/baselines/reference/symbolLinkDeclarationEmitModuleNamesRootDir.js @@ -27,11 +27,9 @@ export const CONTROLLER_CLASS = BindingKey.create(null as any); //// [application.js] "use strict"; exports.__esModule = true; -require("@loopback/context"); //// [usage.js] "use strict"; exports.__esModule = true; -require("./application"); var context_1 = require("@loopback/context"); exports.CONTROLLER_CLASS = context_1.BindingKey.create(null); // line in question diff --git a/tests/baselines/reference/symbolMergeValueAndImportedType.js b/tests/baselines/reference/symbolMergeValueAndImportedType.js index f0080a8b897e0..70da47268d5e4 100644 --- a/tests/baselines/reference/symbolMergeValueAndImportedType.js +++ b/tests/baselines/reference/symbolMergeValueAndImportedType.js @@ -13,6 +13,5 @@ Object.defineProperty(exports, "__esModule", { value: true }); //// [main.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -require("./other"); const X = 42; console.log('X is ' + X); diff --git a/tests/baselines/reference/systemExportAssignment.js b/tests/baselines/reference/systemExportAssignment.js index ebe8254144008..8878da7b57be7 100644 --- a/tests/baselines/reference/systemExportAssignment.js +++ b/tests/baselines/reference/systemExportAssignment.js @@ -9,14 +9,11 @@ import * as a from "a"; //// [b.js] -System.register(["a"], function (exports_1, context_1) { +System.register([], function (exports_1, context_1) { "use strict"; var __moduleName = context_1 && context_1.id; return { - setters: [ - function (_1) { - } - ], + setters: [], execute: function () { } }; diff --git a/tests/baselines/reference/systemExportAssignment2.js b/tests/baselines/reference/systemExportAssignment2.js index 389d36e219c45..f4d56cffa6ca6 100644 --- a/tests/baselines/reference/systemExportAssignment2.js +++ b/tests/baselines/reference/systemExportAssignment2.js @@ -21,14 +21,11 @@ System.register([], function (exports_1, context_1) { }; }); //// [b.js] -System.register(["a"], function (exports_1, context_1) { +System.register([], function (exports_1, context_1) { "use strict"; var __moduleName = context_1 && context_1.id; return { - setters: [ - function (_1) { - } - ], + setters: [], execute: function () { } }; diff --git a/tests/baselines/reference/systemExportAssignment3.js b/tests/baselines/reference/systemExportAssignment3.js index 530074be03b30..5c59fdf21e4fd 100644 --- a/tests/baselines/reference/systemExportAssignment3.js +++ b/tests/baselines/reference/systemExportAssignment3.js @@ -11,14 +11,11 @@ import * as a from "a"; //// [b.js] -System.register(["a"], function (exports_1, context_1) { +System.register([], function (exports_1, context_1) { "use strict"; var __moduleName = context_1 && context_1.id; return { - setters: [ - function (_1) { - } - ], + setters: [], execute: function () { } }; diff --git a/tests/baselines/reference/systemModule12.js b/tests/baselines/reference/systemModule12.js index a37894fbd4213..272e1349c1aec 100644 --- a/tests/baselines/reference/systemModule12.js +++ b/tests/baselines/reference/systemModule12.js @@ -4,14 +4,11 @@ import n from 'file1' //// [systemModule12.js] -System.register("NamedModule", ["file1"], function (exports_1, context_1) { +System.register("NamedModule", [], function (exports_1, context_1) { "use strict"; var __moduleName = context_1 && context_1.id; return { - setters: [ - function (_1) { - } - ], + setters: [], execute: function () { } }; diff --git a/tests/baselines/reference/systemModule15.js b/tests/baselines/reference/systemModule15.js index c54ab1ac1cf63..e24403b9c031c 100644 --- a/tests/baselines/reference/systemModule15.js +++ b/tests/baselines/reference/systemModule15.js @@ -54,7 +54,7 @@ System.register([], function (exports_1, context_1) { }; }); //// [file2.js] -System.register(["./file3", "./file4"], function (exports_1, context_1) { +System.register(["./file3"], function (exports_1, context_1) { "use strict"; var moduleCStar, file3_1, file3_2; var __moduleName = context_1 && context_1.id; @@ -64,8 +64,6 @@ System.register(["./file3", "./file4"], function (exports_1, context_1) { moduleCStar = moduleCStar_1; file3_1 = moduleCStar_1; file3_2 = moduleCStar_1; - }, - function (_1) { } ], execute: function () { diff --git a/tests/baselines/reference/transformApi/transformsCorrectly.transformAddCommentToImport.js b/tests/baselines/reference/transformApi/transformsCorrectly.transformAddCommentToImport.js index b1121dbd99f15..de19b854d20a7 100644 --- a/tests/baselines/reference/transformApi/transformsCorrectly.transformAddCommentToImport.js +++ b/tests/baselines/reference/transformApi/transformsCorrectly.transformAddCommentToImport.js @@ -7,8 +7,6 @@ Object.defineProperty(exports, "__esModule", { value: true }); var somewhere_1 = require("somewhere"); exports.Value = somewhere_1.Value; /*comment*/ -require("somewhere"); -/*comment*/ var somewhere_2 = require("somewhere"); /*comment*/ exports.X = somewhere_2.X; diff --git a/tests/baselines/reference/transpile/Generates no diagnostics for missing module imports.js b/tests/baselines/reference/transpile/Generates no diagnostics for missing module imports.js index 878fa1b43b059..e9493d9d5917d 100644 --- a/tests/baselines/reference/transpile/Generates no diagnostics for missing module imports.js +++ b/tests/baselines/reference/transpile/Generates no diagnostics for missing module imports.js @@ -1,4 +1,3 @@ "use strict"; exports.__esModule = true; -require("module2"); //# sourceMappingURL=file.js.map \ No newline at end of file diff --git a/tests/baselines/reference/transpile/Generates no diagnostics for missing module imports.oldTranspile.js b/tests/baselines/reference/transpile/Generates no diagnostics for missing module imports.oldTranspile.js index 878fa1b43b059..e9493d9d5917d 100644 --- a/tests/baselines/reference/transpile/Generates no diagnostics for missing module imports.oldTranspile.js +++ b/tests/baselines/reference/transpile/Generates no diagnostics for missing module imports.oldTranspile.js @@ -1,4 +1,3 @@ "use strict"; exports.__esModule = true; -require("module2"); //# sourceMappingURL=file.js.map \ No newline at end of file diff --git a/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-declaration-doesnt-change/modules-and-globals-mixed-in-amd.js b/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-declaration-doesnt-change/modules-and-globals-mixed-in-amd.js index 33321a70669e6..f7e72a97df55b 100644 --- a/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-declaration-doesnt-change/modules-and-globals-mixed-in-amd.js +++ b/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-declaration-doesnt-change/modules-and-globals-mixed-in-amd.js @@ -31,7 +31,7 @@ define("file2", ["require", "exports"], function (require, exports) { exports.y = 20; }); var globalConst = 10; -define("file3", ["require", "exports", "file1"], function (require, exports) { +define("file3", ["require", "exports"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; @@ -168,7 +168,7 @@ sourceFile:../lib/global.ts 4 > ^^^ 5 > ^^ 6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> 1 > 2 >const 3 > globalConst @@ -186,7 +186,7 @@ sourceFile:../lib/global.ts emittedFile:/src/app/module.js sourceFile:file3.ts ------------------------------------------------------------------- ->>>define("file3", ["require", "exports", "file1"], function (require, exports) { +>>>define("file3", ["require", "exports"], function (require, exports) { >>> "use strict"; >>> Object.defineProperty(exports, "__esModule", { value: true }); >>> exports.z = 30; @@ -262,7 +262,7 @@ sourceFile:file4.ts }, { "pos": 438, - "end": 648, + "end": 639, "kind": "text" } ] @@ -315,8 +315,8 @@ define("file2", ["require", "exports"], function (require, exports) { var globalConst = 10; ---------------------------------------------------------------------- -text: (438-648) -define("file3", ["require", "exports", "file1"], function (require, exports) { +text: (438-639) +define("file3", ["require", "exports"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; diff --git a/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-declaration-doesnt-change/multiple-emitHelpers-in-all-projects.js b/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-declaration-doesnt-change/multiple-emitHelpers-in-all-projects.js index d24dc78cc7a78..a8031f007545c 100644 --- a/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-declaration-doesnt-change/multiple-emitHelpers-in-all-projects.js +++ b/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-declaration-doesnt-change/multiple-emitHelpers-in-all-projects.js @@ -72,7 +72,7 @@ define("file2", ["require", "exports"], function (require, exports) { exports.y = 20; }); var globalConst = 10; -define("file3", ["require", "exports", "file1"], function (require, exports) { +define("file3", ["require", "exports"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; @@ -395,7 +395,7 @@ sourceFile:../lib/global.ts 4 > ^^^ 5 > ^^ 6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> 1 > 2 >const 3 > globalConst @@ -413,7 +413,7 @@ sourceFile:../lib/global.ts emittedFile:/src/app/module.js sourceFile:file3.ts ------------------------------------------------------------------- ->>>define("file3", ["require", "exports", "file1"], function (require, exports) { +>>>define("file3", ["require", "exports"], function (require, exports) { >>> "use strict"; >>> Object.defineProperty(exports, "__esModule", { value: true }); >>> exports.z = 30; @@ -652,7 +652,7 @@ sourceFile:file4.ts }, { "pos": 1935, - "end": 2462, + "end": 2453, "kind": "text" } ], @@ -759,8 +759,8 @@ define("file2", ["require", "exports"], function (require, exports) { var globalConst = 10; ---------------------------------------------------------------------- -text: (1935-2462) -define("file3", ["require", "exports", "file1"], function (require, exports) { +text: (1935-2453) +define("file3", ["require", "exports"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; diff --git a/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-declaration-doesnt-change/multiple-prologues-in-all-projects.js b/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-declaration-doesnt-change/multiple-prologues-in-all-projects.js index 8a9251a6a7776..20b15b4d8803a 100644 --- a/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-declaration-doesnt-change/multiple-prologues-in-all-projects.js +++ b/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-declaration-doesnt-change/multiple-prologues-in-all-projects.js @@ -36,7 +36,7 @@ define("file2", ["require", "exports"], function (require, exports) { exports.y = 20; }); var globalConst = 10; -define("file3", ["require", "exports", "file1"], function (require, exports) { +define("file3", ["require", "exports"], function (require, exports) { "use strict"; "myPrologue"; Object.defineProperty(exports, "__esModule", { value: true }); @@ -237,7 +237,7 @@ sourceFile:../lib/global.ts 4 > ^^^ 5 > ^^ 6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> 1 >"myPrologue3" > 2 >const @@ -256,7 +256,7 @@ sourceFile:../lib/global.ts emittedFile:/src/app/module.js sourceFile:file3.ts ------------------------------------------------------------------- ->>>define("file3", ["require", "exports", "file1"], function (require, exports) { +>>>define("file3", ["require", "exports"], function (require, exports) { >>> "use strict"; >>> "myPrologue"; 1->^^^^ @@ -370,7 +370,7 @@ sourceFile:file4.ts }, { "pos": 523, - "end": 752, + "end": 743, "kind": "text" } ], @@ -464,8 +464,8 @@ define("file2", ["require", "exports"], function (require, exports) { var globalConst = 10; ---------------------------------------------------------------------- -text: (523-752) -define("file3", ["require", "exports", "file1"], function (require, exports) { +text: (523-743) +define("file3", ["require", "exports"], function (require, exports) { "use strict"; "myPrologue"; Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-declaration-doesnt-change/shebang-in-all-projects.js b/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-declaration-doesnt-change/shebang-in-all-projects.js index eb9576201a623..8edcec79d8bff 100644 --- a/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-declaration-doesnt-change/shebang-in-all-projects.js +++ b/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-declaration-doesnt-change/shebang-in-all-projects.js @@ -32,7 +32,7 @@ define("file2", ["require", "exports"], function (require, exports) { exports.y = 20; }); var globalConst = 10; -define("file3", ["require", "exports", "file1"], function (require, exports) { +define("file3", ["require", "exports"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; @@ -172,7 +172,7 @@ sourceFile:../lib/global.ts 4 > ^^^ 5 > ^^ 6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> 1 > 2 >const 3 > globalConst @@ -190,7 +190,7 @@ sourceFile:../lib/global.ts emittedFile:/src/app/module.js sourceFile:file3.ts ------------------------------------------------------------------- ->>>define("file3", ["require", "exports", "file1"], function (require, exports) { +>>>define("file3", ["require", "exports"], function (require, exports) { >>> "use strict"; >>> Object.defineProperty(exports, "__esModule", { value: true }); >>> exports.z = 30; @@ -267,7 +267,7 @@ sourceFile:file4.ts }, { "pos": 463, - "end": 673, + "end": 664, "kind": "text" } ] @@ -320,8 +320,8 @@ define("file2", ["require", "exports"], function (require, exports) { var globalConst = 10; ---------------------------------------------------------------------- -text: (463-673) -define("file3", ["require", "exports", "file1"], function (require, exports) { +text: (463-664) +define("file3", ["require", "exports"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; diff --git a/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-declaration-doesnt-change/stripInternal.js b/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-declaration-doesnt-change/stripInternal.js index 48b8e111fce8a..36435d0421c7a 100644 --- a/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-declaration-doesnt-change/stripInternal.js +++ b/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-declaration-doesnt-change/stripInternal.js @@ -121,7 +121,7 @@ define("file2", ["require", "exports"], function (require, exports) { exports.y = 20; }); var globalConst = 10; -define("file3", ["require", "exports", "file1"], function (require, exports) { +define("file3", ["require", "exports"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; @@ -1611,7 +1611,7 @@ sourceFile:../lib/global.ts 4 > ^^^ 5 > ^^ 6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> 1 > 2 >const 3 > globalConst @@ -1629,7 +1629,7 @@ sourceFile:../lib/global.ts emittedFile:/src/app/module.js sourceFile:file3.ts ------------------------------------------------------------------- ->>>define("file3", ["require", "exports", "file1"], function (require, exports) { +>>>define("file3", ["require", "exports"], function (require, exports) { >>> "use strict"; >>> Object.defineProperty(exports, "__esModule", { value: true }); >>> exports.z = 30; @@ -1705,7 +1705,7 @@ sourceFile:file4.ts }, { "pos": 4158, - "end": 4368, + "end": 4359, "kind": "text" } ] @@ -1848,8 +1848,8 @@ define("file2", ["require", "exports"], function (require, exports) { var globalConst = 10; ---------------------------------------------------------------------- -text: (4158-4368) -define("file3", ["require", "exports", "file1"], function (require, exports) { +text: (4158-4359) +define("file3", ["require", "exports"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; diff --git a/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-declaration-doesnt-change/triple-slash-refs-in-all-projects.js b/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-declaration-doesnt-change/triple-slash-refs-in-all-projects.js index 67fdb63473c80..de9f9dc4ac597 100644 --- a/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-declaration-doesnt-change/triple-slash-refs-in-all-projects.js +++ b/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-declaration-doesnt-change/triple-slash-refs-in-all-projects.js @@ -33,7 +33,7 @@ define("file2", ["require", "exports"], function (require, exports) { exports.y = 20; }); var globalConst = 10; -define("file3", ["require", "exports", "file1"], function (require, exports) { +define("file3", ["require", "exports"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; @@ -208,7 +208,7 @@ sourceFile:../lib/global.ts 4 > ^^^ 5 > ^^ 6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> 1 > 2 >const 3 > globalConst @@ -226,7 +226,7 @@ sourceFile:../lib/global.ts emittedFile:/src/app/module.js sourceFile:file3.ts ------------------------------------------------------------------- ->>>define("file3", ["require", "exports", "file1"], function (require, exports) { +>>>define("file3", ["require", "exports"], function (require, exports) { >>> "use strict"; >>> Object.defineProperty(exports, "__esModule", { value: true }); >>> exports.z = 30; @@ -338,7 +338,7 @@ sourceFile:file4.ts }, { "pos": 513, - "end": 798, + "end": 789, "kind": "text" } ] @@ -405,8 +405,8 @@ define("file2", ["require", "exports"], function (require, exports) { var globalConst = 10; ---------------------------------------------------------------------- -text: (513-798) -define("file3", ["require", "exports", "file1"], function (require, exports) { +text: (513-789) +define("file3", ["require", "exports"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; diff --git a/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-headers-change-without-dts-changes/multiple-emitHelpers-in-all-projects.js b/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-headers-change-without-dts-changes/multiple-emitHelpers-in-all-projects.js index f3337380fd4cd..fe117cffae082 100644 --- a/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-headers-change-without-dts-changes/multiple-emitHelpers-in-all-projects.js +++ b/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-headers-change-without-dts-changes/multiple-emitHelpers-in-all-projects.js @@ -69,7 +69,7 @@ define("file2", ["require", "exports"], function (require, exports) { exports.y = 20; }); var globalConst = 10; -define("file3", ["require", "exports", "file1"], function (require, exports) { +define("file3", ["require", "exports"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; @@ -334,7 +334,7 @@ sourceFile:../lib/global.ts 4 > ^^^ 5 > ^^ 6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> 1 > 2 >const 3 > globalConst @@ -352,7 +352,7 @@ sourceFile:../lib/global.ts emittedFile:/src/app/module.js sourceFile:file3.ts ------------------------------------------------------------------- ->>>define("file3", ["require", "exports", "file1"], function (require, exports) { +>>>define("file3", ["require", "exports"], function (require, exports) { >>> "use strict"; >>> Object.defineProperty(exports, "__esModule", { value: true }); >>> exports.z = 30; @@ -591,7 +591,7 @@ sourceFile:file4.ts }, { "pos": 1821, - "end": 2348, + "end": 2339, "kind": "text" } ], @@ -695,8 +695,8 @@ define("file2", ["require", "exports"], function (require, exports) { var globalConst = 10; ---------------------------------------------------------------------- -text: (1821-2348) -define("file3", ["require", "exports", "file1"], function (require, exports) { +text: (1821-2339) +define("file3", ["require", "exports"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; diff --git a/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-headers-change-without-dts-changes/multiple-prologues-in-all-projects.js b/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-headers-change-without-dts-changes/multiple-prologues-in-all-projects.js index 95f2b40145b1c..3d7c28a3a2880 100644 --- a/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-headers-change-without-dts-changes/multiple-prologues-in-all-projects.js +++ b/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-headers-change-without-dts-changes/multiple-prologues-in-all-projects.js @@ -214,7 +214,7 @@ define("file2", ["require", "exports"], function (require, exports) { exports.y = 20; }); var globalConst = 10; -define("file3", ["require", "exports", "file1"], function (require, exports) { +define("file3", ["require", "exports"], function (require, exports) { "use strict"; "myPrologue"; Object.defineProperty(exports, "__esModule", { value: true }); @@ -401,7 +401,7 @@ sourceFile:../lib/global.ts 4 > ^^^ 5 > ^^ 6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> 1 >"myPrologue3" > 2 >const @@ -420,7 +420,7 @@ sourceFile:../lib/global.ts emittedFile:/src/app/module.js sourceFile:file3.ts ------------------------------------------------------------------- ->>>define("file3", ["require", "exports", "file1"], function (require, exports) { +>>>define("file3", ["require", "exports"], function (require, exports) { >>> "use strict"; >>> "myPrologue"; 1->^^^^ @@ -534,7 +534,7 @@ sourceFile:file4.ts }, { "pos": 514, - "end": 743, + "end": 734, "kind": "text" } ], @@ -628,8 +628,8 @@ define("file2", ["require", "exports"], function (require, exports) { var globalConst = 10; ---------------------------------------------------------------------- -text: (514-743) -define("file3", ["require", "exports", "file1"], function (require, exports) { +text: (514-734) +define("file3", ["require", "exports"], function (require, exports) { "use strict"; "myPrologue"; Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-headers-change-without-dts-changes/stripInternal.js b/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-headers-change-without-dts-changes/stripInternal.js index fd76cd02ad8ba..455d2e781741c 100644 --- a/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-headers-change-without-dts-changes/stripInternal.js +++ b/tests/baselines/reference/tsbuild/amdModulesWithOut/incremental-headers-change-without-dts-changes/stripInternal.js @@ -319,7 +319,7 @@ define("file2", ["require", "exports"], function (require, exports) { exports.y = 20; }); var globalConst = 10; -define("file3", ["require", "exports", "file1"], function (require, exports) { +define("file3", ["require", "exports"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; @@ -1789,7 +1789,7 @@ sourceFile:../lib/global.ts 4 > ^^^ 5 > ^^ 6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> 1 > 2 >const 3 > globalConst @@ -1807,7 +1807,7 @@ sourceFile:../lib/global.ts emittedFile:/src/app/module.js sourceFile:file3.ts ------------------------------------------------------------------- ->>>define("file3", ["require", "exports", "file1"], function (require, exports) { +>>>define("file3", ["require", "exports"], function (require, exports) { >>> "use strict"; >>> Object.defineProperty(exports, "__esModule", { value: true }); >>> exports.z = 30; @@ -1883,7 +1883,7 @@ sourceFile:file4.ts }, { "pos": 4143, - "end": 4353, + "end": 4344, "kind": "text" } ] @@ -2025,8 +2025,8 @@ define("file2", ["require", "exports"], function (require, exports) { var globalConst = 10; ---------------------------------------------------------------------- -text: (4143-4353) -define("file3", ["require", "exports", "file1"], function (require, exports) { +text: (4143-4344) +define("file3", ["require", "exports"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; diff --git a/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/modules-and-globals-mixed-in-amd.js b/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/modules-and-globals-mixed-in-amd.js index 81ff1adcd260a..dbe3eaffbde12 100644 --- a/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/modules-and-globals-mixed-in-amd.js +++ b/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/modules-and-globals-mixed-in-amd.js @@ -215,7 +215,7 @@ define("file2", ["require", "exports"], function (require, exports) { exports.y = 20; }); var globalConst = 10; -define("file3", ["require", "exports", "file1"], function (require, exports) { +define("file3", ["require", "exports"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; @@ -325,7 +325,7 @@ sourceFile:../lib/global.ts 4 > ^^^ 5 > ^^ 6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> 1 > 2 >const 3 > globalConst @@ -343,7 +343,7 @@ sourceFile:../lib/global.ts emittedFile:/src/app/module.js sourceFile:file3.ts ------------------------------------------------------------------- ->>>define("file3", ["require", "exports", "file1"], function (require, exports) { +>>>define("file3", ["require", "exports"], function (require, exports) { >>> "use strict"; >>> Object.defineProperty(exports, "__esModule", { value: true }); >>> exports.z = 30; @@ -419,7 +419,7 @@ sourceFile:file4.ts }, { "pos": 409, - "end": 619, + "end": 610, "kind": "text" } ] @@ -471,8 +471,8 @@ define("file2", ["require", "exports"], function (require, exports) { var globalConst = 10; ---------------------------------------------------------------------- -text: (409-619) -define("file3", ["require", "exports", "file1"], function (require, exports) { +text: (409-610) +define("file3", ["require", "exports"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; diff --git a/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/multiple-emitHelpers-in-all-projects.js b/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/multiple-emitHelpers-in-all-projects.js index 8aa17bf535039..a2965cde2de7e 100644 --- a/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/multiple-emitHelpers-in-all-projects.js +++ b/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/multiple-emitHelpers-in-all-projects.js @@ -330,7 +330,7 @@ define("file2", ["require", "exports"], function (require, exports) { exports.y = 20; }); var globalConst = 10; -define("file3", ["require", "exports", "file1"], function (require, exports) { +define("file3", ["require", "exports"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; @@ -626,7 +626,7 @@ sourceFile:../lib/global.ts 4 > ^^^ 5 > ^^ 6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> 1 > 2 >const 3 > globalConst @@ -644,7 +644,7 @@ sourceFile:../lib/global.ts emittedFile:/src/app/module.js sourceFile:file3.ts ------------------------------------------------------------------- ->>>define("file3", ["require", "exports", "file1"], function (require, exports) { +>>>define("file3", ["require", "exports"], function (require, exports) { >>> "use strict"; >>> Object.defineProperty(exports, "__esModule", { value: true }); >>> exports.z = 30; @@ -883,7 +883,7 @@ sourceFile:file4.ts }, { "pos": 1906, - "end": 2433, + "end": 2424, "kind": "text" } ], @@ -989,8 +989,8 @@ define("file2", ["require", "exports"], function (require, exports) { var globalConst = 10; ---------------------------------------------------------------------- -text: (1906-2433) -define("file3", ["require", "exports", "file1"], function (require, exports) { +text: (1906-2424) +define("file3", ["require", "exports"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; diff --git a/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/multiple-prologues-in-all-projects.js b/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/multiple-prologues-in-all-projects.js index 9f2987661ca11..ce52dcebd472b 100644 --- a/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/multiple-prologues-in-all-projects.js +++ b/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/multiple-prologues-in-all-projects.js @@ -234,7 +234,7 @@ define("file2", ["require", "exports"], function (require, exports) { exports.y = 20; }); var globalConst = 10; -define("file3", ["require", "exports", "file1"], function (require, exports) { +define("file3", ["require", "exports"], function (require, exports) { "use strict"; "myPrologue"; Object.defineProperty(exports, "__esModule", { value: true }); @@ -408,7 +408,7 @@ sourceFile:../lib/global.ts 4 > ^^^ 5 > ^^ 6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> 1 >"myPrologue3" > 2 >const @@ -427,7 +427,7 @@ sourceFile:../lib/global.ts emittedFile:/src/app/module.js sourceFile:file3.ts ------------------------------------------------------------------- ->>>define("file3", ["require", "exports", "file1"], function (require, exports) { +>>>define("file3", ["require", "exports"], function (require, exports) { >>> "use strict"; >>> "myPrologue"; 1->^^^^ @@ -541,7 +541,7 @@ sourceFile:file4.ts }, { "pos": 494, - "end": 723, + "end": 714, "kind": "text" } ], @@ -634,8 +634,8 @@ define("file2", ["require", "exports"], function (require, exports) { var globalConst = 10; ---------------------------------------------------------------------- -text: (494-723) -define("file3", ["require", "exports", "file1"], function (require, exports) { +text: (494-714) +define("file3", ["require", "exports"], function (require, exports) { "use strict"; "myPrologue"; Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/shebang-in-all-projects.js b/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/shebang-in-all-projects.js index 5cb709cfd8333..ac259989bcecf 100644 --- a/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/shebang-in-all-projects.js +++ b/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/shebang-in-all-projects.js @@ -226,7 +226,7 @@ define("file2", ["require", "exports"], function (require, exports) { exports.y = 20; }); var globalConst = 10; -define("file3", ["require", "exports", "file1"], function (require, exports) { +define("file3", ["require", "exports"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; @@ -339,7 +339,7 @@ sourceFile:../lib/global.ts 4 > ^^^ 5 > ^^ 6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> 1 > 2 >const 3 > globalConst @@ -357,7 +357,7 @@ sourceFile:../lib/global.ts emittedFile:/src/app/module.js sourceFile:file3.ts ------------------------------------------------------------------- ->>>define("file3", ["require", "exports", "file1"], function (require, exports) { +>>>define("file3", ["require", "exports"], function (require, exports) { >>> "use strict"; >>> Object.defineProperty(exports, "__esModule", { value: true }); >>> exports.z = 30; @@ -434,7 +434,7 @@ sourceFile:file4.ts }, { "pos": 434, - "end": 644, + "end": 635, "kind": "text" } ] @@ -486,8 +486,8 @@ define("file2", ["require", "exports"], function (require, exports) { var globalConst = 10; ---------------------------------------------------------------------- -text: (434-644) -define("file3", ["require", "exports", "file1"], function (require, exports) { +text: (434-635) +define("file3", ["require", "exports"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; diff --git a/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/stripInternal.js b/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/stripInternal.js index 7ca2288c5ae43..04bdb8e9b467d 100644 --- a/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/stripInternal.js +++ b/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/stripInternal.js @@ -344,7 +344,7 @@ define("file2", ["require", "exports"], function (require, exports) { exports.y = 20; }); var globalConst = 10; -define("file3", ["require", "exports", "file1"], function (require, exports) { +define("file3", ["require", "exports"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; @@ -1808,7 +1808,7 @@ sourceFile:../lib/global.ts 4 > ^^^ 5 > ^^ 6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> 1 > 2 >const 3 > globalConst @@ -1826,7 +1826,7 @@ sourceFile:../lib/global.ts emittedFile:/src/app/module.js sourceFile:file3.ts ------------------------------------------------------------------- ->>>define("file3", ["require", "exports", "file1"], function (require, exports) { +>>>define("file3", ["require", "exports"], function (require, exports) { >>> "use strict"; >>> Object.defineProperty(exports, "__esModule", { value: true }); >>> exports.z = 30; @@ -1902,7 +1902,7 @@ sourceFile:file4.ts }, { "pos": 4129, - "end": 4339, + "end": 4330, "kind": "text" } ] @@ -2044,8 +2044,8 @@ define("file2", ["require", "exports"], function (require, exports) { var globalConst = 10; ---------------------------------------------------------------------- -text: (4129-4339) -define("file3", ["require", "exports", "file1"], function (require, exports) { +text: (4129-4330) +define("file3", ["require", "exports"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; diff --git a/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/triple-slash-refs-in-all-projects.js b/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/triple-slash-refs-in-all-projects.js index ce53b9793a2bc..3aab51c08f76e 100644 --- a/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/triple-slash-refs-in-all-projects.js +++ b/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/triple-slash-refs-in-all-projects.js @@ -272,7 +272,7 @@ define("file2", ["require", "exports"], function (require, exports) { exports.y = 20; }); var globalConst = 10; -define("file3", ["require", "exports", "file1"], function (require, exports) { +define("file3", ["require", "exports"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; @@ -420,7 +420,7 @@ sourceFile:../lib/global.ts 4 > ^^^ 5 > ^^ 6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> 1 > 2 >const 3 > globalConst @@ -438,7 +438,7 @@ sourceFile:../lib/global.ts emittedFile:/src/app/module.js sourceFile:file3.ts ------------------------------------------------------------------- ->>>define("file3", ["require", "exports", "file1"], function (require, exports) { +>>>define("file3", ["require", "exports"], function (require, exports) { >>> "use strict"; >>> Object.defineProperty(exports, "__esModule", { value: true }); >>> exports.z = 30; @@ -550,7 +550,7 @@ sourceFile:file4.ts }, { "pos": 484, - "end": 769, + "end": 760, "kind": "text" } ] @@ -616,8 +616,8 @@ define("file2", ["require", "exports"], function (require, exports) { var globalConst = 10; ---------------------------------------------------------------------- -text: (484-769) -define("file3", ["require", "exports", "file1"], function (require, exports) { +text: (484-760) +define("file3", ["require", "exports"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; diff --git a/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/when-the-module-resolution-finds-original-source-file.js b/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/when-the-module-resolution-finds-original-source-file.js index 2c96dc4204d25..1ddbd2fff9afe 100644 --- a/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/when-the-module-resolution-finds-original-source-file.js +++ b/tests/baselines/reference/tsbuild/amdModulesWithOut/initial-build/when-the-module-resolution-finds-original-source-file.js @@ -220,7 +220,7 @@ define("lib/file2", ["require", "exports"], function (require, exports) { exports.y = 20; }); var globalConst = 10; -define("file3", ["require", "exports", "lib/file1"], function (require, exports) { +define("file3", ["require", "exports"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; @@ -330,7 +330,7 @@ sourceFile:../lib/global.ts 4 > ^^^ 5 > ^^ 6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> 1 > 2 >const 3 > globalConst @@ -348,7 +348,7 @@ sourceFile:../lib/global.ts emittedFile:/src/app/module.js sourceFile:file3.ts ------------------------------------------------------------------- ->>>define("file3", ["require", "exports", "lib/file1"], function (require, exports) { +>>>define("file3", ["require", "exports"], function (require, exports) { >>> "use strict"; >>> Object.defineProperty(exports, "__esModule", { value: true }); >>> exports.z = 30; @@ -424,7 +424,7 @@ sourceFile:file4.ts }, { "pos": 417, - "end": 631, + "end": 618, "kind": "text" } ] @@ -476,8 +476,8 @@ define("lib/file2", ["require", "exports"], function (require, exports) { var globalConst = 10; ---------------------------------------------------------------------- -text: (417-631) -define("file3", ["require", "exports", "lib/file1"], function (require, exports) { +text: (417-618) +define("file3", ["require", "exports"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.z = 30; 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 5d8e2a875445a..922ca8d3b1c01 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 @@ -45,7 +45,6 @@ export declare function createDog(): Dog; //// [/src/lib/animals/dog.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -require("."); var utilities_1 = require("../core/utilities"); function createDog() { return ({ diff --git a/tests/baselines/reference/tsbuild/javascriptProjectEmit/initial-build/loads-js-based-projects-and-emits-them-correctly.js b/tests/baselines/reference/tsbuild/javascriptProjectEmit/initial-build/loads-js-based-projects-and-emits-them-correctly.js index cfdcda21df694..f02084e749fb5 100644 --- a/tests/baselines/reference/tsbuild/javascriptProjectEmit/initial-build/loads-js-based-projects-and-emits-them-correctly.js +++ b/tests/baselines/reference/tsbuild/javascriptProjectEmit/initial-build/loads-js-based-projects-and-emits-them-correctly.js @@ -59,7 +59,6 @@ export type MyNominal = string & { //// [/lib/sub-project/index.js] "use strict"; exports.__esModule = true; -require("../common/nominal"); /** * @typedef {Nominal} MyNominal */ @@ -117,7 +116,6 @@ export function getVar(): "key"; //// [/lib/sub-project-2/index.js] "use strict"; exports.__esModule = true; -require("../sub-project/index"); var variable = { key: /** @type {MyNominal} */ ('value') }; diff --git a/tests/baselines/reference/tsbuild/lateBoundSymbol/incremental-declaration-doesnt-change/interface-is-merged-and-contains-late-bound-member.js b/tests/baselines/reference/tsbuild/lateBoundSymbol/incremental-declaration-doesnt-change/interface-is-merged-and-contains-late-bound-member.js index a6e2fd5d9793a..1cdbffe6cc6e4 100644 --- a/tests/baselines/reference/tsbuild/lateBoundSymbol/incremental-declaration-doesnt-change/interface-is-merged-and-contains-late-bound-member.js +++ b/tests/baselines/reference/tsbuild/lateBoundSymbol/incremental-declaration-doesnt-change/interface-is-merged-and-contains-late-bound-member.js @@ -15,7 +15,6 @@ exitCode:: ExitStatus.Success //// [/src/src/main.js] "use strict"; exports.__esModule = true; -require("./hkt"); var sym = Symbol(); diff --git a/tests/baselines/reference/tsbuild/lateBoundSymbol/initial-build/interface-is-merged-and-contains-late-bound-member.js b/tests/baselines/reference/tsbuild/lateBoundSymbol/initial-build/interface-is-merged-and-contains-late-bound-member.js index c007fc2d8ed37..d89b3a9c89489 100644 --- a/tests/baselines/reference/tsbuild/lateBoundSymbol/initial-build/interface-is-merged-and-contains-late-bound-member.js +++ b/tests/baselines/reference/tsbuild/lateBoundSymbol/initial-build/interface-is-merged-and-contains-late-bound-member.js @@ -18,7 +18,6 @@ exports.__esModule = true; //// [/src/src/main.js] "use strict"; exports.__esModule = true; -require("./hkt"); var sym = Symbol(); var x = 10; diff --git a/tests/baselines/reference/tsbuild/moduleSpecifiers/initial-build/synthesized-module-specifiers-resolve-correctly.js b/tests/baselines/reference/tsbuild/moduleSpecifiers/initial-build/synthesized-module-specifiers-resolve-correctly.js index 39b48f3457f54..e84238976a220 100644 --- a/tests/baselines/reference/tsbuild/moduleSpecifiers/initial-build/synthesized-module-specifiers-resolve-correctly.js +++ b/tests/baselines/reference/tsbuild/moduleSpecifiers/initial-build/synthesized-module-specifiers-resolve-correctly.js @@ -71,7 +71,6 @@ export declare type MyNominal = Nominal; //// [/src/lib/solution/sub-project/index.js] "use strict"; exports.__esModule = true; -require("../common/nominal"); //// [/src/lib/solution/sub-project/tsconfig.tsbuildinfo] @@ -128,7 +127,6 @@ export {}; //// [/src/lib/solution/sub-project-2/index.js] "use strict"; exports.__esModule = true; -require("../sub-project/index"); var variable = { key: 'value' }; diff --git a/tests/baselines/reference/tsc/declarationEmit/initial-build/when-same-version-is-referenced-through-source-and-another-symlinked-package.js b/tests/baselines/reference/tsc/declarationEmit/initial-build/when-same-version-is-referenced-through-source-and-another-symlinked-package.js index ad975e9ac88ee..e634d99e52385 100644 --- a/tests/baselines/reference/tsc/declarationEmit/initial-build/when-same-version-is-referenced-through-source-and-another-symlinked-package.js +++ b/tests/baselines/reference/tsc/declarationEmit/initial-build/when-same-version-is-referenced-through-source-and-another-symlinked-package.js @@ -33,6 +33,5 @@ export {}; //// [/src/plugin-one/index.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -require("plugin-two"); // include this to add reference to symlink diff --git a/tests/baselines/reference/tsxPreserveEmit3.js b/tests/baselines/reference/tsxPreserveEmit3.js index 86aac4c0fb09c..d886d4169b817 100644 --- a/tests/baselines/reference/tsxPreserveEmit3.js +++ b/tests/baselines/reference/tsxPreserveEmit3.js @@ -18,7 +18,7 @@ import {React} from "./test"; //// [file.jsx] //// [react-consumer.jsx] -define(["require", "exports", "./test"], function (require, exports) { +define(["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; }); diff --git a/tests/baselines/reference/typeReferenceDirectives10.js b/tests/baselines/reference/typeReferenceDirectives10.js index 26db090522d69..569159df42171 100644 --- a/tests/baselines/reference/typeReferenceDirectives10.js +++ b/tests/baselines/reference/typeReferenceDirectives10.js @@ -17,8 +17,6 @@ export interface A { //// [app.js] "use strict"; exports.__esModule = true; -/// -require("./ref"); //// [app.d.ts] diff --git a/tests/baselines/reference/typeReferenceDirectives13.js b/tests/baselines/reference/typeReferenceDirectives13.js index 847b15352101f..03dabec933100 100644 --- a/tests/baselines/reference/typeReferenceDirectives13.js +++ b/tests/baselines/reference/typeReferenceDirectives13.js @@ -17,8 +17,6 @@ export interface A { //// [app.js] "use strict"; exports.__esModule = true; -/// -require("./ref"); //// [app.d.ts] diff --git a/tests/baselines/reference/typeReferenceDirectives5.js b/tests/baselines/reference/typeReferenceDirectives5.js index 9835b77f04429..aabb879c485bc 100644 --- a/tests/baselines/reference/typeReferenceDirectives5.js +++ b/tests/baselines/reference/typeReferenceDirectives5.js @@ -16,8 +16,6 @@ export interface A { //// [app.js] "use strict"; exports.__esModule = true; -/// -require("./ref"); //// [app.d.ts] diff --git a/tests/baselines/reference/typeReferenceRelatedFiles.js b/tests/baselines/reference/typeReferenceRelatedFiles.js index 00e5885b47a6c..77cf0a8e16df8 100644 --- a/tests/baselines/reference/typeReferenceRelatedFiles.js +++ b/tests/baselines/reference/typeReferenceRelatedFiles.js @@ -22,8 +22,6 @@ export function f() { //// [main.js] "use strict"; exports.__esModule = true; -/// -require("fs"); function f() { return {}; } diff --git a/tests/baselines/reference/typesVersions.emptyTypes.js b/tests/baselines/reference/typesVersions.emptyTypes.js index 596f4c6821981..0bcc27d7a65ac 100644 --- a/tests/baselines/reference/typesVersions.emptyTypes.js +++ b/tests/baselines/reference/typesVersions.emptyTypes.js @@ -18,4 +18,3 @@ import { a } from "a"; //// [user.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -require("a"); diff --git a/tests/baselines/reference/typesVersions.justIndex.js b/tests/baselines/reference/typesVersions.justIndex.js index bc6a78c31cca0..094376c7d0fa7 100644 --- a/tests/baselines/reference/typesVersions.justIndex.js +++ b/tests/baselines/reference/typesVersions.justIndex.js @@ -17,4 +17,3 @@ import { a } from "a"; //// [user.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -require("a"); diff --git a/tests/baselines/reference/typingsLookupAmd.js b/tests/baselines/reference/typingsLookupAmd.js index 433153d01149c..11ccba92814a8 100644 --- a/tests/baselines/reference/typingsLookupAmd.js +++ b/tests/baselines/reference/typingsLookupAmd.js @@ -12,7 +12,7 @@ import {B} from "b"; //// [foo.js] -define(["require", "exports", "b"], function (require, exports) { +define(["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; }); diff --git a/tests/baselines/reference/umd8.js b/tests/baselines/reference/umd8.js index d9234c86094fb..3aefdded756f3 100644 --- a/tests/baselines/reference/umd8.js +++ b/tests/baselines/reference/umd8.js @@ -23,8 +23,6 @@ let x: any = Foo; // Not OK in value position //// [a.js] "use strict"; exports.__esModule = true; -/// -require("./foo"); var y; // OK in type position y.foo(); var z; // OK in ns position diff --git a/tests/baselines/reference/umdGlobalConflict.js b/tests/baselines/reference/umdGlobalConflict.js index 9631844115e59..114bdd643e45c 100644 --- a/tests/baselines/reference/umdGlobalConflict.js +++ b/tests/baselines/reference/umdGlobalConflict.js @@ -19,8 +19,6 @@ const p: string = Alpha.x; //// [consumer.js] "use strict"; exports.__esModule = true; -require("./v1"); -require("./v2"); //// [global.js] // Should be OK, first in wins var p = Alpha.x; diff --git a/tests/baselines/reference/untypedModuleImport_noImplicitAny.js b/tests/baselines/reference/untypedModuleImport_noImplicitAny.js index d1b1240fe58c7..378ebee6d7a2f 100644 --- a/tests/baselines/reference/untypedModuleImport_noImplicitAny.js +++ b/tests/baselines/reference/untypedModuleImport_noImplicitAny.js @@ -15,4 +15,3 @@ import * as foo from "foo"; //// [a.js] "use strict"; exports.__esModule = true; -require("foo"); diff --git a/tests/baselines/reference/untypedModuleImport_noImplicitAny_relativePath.js b/tests/baselines/reference/untypedModuleImport_noImplicitAny_relativePath.js index aaa2a84c73f33..7e8c52a3bfbbb 100644 --- a/tests/baselines/reference/untypedModuleImport_noImplicitAny_relativePath.js +++ b/tests/baselines/reference/untypedModuleImport_noImplicitAny_relativePath.js @@ -13,4 +13,3 @@ import * as foo from "./node_modules/foo"; //// [a.js] "use strict"; exports.__esModule = true; -require("./node_modules/foo"); diff --git a/tests/baselines/reference/untypedModuleImport_noImplicitAny_scoped.js b/tests/baselines/reference/untypedModuleImport_noImplicitAny_scoped.js index fc747db61d583..fc33d4a2665d6 100644 --- a/tests/baselines/reference/untypedModuleImport_noImplicitAny_scoped.js +++ b/tests/baselines/reference/untypedModuleImport_noImplicitAny_scoped.js @@ -13,4 +13,3 @@ import * as foo from "@foo/bar"; //// [a.js] "use strict"; exports.__esModule = true; -require("@foo/bar"); diff --git a/tests/baselines/reference/untypedModuleImport_noImplicitAny_typesForPackageExist.js b/tests/baselines/reference/untypedModuleImport_noImplicitAny_typesForPackageExist.js index 3194abe76b20e..e8d757f5e28bc 100644 --- a/tests/baselines/reference/untypedModuleImport_noImplicitAny_typesForPackageExist.js +++ b/tests/baselines/reference/untypedModuleImport_noImplicitAny_typesForPackageExist.js @@ -48,9 +48,3 @@ import * as scopeBarSub from "@scope/bar/sub"; //// [a.js] "use strict"; exports.__esModule = true; -require("foo"); -require("foo/sub"); -require("bar/sub"); -require("@scope/foo"); -require("@scope/foo/sub"); -require("@scope/bar/sub"); diff --git a/tests/baselines/reference/untypedModuleImport_withAugmentation2.js b/tests/baselines/reference/untypedModuleImport_withAugmentation2.js index ab69e0ec12aa7..6a01db5dd251a 100644 --- a/tests/baselines/reference/untypedModuleImport_withAugmentation2.js +++ b/tests/baselines/reference/untypedModuleImport_withAugmentation2.js @@ -18,4 +18,3 @@ import { } from "augmenter"; //// [a.js] "use strict"; exports.__esModule = true; -require("augmenter"); diff --git a/tests/baselines/reference/unusedImportDeclaration.js b/tests/baselines/reference/unusedImportDeclaration.js index 2bfcb7c2e5f2d..f5f98a1225138 100644 --- a/tests/baselines/reference/unusedImportDeclaration.js +++ b/tests/baselines/reference/unusedImportDeclaration.js @@ -26,6 +26,7 @@ module.exports = TesterB; //// [unusedImportDeclaration_testerA.js] "use strict"; exports.__esModule = true; +require("./unusedImportDeclaration_testerB"); var thingy = { me: "A" }; diff --git a/tests/baselines/reference/unusedImports12.js b/tests/baselines/reference/unusedImports12.js index 4dc10f1114bdd..be0cd19ccc5da 100644 --- a/tests/baselines/reference/unusedImports12.js +++ b/tests/baselines/reference/unusedImports12.js @@ -25,3 +25,4 @@ exports["default"] = Member; //// [a.js] "use strict"; exports.__esModule = true; +require("./b"); diff --git a/tests/baselines/reference/unusedImports9.js b/tests/baselines/reference/unusedImports9.js index 8ed4d5efd1bbb..5b80c3ed2b02f 100644 --- a/tests/baselines/reference/unusedImports9.js +++ b/tests/baselines/reference/unusedImports9.js @@ -35,3 +35,4 @@ exports.test2 = test2; //// [file2.js] "use strict"; exports.__esModule = true; +require("./file1"); diff --git a/tests/baselines/reference/unusedInvalidTypeArguments.js b/tests/baselines/reference/unusedInvalidTypeArguments.js index b9c037ae67ca5..1a424921c1fee 100644 --- a/tests/baselines/reference/unusedInvalidTypeArguments.js +++ b/tests/baselines/reference/unusedInvalidTypeArguments.js @@ -84,7 +84,6 @@ exports.D = D; //// [interface.js] "use strict"; exports.__esModule = true; -require("unknown"); //// [call.js] "use strict"; exports.__esModule = true; diff --git a/tests/baselines/reference/unusedLocalsStartingWithUnderscore.js b/tests/baselines/reference/unusedLocalsStartingWithUnderscore.js index b7ff773e5ea69..54b029445e39d 100644 --- a/tests/baselines/reference/unusedLocalsStartingWithUnderscore.js +++ b/tests/baselines/reference/unusedLocalsStartingWithUnderscore.js @@ -16,7 +16,6 @@ namespace _ns { //// [a.js] "use strict"; exports.__esModule = true; -require("./a"); for (var _i = 0, _a = []; _i < _a.length; _i++) { var _1 = _a[_i]; } diff --git a/tests/cases/compiler/unusedImportDeclaration.ts b/tests/cases/compiler/unusedImportDeclaration.ts index ddcad6da2f391..71fe5aae5a38a 100644 --- a/tests/cases/compiler/unusedImportDeclaration.ts +++ b/tests/cases/compiler/unusedImportDeclaration.ts @@ -1,7 +1,6 @@ // @module: commonjs // @declaration: true // @Filename: unusedImportDeclaration_testerB.ts -// @removeUnusedImports: true class TesterB { me: string; } diff --git a/tests/cases/compiler/unusedImports1.ts b/tests/cases/compiler/unusedImports1.ts index 643ecf0ca163b..30fff0c1ed195 100644 --- a/tests/cases/compiler/unusedImports1.ts +++ b/tests/cases/compiler/unusedImports1.ts @@ -1,6 +1,5 @@ //@noUnusedLocals:true //@noUnusedParameters:true -//@removeUnusedImports: true // @Filename: file1.ts export class Calculator { diff --git a/tests/cases/compiler/unusedImports10.ts b/tests/cases/compiler/unusedImports10.ts index 0a73a1e33531c..1cccfbd38bb49 100644 --- a/tests/cases/compiler/unusedImports10.ts +++ b/tests/cases/compiler/unusedImports10.ts @@ -1,6 +1,5 @@ //@noUnusedLocals:true //@noUnusedParameters:true -//@removeUnusedImports: true module A { export class Calculator { diff --git a/tests/cases/compiler/unusedImports11.ts b/tests/cases/compiler/unusedImports11.ts index c3e5b4f45f3ee..4f2fed649d152 100644 --- a/tests/cases/compiler/unusedImports11.ts +++ b/tests/cases/compiler/unusedImports11.ts @@ -1,6 +1,5 @@ //@noUnusedLocals:true //@noUnusedParameters:true -//@removeUnusedImports: true // @filename: b.ts export class Member {} diff --git a/tests/cases/compiler/unusedImports12.ts b/tests/cases/compiler/unusedImports12.ts index 613c5627f7191..14206284b6439 100644 --- a/tests/cases/compiler/unusedImports12.ts +++ b/tests/cases/compiler/unusedImports12.ts @@ -1,6 +1,5 @@ //@noUnusedLocals:true //@noUnusedParameters:true -//@removeUnusedImports: true // @filename: b.ts export class Member {} diff --git a/tests/cases/compiler/unusedImports13.ts b/tests/cases/compiler/unusedImports13.ts index 61126be3fbbd1..af188e70eae99 100644 --- a/tests/cases/compiler/unusedImports13.ts +++ b/tests/cases/compiler/unusedImports13.ts @@ -1,7 +1,6 @@ //@noUnusedLocals:true //@module: commonjs //@jsx: preserve -//@removeUnusedImports: true // @filename: foo.tsx import React = require("react"); diff --git a/tests/cases/compiler/unusedImports14.ts b/tests/cases/compiler/unusedImports14.ts index dea15c7e54513..1823d4bb49b5f 100644 --- a/tests/cases/compiler/unusedImports14.ts +++ b/tests/cases/compiler/unusedImports14.ts @@ -1,7 +1,6 @@ //@noUnusedLocals:true //@module: commonjs //@jsx: react -//@removeUnusedImports: true // @filename: foo.tsx import React = require("react"); diff --git a/tests/cases/compiler/unusedImports15.ts b/tests/cases/compiler/unusedImports15.ts index c0a83638886c2..ef6b277d21de2 100644 --- a/tests/cases/compiler/unusedImports15.ts +++ b/tests/cases/compiler/unusedImports15.ts @@ -2,7 +2,6 @@ //@module: commonjs //@reactNamespace: Element //@jsx: preserve -//@removeUnusedImports: true // @filename: foo.tsx import Element = require("react"); diff --git a/tests/cases/compiler/unusedImports16.ts b/tests/cases/compiler/unusedImports16.ts index 92a22ac82332b..ff0c38bb75ea6 100644 --- a/tests/cases/compiler/unusedImports16.ts +++ b/tests/cases/compiler/unusedImports16.ts @@ -2,7 +2,6 @@ //@module: commonjs //@reactNamespace: Element //@jsx: react -//@removeUnusedImports: true // @filename: foo.tsx import Element = require("react"); diff --git a/tests/cases/compiler/unusedImports2.ts b/tests/cases/compiler/unusedImports2.ts index c95eace424cdd..00e7fcff33bc3 100644 --- a/tests/cases/compiler/unusedImports2.ts +++ b/tests/cases/compiler/unusedImports2.ts @@ -1,6 +1,5 @@ //@noUnusedLocals:true //@noUnusedParameters:true -//@removeUnusedImports: true // @Filename: file1.ts export class Calculator { diff --git a/tests/cases/compiler/unusedImports3.ts b/tests/cases/compiler/unusedImports3.ts index 5a16a6599a70b..349c2c9abe8e6 100644 --- a/tests/cases/compiler/unusedImports3.ts +++ b/tests/cases/compiler/unusedImports3.ts @@ -1,6 +1,5 @@ //@noUnusedLocals:true //@noUnusedParameters:true -//@removeUnusedImports: true // @Filename: file1.ts export class Calculator { diff --git a/tests/cases/compiler/unusedImports4.ts b/tests/cases/compiler/unusedImports4.ts index b949afcaae8f1..472c59658509c 100644 --- a/tests/cases/compiler/unusedImports4.ts +++ b/tests/cases/compiler/unusedImports4.ts @@ -1,6 +1,5 @@ //@noUnusedLocals:true //@noUnusedParameters:true -//@removeUnusedImports: true // @Filename: file1.ts export class Calculator { diff --git a/tests/cases/compiler/unusedImports5.ts b/tests/cases/compiler/unusedImports5.ts index 486383674d479..85943691ce2e2 100644 --- a/tests/cases/compiler/unusedImports5.ts +++ b/tests/cases/compiler/unusedImports5.ts @@ -1,6 +1,5 @@ //@noUnusedLocals:true //@noUnusedParameters:true -//@removeUnusedImports: true // @Filename: file1.ts export class Calculator { diff --git a/tests/cases/compiler/unusedImports6.ts b/tests/cases/compiler/unusedImports6.ts index 219ef5d953903..6ff45cc1b295e 100644 --- a/tests/cases/compiler/unusedImports6.ts +++ b/tests/cases/compiler/unusedImports6.ts @@ -1,6 +1,5 @@ //@noUnusedLocals:true //@noUnusedParameters:true -//@removeUnusedImports: true // @Filename: file1.ts export class Calculator { diff --git a/tests/cases/compiler/unusedImports7.ts b/tests/cases/compiler/unusedImports7.ts index 71a5c0ce396f9..94df358174524 100644 --- a/tests/cases/compiler/unusedImports7.ts +++ b/tests/cases/compiler/unusedImports7.ts @@ -1,6 +1,5 @@ //@noUnusedLocals:true //@noUnusedParameters:true -//@removeUnusedImports: true // @Filename: file1.ts export class Calculator { diff --git a/tests/cases/compiler/unusedImports8.ts b/tests/cases/compiler/unusedImports8.ts index e4ed9b8ef6d4f..e8bd982d0380e 100644 --- a/tests/cases/compiler/unusedImports8.ts +++ b/tests/cases/compiler/unusedImports8.ts @@ -1,6 +1,5 @@ //@noUnusedLocals:true //@noUnusedParameters:true -//@removeUnusedImports: true // @Filename: file1.ts export class Calculator { diff --git a/tests/cases/compiler/unusedImports9.ts b/tests/cases/compiler/unusedImports9.ts index b84ca2927b529..2e13e216c1558 100644 --- a/tests/cases/compiler/unusedImports9.ts +++ b/tests/cases/compiler/unusedImports9.ts @@ -1,6 +1,5 @@ //@noUnusedLocals:true //@noUnusedParameters:true -//@removeUnusedImports: true // @Filename: file1.ts export class Calculator { diff --git a/tests/cases/compiler/unusedImports_entireImportDeclaration.ts b/tests/cases/compiler/unusedImports_entireImportDeclaration.ts index e880920cc396a..fa7fcb7f59632 100644 --- a/tests/cases/compiler/unusedImports_entireImportDeclaration.ts +++ b/tests/cases/compiler/unusedImports_entireImportDeclaration.ts @@ -1,5 +1,4 @@ // @noUnusedLocals: true -// @removeUnusedImports: true // @Filename: /a.ts export const a = 0; From 0c2df8ebdc93bcadb98991404ef5cdb822006a0e Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Fri, 20 Dec 2019 15:11:53 -0600 Subject: [PATCH 42/47] Add test for preserveUnusedImports option --- .../reference/preserveUnusedImports.js | 33 +++++++++++++++++++ .../reference/preserveUnusedImports.symbols | 19 +++++++++++ .../reference/preserveUnusedImports.types | 18 ++++++++++ tests/cases/compiler/preserveUnusedImports.ts | 13 ++++++++ 4 files changed, 83 insertions(+) create mode 100644 tests/baselines/reference/preserveUnusedImports.js create mode 100644 tests/baselines/reference/preserveUnusedImports.symbols create mode 100644 tests/baselines/reference/preserveUnusedImports.types create mode 100644 tests/cases/compiler/preserveUnusedImports.ts diff --git a/tests/baselines/reference/preserveUnusedImports.js b/tests/baselines/reference/preserveUnusedImports.js new file mode 100644 index 0000000000000..7c2c089a72729 --- /dev/null +++ b/tests/baselines/reference/preserveUnusedImports.js @@ -0,0 +1,33 @@ +//// [tests/cases/compiler/preserveUnusedImports.ts] //// + +//// [a.ts] +export type A = {}; + +//// [b.ts] +export class B {} + +//// [c.ts] +import { A } from './a'; +import { B } from './b'; + +let b: B; + + +//// [a.js] +"use strict"; +exports.__esModule = true; +//// [b.js] +"use strict"; +exports.__esModule = true; +var B = /** @class */ (function () { + function B() { + } + return B; +}()); +exports.B = B; +//// [c.js] +"use strict"; +exports.__esModule = true; +require("./a"); +require("./b"); +var b; diff --git a/tests/baselines/reference/preserveUnusedImports.symbols b/tests/baselines/reference/preserveUnusedImports.symbols new file mode 100644 index 0000000000000..1b7189408eedd --- /dev/null +++ b/tests/baselines/reference/preserveUnusedImports.symbols @@ -0,0 +1,19 @@ +=== tests/cases/compiler/a.ts === +export type A = {}; +>A : Symbol(A, Decl(a.ts, 0, 0)) + +=== tests/cases/compiler/b.ts === +export class B {} +>B : Symbol(B, Decl(b.ts, 0, 0)) + +=== tests/cases/compiler/c.ts === +import { A } from './a'; +>A : Symbol(A, Decl(c.ts, 0, 8)) + +import { B } from './b'; +>B : Symbol(B, Decl(c.ts, 1, 8)) + +let b: B; +>b : Symbol(b, Decl(c.ts, 3, 3)) +>B : Symbol(B, Decl(c.ts, 1, 8)) + diff --git a/tests/baselines/reference/preserveUnusedImports.types b/tests/baselines/reference/preserveUnusedImports.types new file mode 100644 index 0000000000000..e4e32ebb27ebb --- /dev/null +++ b/tests/baselines/reference/preserveUnusedImports.types @@ -0,0 +1,18 @@ +=== tests/cases/compiler/a.ts === +export type A = {}; +>A : A + +=== tests/cases/compiler/b.ts === +export class B {} +>B : B + +=== tests/cases/compiler/c.ts === +import { A } from './a'; +>A : any + +import { B } from './b'; +>B : typeof B + +let b: B; +>b : B + diff --git a/tests/cases/compiler/preserveUnusedImports.ts b/tests/cases/compiler/preserveUnusedImports.ts new file mode 100644 index 0000000000000..a5c568a473f52 --- /dev/null +++ b/tests/cases/compiler/preserveUnusedImports.ts @@ -0,0 +1,13 @@ +// @preserveUnusedImports: true + +// @Filename: a.ts +export type A = {}; + +// @Filename: b.ts +export class B {} + +// @Filename: c.ts +import { A } from './a'; +import { B } from './b'; + +let b: B; From 9b94bf934dbc2adf2eb0b96412679b3b86ae0b78 Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Fri, 20 Dec 2019 15:24:40 -0600 Subject: [PATCH 43/47] Fix flag flip on import = --- src/compiler/checker.ts | 12 ++++++------ src/compiler/transformers/ts.ts | 2 +- .../reference/aliasOnMergedModuleInterface.js | 2 -- .../reference/aliasUsageInAccessorsOfClass.js | 1 - tests/baselines/reference/aliasUsageInArray.js | 1 - .../reference/aliasUsageInFunctionExpression.js | 1 - .../reference/aliasUsageInGenericFunction.js | 1 - .../reference/aliasUsageInIndexerOfClass.js | 1 - .../baselines/reference/aliasUsageInObjectLiteral.js | 1 - .../baselines/reference/aliasUsageInOrExpression.js | 1 - .../aliasUsageInTypeArgumentOfExtendsClause.js | 1 - .../baselines/reference/aliasUsageInVarAssignment.js | 2 -- ...hInterfaceExportAssignmentUsedInVarInitializer.js | 1 - .../reference/ambientDeclarationsExternal.js | 2 -- .../reference/amdImportNotAsPrimaryExpression.js | 2 +- tests/baselines/reference/arrayOfExportedClass.js | 2 -- tests/baselines/reference/augmentExportEquals1.js | 4 ++-- tests/baselines/reference/augmentExportEquals1_1.js | 4 ++-- tests/baselines/reference/augmentExportEquals2.js | 4 ++-- tests/baselines/reference/augmentExportEquals2_1.js | 4 ++-- tests/baselines/reference/augmentExportEquals6_1.js | 2 +- .../reference/badExternalModuleReference.js | 2 +- .../baselines/reference/commentOnImportStatement1.js | 2 +- .../baselines/reference/commentOnImportStatement2.js | 2 -- .../baselines/reference/commentOnImportStatement3.js | 2 -- .../reference/commentsMultiModuleMultiFile.js | 2 +- .../commonJSImportNotAsPrimaryExpression.js | 1 - .../reference/commonJsImportClassExpression.js | 1 - tests/baselines/reference/constEnumExternalModule.js | 2 +- .../reference/declFileAliasUseBeforeDeclaration.js | 1 - ...eAmbientExternalModuleWithSingleExportedModule.js | 2 -- .../declFileExportAssignmentOfGenericInterface.js | 2 +- .../baselines/reference/declFileExportImportChain.js | 2 +- .../reference/declFileExportImportChain2.js | 2 +- .../baselines/reference/decoratorOnImportEquals2.js | 1 - tests/baselines/reference/errorsOnImportedSymbol.js | 1 - tests/baselines/reference/es6ExportEqualsInterop.js | 2 -- .../reference/es6ImportEqualsDeclaration.js | 1 - .../reference/es6modulekindWithES5Target10.js | 1 - .../reference/esnextmodulekindWithES5Target10.js | 1 - .../reference/exportAssignClassAndModule.js | 2 -- .../reference/exportAssignedTypeAsTypeAnnotation.js | 2 +- .../baselines/reference/exportAssignmentInterface.js | 2 +- .../reference/exportAssignmentMergedInterface.js | 2 +- .../exportAssignmentOfDeclaredExternalModule.js | 2 -- .../reference/exportImportNonInstantiatedModule2.js | 4 ++-- .../extendingClassFromAliasAndUsageInIndexer.js | 1 - tests/baselines/reference/importDecl.js | 1 - ...importDeclRefereingExternalModuleWithNoResolve.js | 1 - .../reference/importDeclarationUsedAsTypeQuery.js | 2 -- tests/baselines/reference/importImportOnlyModule.js | 2 +- tests/baselines/reference/importNonStringLiteral.js | 1 - ...re-when-referenecing-aliased-type-throug-array.js | 2 +- .../reference/importedAliasesInTypePositions.js | 2 +- .../reference/isolatedModulesReExportType.js | 1 - .../reference/isolatedModules_resolveJsonModule.js | 1 - .../reference/missingImportAfterModuleImport.js | 2 -- .../moduleAugmentationDuringSyntheticDefaultCheck.js | 1 - .../moduleImportedForTypeArgumentPosition.js | 2 +- tests/baselines/reference/moduleInTypePosition1.js | 2 -- .../baselines/reference/moduleResolutionNoResolve.js | 1 - tests/baselines/reference/nodeResolution1.js | 1 - tests/baselines/reference/nodeResolution2.js | 1 - tests/baselines/reference/nodeResolution3.js | 1 - tests/baselines/reference/nodeResolution4.js | 1 - tests/baselines/reference/nodeResolution5.js | 1 - tests/baselines/reference/nodeResolution6.js | 1 - tests/baselines/reference/nodeResolution7.js | 1 - tests/baselines/reference/nodeResolution8.js | 1 - .../reference/packageJsonMain_isNonRecursive.js | 1 - ...ckExternalModuleExportAssignmentOfGenericClass.js | 1 - ...pLevelAmbientExternalModuleImportWithoutExport.js | 2 +- .../reference/project/baseline2/amd/dont_emit.js | 2 +- .../reference/project/baseline2/node/dont_emit.js | 1 - .../reference/project/nonRelative/amd/lib/foo/a.js | 2 +- .../reference/project/nonRelative/node/lib/foo/a.js | 1 - .../amd/commands.js | 2 +- .../visibilityOfTypeUsedAcrossModules/amd/fs.js | 2 +- .../node/commands.js | 2 -- .../visibilityOfTypeUsedAcrossModules/node/fs.js | 1 - .../reference/propertyIdentityWithPrivacyMismatch.js | 2 +- .../recursiveExportAssignmentAndFindAliasedType1.js | 2 +- .../recursiveExportAssignmentAndFindAliasedType2.js | 2 +- .../recursiveExportAssignmentAndFindAliasedType3.js | 2 +- .../recursiveExportAssignmentAndFindAliasedType4.js | 2 +- .../recursiveExportAssignmentAndFindAliasedType5.js | 2 +- .../recursiveExportAssignmentAndFindAliasedType6.js | 2 +- .../recursiveExportAssignmentAndFindAliasedType7.js | 2 +- tests/baselines/reference/requireOfAnEmptyFile1.js | 1 - .../requireOfJsonFileNonRelativeWithoutExtension.js | 2 -- tests/baselines/reference/reuseInnerModuleMember.js | 1 - .../baselines/reference/staticInstanceResolution5.js | 2 +- ...strictModeReservedWordInImportEqualDeclaration.js | 1 - tests/baselines/reference/tsxElementResolution17.js | 2 +- tests/baselines/reference/typeUsedAsValueError2.js | 2 +- tests/baselines/reference/unusedImportDeclaration.js | 1 - tests/baselines/reference/unusedImports12.js | 1 - tests/baselines/reference/unusedImports9.js | 1 - .../reference/visibilityOfCrossModuleTypeUsage.js | 3 --- 99 files changed, 49 insertions(+), 126 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 255b5d7381e29..ab8988a701d51 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -2028,12 +2028,12 @@ namespace ts { if (meaning & (SymbolFlags.Value & ~SymbolFlags.NamespaceModule & ~SymbolFlags.Type)) { const symbol = resolveSymbol(resolveName(errorLocation, name, SymbolFlags.NamespaceModule & ~SymbolFlags.Value, /*nameNotFoundMessage*/undefined, /*nameArg*/ undefined, /*isUse*/ false)); if (symbol) { - if (isTypeOnlyEnumAlias(symbol)) { - error(errorLocation, Diagnostics.Type_only_enum_0_cannot_be_used_as_a_value, unescapeLeadingUnderscores(name)); - } - else { - error(errorLocation, Diagnostics.Cannot_use_namespace_0_as_a_value, unescapeLeadingUnderscores(name)); - } + error( + errorLocation, + isTypeOnlyEnumAlias(symbol) + ? Diagnostics.Type_only_enum_0_cannot_be_used_as_a_value + : Diagnostics.Cannot_use_namespace_0_as_a_value, + unescapeLeadingUnderscores(name)); return true; } } diff --git a/src/compiler/transformers/ts.ts b/src/compiler/transformers/ts.ts index ca60b9901f61a..e9dcfda1d359f 100644 --- a/src/compiler/transformers/ts.ts +++ b/src/compiler/transformers/ts.ts @@ -2917,7 +2917,7 @@ namespace ts { if (isExternalModuleImportEqualsDeclaration(node)) { const isReferenced = resolver.isReferencedAliasDeclaration(node); // If the alias is unreferenced but we want to keep the import, replace with 'import "mod"'. - if (!isReferenced && !compilerOptions.preserveUnusedImports) { + if (!isReferenced && compilerOptions.preserveUnusedImports) { return setOriginalNode( setTextRange( createImportDeclaration( diff --git a/tests/baselines/reference/aliasOnMergedModuleInterface.js b/tests/baselines/reference/aliasOnMergedModuleInterface.js index 81d875d53c9cf..d3d312e53bb92 100644 --- a/tests/baselines/reference/aliasOnMergedModuleInterface.js +++ b/tests/baselines/reference/aliasOnMergedModuleInterface.js @@ -25,8 +25,6 @@ var x: foo.A = foo.bar("hello"); // foo.A should be ok but foo.bar should be err //// [aliasOnMergedModuleInterface_1.js] "use strict"; exports.__esModule = true; -/// -require("foo"); var z; z.bar("hello"); // This should be ok var x = foo.bar("hello"); // foo.A should be ok but foo.bar should be error diff --git a/tests/baselines/reference/aliasUsageInAccessorsOfClass.js b/tests/baselines/reference/aliasUsageInAccessorsOfClass.js index 3be3c1627bea5..107466601d327 100644 --- a/tests/baselines/reference/aliasUsageInAccessorsOfClass.js +++ b/tests/baselines/reference/aliasUsageInAccessorsOfClass.js @@ -64,7 +64,6 @@ exports.VisualizationModel = VisualizationModel; //// [aliasUsage1_main.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -require("./aliasUsage1_backbone"); var moduleA = require("./aliasUsage1_moduleA"); var C2 = /** @class */ (function () { function C2() { diff --git a/tests/baselines/reference/aliasUsageInArray.js b/tests/baselines/reference/aliasUsageInArray.js index 91674f1e58346..4282290a39264 100644 --- a/tests/baselines/reference/aliasUsageInArray.js +++ b/tests/baselines/reference/aliasUsageInArray.js @@ -58,7 +58,6 @@ exports.VisualizationModel = VisualizationModel; //// [aliasUsageInArray_main.js] "use strict"; exports.__esModule = true; -require("./aliasUsageInArray_backbone"); var moduleA = require("./aliasUsageInArray_moduleA"); var xs = [moduleA]; var xs2 = [moduleA]; diff --git a/tests/baselines/reference/aliasUsageInFunctionExpression.js b/tests/baselines/reference/aliasUsageInFunctionExpression.js index 572aef8826222..18ec4ed2c0ada 100644 --- a/tests/baselines/reference/aliasUsageInFunctionExpression.js +++ b/tests/baselines/reference/aliasUsageInFunctionExpression.js @@ -57,7 +57,6 @@ exports.VisualizationModel = VisualizationModel; //// [aliasUsageInFunctionExpression_main.js] "use strict"; exports.__esModule = true; -require("./aliasUsageInFunctionExpression_backbone"); var moduleA = require("./aliasUsageInFunctionExpression_moduleA"); var f = function (x) { return x; }; f = function (x) { return moduleA; }; diff --git a/tests/baselines/reference/aliasUsageInGenericFunction.js b/tests/baselines/reference/aliasUsageInGenericFunction.js index c504767d16e11..9ec03624f1a72 100644 --- a/tests/baselines/reference/aliasUsageInGenericFunction.js +++ b/tests/baselines/reference/aliasUsageInGenericFunction.js @@ -61,7 +61,6 @@ exports.VisualizationModel = VisualizationModel; //// [aliasUsageInGenericFunction_main.js] "use strict"; exports.__esModule = true; -require("./aliasUsageInGenericFunction_backbone"); var moduleA = require("./aliasUsageInGenericFunction_moduleA"); function foo(x) { return x; diff --git a/tests/baselines/reference/aliasUsageInIndexerOfClass.js b/tests/baselines/reference/aliasUsageInIndexerOfClass.js index 357c113dfa149..beb62454069d7 100644 --- a/tests/baselines/reference/aliasUsageInIndexerOfClass.js +++ b/tests/baselines/reference/aliasUsageInIndexerOfClass.js @@ -63,7 +63,6 @@ exports.VisualizationModel = VisualizationModel; //// [aliasUsageInIndexerOfClass_main.js] "use strict"; exports.__esModule = true; -require("./aliasUsageInIndexerOfClass_backbone"); var moduleA = require("./aliasUsageInIndexerOfClass_moduleA"); var N = /** @class */ (function () { function N() { diff --git a/tests/baselines/reference/aliasUsageInObjectLiteral.js b/tests/baselines/reference/aliasUsageInObjectLiteral.js index 1bed851a66aef..aa70bdd700afd 100644 --- a/tests/baselines/reference/aliasUsageInObjectLiteral.js +++ b/tests/baselines/reference/aliasUsageInObjectLiteral.js @@ -58,7 +58,6 @@ exports.VisualizationModel = VisualizationModel; //// [aliasUsageInObjectLiteral_main.js] "use strict"; exports.__esModule = true; -require("./aliasUsageInObjectLiteral_backbone"); var moduleA = require("./aliasUsageInObjectLiteral_moduleA"); var a = { x: moduleA }; var b = { x: moduleA }; diff --git a/tests/baselines/reference/aliasUsageInOrExpression.js b/tests/baselines/reference/aliasUsageInOrExpression.js index c8e48afdc2673..e0969ae990169 100644 --- a/tests/baselines/reference/aliasUsageInOrExpression.js +++ b/tests/baselines/reference/aliasUsageInOrExpression.js @@ -61,7 +61,6 @@ exports.VisualizationModel = VisualizationModel; //// [aliasUsageInOrExpression_main.js] "use strict"; exports.__esModule = true; -require("./aliasUsageInOrExpression_backbone"); var moduleA = require("./aliasUsageInOrExpression_moduleA"); var i; var d1 = i || moduleA; diff --git a/tests/baselines/reference/aliasUsageInTypeArgumentOfExtendsClause.js b/tests/baselines/reference/aliasUsageInTypeArgumentOfExtendsClause.js index c87b086353aa8..8b6485aa2c4b0 100644 --- a/tests/baselines/reference/aliasUsageInTypeArgumentOfExtendsClause.js +++ b/tests/baselines/reference/aliasUsageInTypeArgumentOfExtendsClause.js @@ -74,7 +74,6 @@ var __extends = (this && this.__extends) || (function () { }; })(); exports.__esModule = true; -require("./aliasUsageInTypeArgumentOfExtendsClause_backbone"); var moduleA = require("./aliasUsageInTypeArgumentOfExtendsClause_moduleA"); var C = /** @class */ (function () { function C() { diff --git a/tests/baselines/reference/aliasUsageInVarAssignment.js b/tests/baselines/reference/aliasUsageInVarAssignment.js index 5a39fff68d43b..e51718537f44c 100644 --- a/tests/baselines/reference/aliasUsageInVarAssignment.js +++ b/tests/baselines/reference/aliasUsageInVarAssignment.js @@ -57,7 +57,5 @@ exports.VisualizationModel = VisualizationModel; //// [aliasUsageInVarAssignment_main.js] "use strict"; exports.__esModule = true; -require("./aliasUsageInVarAssignment_backbone"); -require("./aliasUsageInVarAssignment_moduleA"); var i; var m = i; diff --git a/tests/baselines/reference/aliasWithInterfaceExportAssignmentUsedInVarInitializer.js b/tests/baselines/reference/aliasWithInterfaceExportAssignmentUsedInVarInitializer.js index 3e69ac1bf224a..58565bbb91648 100644 --- a/tests/baselines/reference/aliasWithInterfaceExportAssignmentUsedInVarInitializer.js +++ b/tests/baselines/reference/aliasWithInterfaceExportAssignmentUsedInVarInitializer.js @@ -16,5 +16,4 @@ exports.__esModule = true; //// [aliasWithInterfaceExportAssignmentUsedInVarInitializer_1.js] "use strict"; exports.__esModule = true; -require("./aliasWithInterfaceExportAssignmentUsedInVarInitializer_0"); var d = b.q3; diff --git a/tests/baselines/reference/ambientDeclarationsExternal.js b/tests/baselines/reference/ambientDeclarationsExternal.js index 30840b7dcf760..ed413fb0d8e2f 100644 --- a/tests/baselines/reference/ambientDeclarationsExternal.js +++ b/tests/baselines/reference/ambientDeclarationsExternal.js @@ -28,8 +28,6 @@ var n: number; //// [consumer.js] "use strict"; exports.__esModule = true; -/// -require("equ"); // Ambient external module members are always exported with or without export keyword when module lacks export assignment var imp3 = require("equ2"); var n = imp3.x; diff --git a/tests/baselines/reference/amdImportNotAsPrimaryExpression.js b/tests/baselines/reference/amdImportNotAsPrimaryExpression.js index 7a11e733ac6eb..fe0a9be2a085d 100644 --- a/tests/baselines/reference/amdImportNotAsPrimaryExpression.js +++ b/tests/baselines/reference/amdImportNotAsPrimaryExpression.js @@ -51,7 +51,7 @@ define(["require", "exports"], function (require, exports) { })(E1 = exports.E1 || (exports.E1 = {})); }); //// [foo_1.js] -define(["require", "exports", "./foo_0"], function (require, exports) { +define(["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; var i; diff --git a/tests/baselines/reference/arrayOfExportedClass.js b/tests/baselines/reference/arrayOfExportedClass.js index c9c69c72f741c..2a41475c1cd33 100644 --- a/tests/baselines/reference/arrayOfExportedClass.js +++ b/tests/baselines/reference/arrayOfExportedClass.js @@ -34,8 +34,6 @@ var Car = /** @class */ (function () { module.exports = Car; //// [arrayOfExportedClass_1.js] "use strict"; -/// -require("./arrayOfExportedClass_0"); var Road = /** @class */ (function () { function Road() { } diff --git a/tests/baselines/reference/augmentExportEquals1.js b/tests/baselines/reference/augmentExportEquals1.js index 506037ebd0fd2..99a6e2e4bb00d 100644 --- a/tests/baselines/reference/augmentExportEquals1.js +++ b/tests/baselines/reference/augmentExportEquals1.js @@ -25,12 +25,12 @@ define(["require", "exports"], function (require, exports) { return x; }); //// [file2.js] -define(["require", "exports", "./file1"], function (require, exports) { +define(["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; }); //// [file3.js] -define(["require", "exports", "./file1", "./file2"], function (require, exports) { +define(["require", "exports", "./file2"], function (require, exports) { "use strict"; exports.__esModule = true; var a; // should not work diff --git a/tests/baselines/reference/augmentExportEquals1_1.js b/tests/baselines/reference/augmentExportEquals1_1.js index 27118fedf80c1..780043c81ca17 100644 --- a/tests/baselines/reference/augmentExportEquals1_1.js +++ b/tests/baselines/reference/augmentExportEquals1_1.js @@ -22,12 +22,12 @@ import "file2"; let a: x.A; // should not work //// [file2.js] -define(["require", "exports", "file1"], function (require, exports) { +define(["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; }); //// [file3.js] -define(["require", "exports", "file1", "file2"], function (require, exports) { +define(["require", "exports", "file2"], function (require, exports) { "use strict"; exports.__esModule = true; var a; // should not work diff --git a/tests/baselines/reference/augmentExportEquals2.js b/tests/baselines/reference/augmentExportEquals2.js index 6aeba040e9357..8ce1bb9010157 100644 --- a/tests/baselines/reference/augmentExportEquals2.js +++ b/tests/baselines/reference/augmentExportEquals2.js @@ -24,12 +24,12 @@ define(["require", "exports"], function (require, exports) { return foo; }); //// [file2.js] -define(["require", "exports", "./file1"], function (require, exports) { +define(["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; }); //// [file3.js] -define(["require", "exports", "./file1", "./file2"], function (require, exports) { +define(["require", "exports", "./file2"], function (require, exports) { "use strict"; exports.__esModule = true; var a; // should not work diff --git a/tests/baselines/reference/augmentExportEquals2_1.js b/tests/baselines/reference/augmentExportEquals2_1.js index dff75b9ae8496..93b76c0259c80 100644 --- a/tests/baselines/reference/augmentExportEquals2_1.js +++ b/tests/baselines/reference/augmentExportEquals2_1.js @@ -21,12 +21,12 @@ import "file2"; let a: x.A; // should not work //// [file2.js] -define(["require", "exports", "file1"], function (require, exports) { +define(["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; }); //// [file3.js] -define(["require", "exports", "file1", "file2"], function (require, exports) { +define(["require", "exports", "file2"], function (require, exports) { "use strict"; exports.__esModule = true; var a; // should not work diff --git a/tests/baselines/reference/augmentExportEquals6_1.js b/tests/baselines/reference/augmentExportEquals6_1.js index ab6740d1c372d..d1c7170993b9e 100644 --- a/tests/baselines/reference/augmentExportEquals6_1.js +++ b/tests/baselines/reference/augmentExportEquals6_1.js @@ -26,7 +26,7 @@ let a: x.A; let b = a.a; //// [file2.js] -define(["require", "exports", "file1"], function (require, exports) { +define(["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; }); diff --git a/tests/baselines/reference/badExternalModuleReference.js b/tests/baselines/reference/badExternalModuleReference.js index fa2d5d5983958..c1608b4c57e20 100644 --- a/tests/baselines/reference/badExternalModuleReference.js +++ b/tests/baselines/reference/badExternalModuleReference.js @@ -7,7 +7,7 @@ export declare var a: { //// [badExternalModuleReference.js] -define(["require", "exports", "garbage"], function (require, exports) { +define(["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; }); diff --git a/tests/baselines/reference/commentOnImportStatement1.js b/tests/baselines/reference/commentOnImportStatement1.js index 8da610a2a058d..a9d68d299ce19 100644 --- a/tests/baselines/reference/commentOnImportStatement1.js +++ b/tests/baselines/reference/commentOnImportStatement1.js @@ -6,7 +6,7 @@ import foo = require('./foo'); //// [commentOnImportStatement1.js] /* Copyright */ -define(["require", "exports", "./foo"], function (require, exports) { +define(["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; }); diff --git a/tests/baselines/reference/commentOnImportStatement2.js b/tests/baselines/reference/commentOnImportStatement2.js index 70068de4e55c9..5156fcdd0d1a5 100644 --- a/tests/baselines/reference/commentOnImportStatement2.js +++ b/tests/baselines/reference/commentOnImportStatement2.js @@ -5,5 +5,3 @@ import foo = require('./foo'); //// [commentOnImportStatement2.js] "use strict"; exports.__esModule = true; -/* not copyright */ -require("./foo"); diff --git a/tests/baselines/reference/commentOnImportStatement3.js b/tests/baselines/reference/commentOnImportStatement3.js index 8d93daa76c228..decc7a7878e72 100644 --- a/tests/baselines/reference/commentOnImportStatement3.js +++ b/tests/baselines/reference/commentOnImportStatement3.js @@ -8,5 +8,3 @@ import foo = require('./foo'); "use strict"; /* copyright */ exports.__esModule = true; -/* not copyright */ -require("./foo"); diff --git a/tests/baselines/reference/commentsMultiModuleMultiFile.js b/tests/baselines/reference/commentsMultiModuleMultiFile.js index 7cdb0ca308eb2..c06a568959442 100644 --- a/tests/baselines/reference/commentsMultiModuleMultiFile.js +++ b/tests/baselines/reference/commentsMultiModuleMultiFile.js @@ -71,7 +71,7 @@ define(["require", "exports"], function (require, exports) { new multiM.c(); }); //// [commentsMultiModuleMultiFile_1.js] -define(["require", "exports", "commentsMultiModuleMultiFile_0"], function (require, exports) { +define(["require", "exports"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); /** this is multi module 3 comment*/ diff --git a/tests/baselines/reference/commonJSImportNotAsPrimaryExpression.js b/tests/baselines/reference/commonJSImportNotAsPrimaryExpression.js index 07d0ef4ce4dfd..9a1e89136a6dc 100644 --- a/tests/baselines/reference/commonJSImportNotAsPrimaryExpression.js +++ b/tests/baselines/reference/commonJSImportNotAsPrimaryExpression.js @@ -51,7 +51,6 @@ var E1; //// [foo_1.js] "use strict"; exports.__esModule = true; -require("./foo_0"); var i; var x = {}; var y = false; diff --git a/tests/baselines/reference/commonJsImportClassExpression.js b/tests/baselines/reference/commonJsImportClassExpression.js index 93edeafa4d72a..b460814b8720b 100644 --- a/tests/baselines/reference/commonJsImportClassExpression.js +++ b/tests/baselines/reference/commonJsImportClassExpression.js @@ -22,5 +22,4 @@ module.exports = /** @class */ (function () { //// [use.js] "use strict"; exports.__esModule = true; -require("./mod1"); c.chunk; diff --git a/tests/baselines/reference/constEnumExternalModule.js b/tests/baselines/reference/constEnumExternalModule.js index a5a111969b7cc..8ea5625ac0797 100644 --- a/tests/baselines/reference/constEnumExternalModule.js +++ b/tests/baselines/reference/constEnumExternalModule.js @@ -16,7 +16,7 @@ define(["require", "exports"], function (require, exports) { exports.__esModule = true; }); //// [m2.js] -define(["require", "exports", "m1"], function (require, exports) { +define(["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; var v = 100 /* V */; diff --git a/tests/baselines/reference/declFileAliasUseBeforeDeclaration.js b/tests/baselines/reference/declFileAliasUseBeforeDeclaration.js index f16d286265685..c2360f3acbc1a 100644 --- a/tests/baselines/reference/declFileAliasUseBeforeDeclaration.js +++ b/tests/baselines/reference/declFileAliasUseBeforeDeclaration.js @@ -21,7 +21,6 @@ exports.Foo = Foo; exports.__esModule = true; function bar(a) { } exports.bar = bar; -require("./declFileAliasUseBeforeDeclaration_foo"); //// [declFileAliasUseBeforeDeclaration_foo.d.ts] diff --git a/tests/baselines/reference/declFileAmbientExternalModuleWithSingleExportedModule.js b/tests/baselines/reference/declFileAmbientExternalModuleWithSingleExportedModule.js index cf7b7b7ecdae5..627a1865d8fc8 100644 --- a/tests/baselines/reference/declFileAmbientExternalModuleWithSingleExportedModule.js +++ b/tests/baselines/reference/declFileAmbientExternalModuleWithSingleExportedModule.js @@ -21,8 +21,6 @@ export var x: SubModule.m.m3.c; //// [declFileAmbientExternalModuleWithSingleExportedModule_1.js] "use strict"; exports.__esModule = true; -/// -require("SubModule"); //// [declFileAmbientExternalModuleWithSingleExportedModule_0.d.ts] diff --git a/tests/baselines/reference/declFileExportAssignmentOfGenericInterface.js b/tests/baselines/reference/declFileExportAssignmentOfGenericInterface.js index f8ab57ada4603..cefff0be4eac9 100644 --- a/tests/baselines/reference/declFileExportAssignmentOfGenericInterface.js +++ b/tests/baselines/reference/declFileExportAssignmentOfGenericInterface.js @@ -17,7 +17,7 @@ define(["require", "exports"], function (require, exports) { exports.__esModule = true; }); //// [declFileExportAssignmentOfGenericInterface_1.js] -define(["require", "exports", "declFileExportAssignmentOfGenericInterface_0"], function (require, exports) { +define(["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; exports.x.a; diff --git a/tests/baselines/reference/declFileExportImportChain.js b/tests/baselines/reference/declFileExportImportChain.js index 767e57c677a94..8a6b297f81d3f 100644 --- a/tests/baselines/reference/declFileExportImportChain.js +++ b/tests/baselines/reference/declFileExportImportChain.js @@ -58,7 +58,7 @@ define(["require", "exports", "declFileExportImportChain_b1"], function (require exports.b1 = b1; }); //// [declFileExportImportChain_d.js] -define(["require", "exports", "declFileExportImportChain_c"], function (require, exports) { +define(["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; }); diff --git a/tests/baselines/reference/declFileExportImportChain2.js b/tests/baselines/reference/declFileExportImportChain2.js index 7c56962d966f0..684ac2a1dfbe2 100644 --- a/tests/baselines/reference/declFileExportImportChain2.js +++ b/tests/baselines/reference/declFileExportImportChain2.js @@ -49,7 +49,7 @@ define(["require", "exports", "declFileExportImportChain2_b"], function (require exports.b = b; }); //// [declFileExportImportChain2_d.js] -define(["require", "exports", "declFileExportImportChain2_c"], function (require, exports) { +define(["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; }); diff --git a/tests/baselines/reference/decoratorOnImportEquals2.js b/tests/baselines/reference/decoratorOnImportEquals2.js index 5947204409ea4..aa8273699e38e 100644 --- a/tests/baselines/reference/decoratorOnImportEquals2.js +++ b/tests/baselines/reference/decoratorOnImportEquals2.js @@ -15,4 +15,3 @@ exports.__esModule = true; //// [decoratorOnImportEquals2_1.js] "use strict"; exports.__esModule = true; -require("./decoratorOnImportEquals2_0"); diff --git a/tests/baselines/reference/errorsOnImportedSymbol.js b/tests/baselines/reference/errorsOnImportedSymbol.js index 7721eb25762be..2d784b04d6558 100644 --- a/tests/baselines/reference/errorsOnImportedSymbol.js +++ b/tests/baselines/reference/errorsOnImportedSymbol.js @@ -20,6 +20,5 @@ Object.defineProperty(exports, "__esModule", { value: true }); //// [errorsOnImportedSymbol_1.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -require("./errorsOnImportedSymbol_0"); var x = new Sammy.Sammy(); var y = Sammy.Sammy(); diff --git a/tests/baselines/reference/es6ExportEqualsInterop.js b/tests/baselines/reference/es6ExportEqualsInterop.js index 242472373754d..13908a29e2d6b 100644 --- a/tests/baselines/reference/es6ExportEqualsInterop.js +++ b/tests/baselines/reference/es6ExportEqualsInterop.js @@ -213,8 +213,6 @@ function __export(m) { for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } exports.__esModule = true; -// import-equals -require("interface"); var z2 = require("variable"); var z3 = require("interface-variable"); var z4 = require("module"); diff --git a/tests/baselines/reference/es6ImportEqualsDeclaration.js b/tests/baselines/reference/es6ImportEqualsDeclaration.js index 8ef9678fa1f56..1ca0e94cf8aa9 100644 --- a/tests/baselines/reference/es6ImportEqualsDeclaration.js +++ b/tests/baselines/reference/es6ImportEqualsDeclaration.js @@ -10,4 +10,3 @@ import a = require("server"); //// [server.js] var a = 10; //// [client.js] -import "server"; diff --git a/tests/baselines/reference/es6modulekindWithES5Target10.js b/tests/baselines/reference/es6modulekindWithES5Target10.js index 616b3638f512f..037ff12a0b086 100644 --- a/tests/baselines/reference/es6modulekindWithES5Target10.js +++ b/tests/baselines/reference/es6modulekindWithES5Target10.js @@ -7,4 +7,3 @@ namespace N { export = N; // Error //// [es6modulekindWithES5Target10.js] -import "mod"; // Error; diff --git a/tests/baselines/reference/esnextmodulekindWithES5Target10.js b/tests/baselines/reference/esnextmodulekindWithES5Target10.js index 01b461f3c61cf..e68e1d72b982b 100644 --- a/tests/baselines/reference/esnextmodulekindWithES5Target10.js +++ b/tests/baselines/reference/esnextmodulekindWithES5Target10.js @@ -7,4 +7,3 @@ namespace N { export = N; // Error //// [esnextmodulekindWithES5Target10.js] -import "mod"; // Error; diff --git a/tests/baselines/reference/exportAssignClassAndModule.js b/tests/baselines/reference/exportAssignClassAndModule.js index 3feb603224828..ba3d04c8f53f1 100644 --- a/tests/baselines/reference/exportAssignClassAndModule.js +++ b/tests/baselines/reference/exportAssignClassAndModule.js @@ -29,8 +29,6 @@ module.exports = Foo; //// [exportAssignClassAndModule_1.js] "use strict"; exports.__esModule = true; -/// -require("./exportAssignClassAndModule_0"); var z; var zz; zz.x; diff --git a/tests/baselines/reference/exportAssignedTypeAsTypeAnnotation.js b/tests/baselines/reference/exportAssignedTypeAsTypeAnnotation.js index 4b997d4616a4f..2d36cffdd176e 100644 --- a/tests/baselines/reference/exportAssignedTypeAsTypeAnnotation.js +++ b/tests/baselines/reference/exportAssignedTypeAsTypeAnnotation.js @@ -19,7 +19,7 @@ define(["require", "exports"], function (require, exports) { exports.__esModule = true; }); //// [exportAssignedTypeAsTypeAnnotation_1.js] -define(["require", "exports", "exportAssignedTypeAsTypeAnnotation_0"], function (require, exports) { +define(["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; var t2; // should not raise a 'container type' error diff --git a/tests/baselines/reference/exportAssignmentInterface.js b/tests/baselines/reference/exportAssignmentInterface.js index 0163eb6a03b86..f3cc9ae9bbe8c 100644 --- a/tests/baselines/reference/exportAssignmentInterface.js +++ b/tests/baselines/reference/exportAssignmentInterface.js @@ -20,7 +20,7 @@ define(["require", "exports"], function (require, exports) { exports.__esModule = true; }); //// [exportAssignmentInterface_B.js] -define(["require", "exports", "exportAssignmentInterface_A"], function (require, exports) { +define(["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; var i; diff --git a/tests/baselines/reference/exportAssignmentMergedInterface.js b/tests/baselines/reference/exportAssignmentMergedInterface.js index 8423f4b52c35d..3ee760dedfa54 100644 --- a/tests/baselines/reference/exportAssignmentMergedInterface.js +++ b/tests/baselines/reference/exportAssignmentMergedInterface.js @@ -28,7 +28,7 @@ define(["require", "exports"], function (require, exports) { exports.__esModule = true; }); //// [foo_1.js] -define(["require", "exports", "./foo_0"], function (require, exports) { +define(["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; var x; diff --git a/tests/baselines/reference/exportAssignmentOfDeclaredExternalModule.js b/tests/baselines/reference/exportAssignmentOfDeclaredExternalModule.js index d0b96cda3def4..6c61eeedfc110 100644 --- a/tests/baselines/reference/exportAssignmentOfDeclaredExternalModule.js +++ b/tests/baselines/reference/exportAssignmentOfDeclaredExternalModule.js @@ -22,8 +22,6 @@ exports.__esModule = true; //// [exportAssignmentOfDeclaredExternalModule_1.js] "use strict"; exports.__esModule = true; -/// -require("./exportAssignmentOfDeclaredExternalModule_0"); var x = new Sammy(); // error to use as constructor as there is not constructor symbol var y = Sammy(); // error to use interface name as call target var z; // no error - z is of type interface Sammy from module 'M' diff --git a/tests/baselines/reference/exportImportNonInstantiatedModule2.js b/tests/baselines/reference/exportImportNonInstantiatedModule2.js index 2038e46996d86..a1217fa485b5e 100644 --- a/tests/baselines/reference/exportImportNonInstantiatedModule2.js +++ b/tests/baselines/reference/exportImportNonInstantiatedModule2.js @@ -20,12 +20,12 @@ define(["require", "exports"], function (require, exports) { exports.__esModule = true; }); //// [exporter.js] -define(["require", "exports", "./w1"], function (require, exports) { +define(["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; }); //// [consumer.js] -define(["require", "exports", "./exporter"], function (require, exports) { +define(["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; function w() { diff --git a/tests/baselines/reference/extendingClassFromAliasAndUsageInIndexer.js b/tests/baselines/reference/extendingClassFromAliasAndUsageInIndexer.js index 917eadc4f65b2..a25d6dc5f3690 100644 --- a/tests/baselines/reference/extendingClassFromAliasAndUsageInIndexer.js +++ b/tests/baselines/reference/extendingClassFromAliasAndUsageInIndexer.js @@ -94,7 +94,6 @@ exports.VisualizationModel = VisualizationModel; //// [extendingClassFromAliasAndUsageInIndexer_main.js] "use strict"; exports.__esModule = true; -require("./extendingClassFromAliasAndUsageInIndexer_backbone"); var moduleA = require("./extendingClassFromAliasAndUsageInIndexer_moduleA"); var moduleB = require("./extendingClassFromAliasAndUsageInIndexer_moduleB"); var moduleATyped = moduleA; diff --git a/tests/baselines/reference/importDecl.js b/tests/baselines/reference/importDecl.js index b5401b4b029c2..2eb9208910a07 100644 --- a/tests/baselines/reference/importDecl.js +++ b/tests/baselines/reference/importDecl.js @@ -129,7 +129,6 @@ exports.foo = foo; //// [importDecl_require4.js] "use strict"; exports.__esModule = true; -require("./importDecl_require"); function foo2() { return null; } exports.foo2 = foo2; //// [importDecl_1.js] diff --git a/tests/baselines/reference/importDeclRefereingExternalModuleWithNoResolve.js b/tests/baselines/reference/importDeclRefereingExternalModuleWithNoResolve.js index 3f73164523164..1aadcb875f08b 100644 --- a/tests/baselines/reference/importDeclRefereingExternalModuleWithNoResolve.js +++ b/tests/baselines/reference/importDeclRefereingExternalModuleWithNoResolve.js @@ -8,4 +8,3 @@ declare module "m1" { //// [importDeclRefereingExternalModuleWithNoResolve.js] "use strict"; exports.__esModule = true; -require("externalModule"); diff --git a/tests/baselines/reference/importDeclarationUsedAsTypeQuery.js b/tests/baselines/reference/importDeclarationUsedAsTypeQuery.js index 51c88cec56cf6..a6431f6a2c3f0 100644 --- a/tests/baselines/reference/importDeclarationUsedAsTypeQuery.js +++ b/tests/baselines/reference/importDeclarationUsedAsTypeQuery.js @@ -23,8 +23,6 @@ exports.B = B; //// [importDeclarationUsedAsTypeQuery_1.js] "use strict"; exports.__esModule = true; -/// -require("./importDeclarationUsedAsTypeQuery_require"); //// [importDeclarationUsedAsTypeQuery_require.d.ts] diff --git a/tests/baselines/reference/importImportOnlyModule.js b/tests/baselines/reference/importImportOnlyModule.js index b7162697ef1d2..2bba9ec447842 100644 --- a/tests/baselines/reference/importImportOnlyModule.js +++ b/tests/baselines/reference/importImportOnlyModule.js @@ -29,7 +29,7 @@ define(["require", "exports"], function (require, exports) { exports.C1 = C1; }); //// [foo_1.js] -define(["require", "exports", "./foo_0"], function (require, exports) { +define(["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; var answer = 42; // No exports diff --git a/tests/baselines/reference/importNonStringLiteral.js b/tests/baselines/reference/importNonStringLiteral.js index d4250c81c4cfa..eb76621f7c06e 100644 --- a/tests/baselines/reference/importNonStringLiteral.js +++ b/tests/baselines/reference/importNonStringLiteral.js @@ -7,4 +7,3 @@ import foo = require(x); // invalid "use strict"; exports.__esModule = true; var x = "filename"; -require(); // invalid diff --git a/tests/baselines/reference/import_unneeded-require-when-referenecing-aliased-type-throug-array.js b/tests/baselines/reference/import_unneeded-require-when-referenecing-aliased-type-throug-array.js index adac33fc6a0e6..1cd0376ddedf1 100644 --- a/tests/baselines/reference/import_unneeded-require-when-referenecing-aliased-type-throug-array.js +++ b/tests/baselines/reference/import_unneeded-require-when-referenecing-aliased-type-throug-array.js @@ -17,7 +17,7 @@ var p = testData[0].name; //// [b.js] //// [a.js] -define(["require", "exports", "ITest"], function (require, exports) { +define(["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; var testData; diff --git a/tests/baselines/reference/importedAliasesInTypePositions.js b/tests/baselines/reference/importedAliasesInTypePositions.js index 28a0c096966b8..aad4739b7766d 100644 --- a/tests/baselines/reference/importedAliasesInTypePositions.js +++ b/tests/baselines/reference/importedAliasesInTypePositions.js @@ -44,7 +44,7 @@ define(["require", "exports"], function (require, exports) { })(elaborate = exports.elaborate || (exports.elaborate = {})); }); //// [file2.js] -define(["require", "exports", "file1"], function (require, exports) { +define(["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; var ImportingModule; diff --git a/tests/baselines/reference/isolatedModulesReExportType.js b/tests/baselines/reference/isolatedModulesReExportType.js index 292eea217cf20..f057395fc3039 100644 --- a/tests/baselines/reference/isolatedModulesReExportType.js +++ b/tests/baselines/reference/isolatedModulesReExportType.js @@ -59,7 +59,6 @@ exports.C = C; //// [user.js] "use strict"; exports.__esModule = true; -require("./exportEqualsT"); // OK, has a value side var exportValue_1 = require("./exportValue"); exports.C = exportValue_1.C; diff --git a/tests/baselines/reference/isolatedModules_resolveJsonModule.js b/tests/baselines/reference/isolatedModules_resolveJsonModule.js index 88168d3699e31..cdff02c07f0b7 100644 --- a/tests/baselines/reference/isolatedModules_resolveJsonModule.js +++ b/tests/baselines/reference/isolatedModules_resolveJsonModule.js @@ -10,4 +10,3 @@ import j = require("./j.json"); //// [a.js] "use strict"; exports.__esModule = true; -require("./j.json"); diff --git a/tests/baselines/reference/missingImportAfterModuleImport.js b/tests/baselines/reference/missingImportAfterModuleImport.js index 85fcf8b7fdc10..a66e96932a3fc 100644 --- a/tests/baselines/reference/missingImportAfterModuleImport.js +++ b/tests/baselines/reference/missingImportAfterModuleImport.js @@ -25,8 +25,6 @@ export = MainModule; //// [missingImportAfterModuleImport_0.js] //// [missingImportAfterModuleImport_1.js] "use strict"; -/// -require("SubModule"); var MainModule = /** @class */ (function () { function MainModule() { } diff --git a/tests/baselines/reference/moduleAugmentationDuringSyntheticDefaultCheck.js b/tests/baselines/reference/moduleAugmentationDuringSyntheticDefaultCheck.js index a0b5e178464f5..56fc58063254f 100644 --- a/tests/baselines/reference/moduleAugmentationDuringSyntheticDefaultCheck.js +++ b/tests/baselines/reference/moduleAugmentationDuringSyntheticDefaultCheck.js @@ -41,4 +41,3 @@ exports.__esModule = true; "use strict"; /// exports.__esModule = true; -require("moment-timezone"); diff --git a/tests/baselines/reference/moduleImportedForTypeArgumentPosition.js b/tests/baselines/reference/moduleImportedForTypeArgumentPosition.js index 5f78813d96204..b0ad743cffac3 100644 --- a/tests/baselines/reference/moduleImportedForTypeArgumentPosition.js +++ b/tests/baselines/reference/moduleImportedForTypeArgumentPosition.js @@ -30,7 +30,7 @@ var __extends = (this && this.__extends) || (function () { d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); -define(["require", "exports", "moduleImportedForTypeArgumentPosition_0"], function (require, exports) { +define(["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; var C1 = /** @class */ (function () { diff --git a/tests/baselines/reference/moduleInTypePosition1.js b/tests/baselines/reference/moduleInTypePosition1.js index 3e5d421d8fd87..3781b4ae5b7df 100644 --- a/tests/baselines/reference/moduleInTypePosition1.js +++ b/tests/baselines/reference/moduleInTypePosition1.js @@ -23,6 +23,4 @@ exports.Promise = Promise; //// [moduleInTypePosition1_1.js] "use strict"; exports.__esModule = true; -/// -require("./moduleInTypePosition1_0"); var x = function (w1) { }; diff --git a/tests/baselines/reference/moduleResolutionNoResolve.js b/tests/baselines/reference/moduleResolutionNoResolve.js index 3f194c7c5369c..d1b5315903cda 100644 --- a/tests/baselines/reference/moduleResolutionNoResolve.js +++ b/tests/baselines/reference/moduleResolutionNoResolve.js @@ -10,7 +10,6 @@ export var c = ''; //// [a.js] "use strict"; exports.__esModule = true; -require("./b"); //// [b.js] "use strict"; exports.__esModule = true; diff --git a/tests/baselines/reference/nodeResolution1.js b/tests/baselines/reference/nodeResolution1.js index c97492c00dc54..91f423084d84b 100644 --- a/tests/baselines/reference/nodeResolution1.js +++ b/tests/baselines/reference/nodeResolution1.js @@ -13,4 +13,3 @@ exports.x = 1; //// [b.js] "use strict"; exports.__esModule = true; -require("./a"); diff --git a/tests/baselines/reference/nodeResolution2.js b/tests/baselines/reference/nodeResolution2.js index 0ebebe36e2b87..0d66b012ca76a 100644 --- a/tests/baselines/reference/nodeResolution2.js +++ b/tests/baselines/reference/nodeResolution2.js @@ -9,4 +9,3 @@ import y = require("a"); //// [b.js] "use strict"; exports.__esModule = true; -require("a"); diff --git a/tests/baselines/reference/nodeResolution3.js b/tests/baselines/reference/nodeResolution3.js index 1013084531a27..74eeec7057bc4 100644 --- a/tests/baselines/reference/nodeResolution3.js +++ b/tests/baselines/reference/nodeResolution3.js @@ -9,4 +9,3 @@ import y = require("b"); //// [a.js] "use strict"; exports.__esModule = true; -require("b"); diff --git a/tests/baselines/reference/nodeResolution4.js b/tests/baselines/reference/nodeResolution4.js index f93727c611eb8..3285f3b8e20b9 100644 --- a/tests/baselines/reference/nodeResolution4.js +++ b/tests/baselines/reference/nodeResolution4.js @@ -18,4 +18,3 @@ exports.__esModule = true; //// [b.js] "use strict"; exports.__esModule = true; -require("./a"); diff --git a/tests/baselines/reference/nodeResolution5.js b/tests/baselines/reference/nodeResolution5.js index bcd3410346d40..3dfedea4aab02 100644 --- a/tests/baselines/reference/nodeResolution5.js +++ b/tests/baselines/reference/nodeResolution5.js @@ -12,4 +12,3 @@ import y = require("a"); //// [b.js] "use strict"; exports.__esModule = true; -require("a"); diff --git a/tests/baselines/reference/nodeResolution6.js b/tests/baselines/reference/nodeResolution6.js index d5aeea783bdcc..0610c53edcf4c 100644 --- a/tests/baselines/reference/nodeResolution6.js +++ b/tests/baselines/reference/nodeResolution6.js @@ -15,4 +15,3 @@ import y = require("a"); //// [b.js] "use strict"; exports.__esModule = true; -require("a"); diff --git a/tests/baselines/reference/nodeResolution7.js b/tests/baselines/reference/nodeResolution7.js index 1e1a7c6269fc0..118f9cd3994cc 100644 --- a/tests/baselines/reference/nodeResolution7.js +++ b/tests/baselines/reference/nodeResolution7.js @@ -12,4 +12,3 @@ import y = require("a"); //// [b.js] "use strict"; exports.__esModule = true; -require("a"); diff --git a/tests/baselines/reference/nodeResolution8.js b/tests/baselines/reference/nodeResolution8.js index b3d79517afe32..59a6ee67ec8dc 100644 --- a/tests/baselines/reference/nodeResolution8.js +++ b/tests/baselines/reference/nodeResolution8.js @@ -14,4 +14,3 @@ import y = require("a"); //// [b.js] "use strict"; exports.__esModule = true; -require("a"); diff --git a/tests/baselines/reference/packageJsonMain_isNonRecursive.js b/tests/baselines/reference/packageJsonMain_isNonRecursive.js index bee207d240951..61d98c81f112e 100644 --- a/tests/baselines/reference/packageJsonMain_isNonRecursive.js +++ b/tests/baselines/reference/packageJsonMain_isNonRecursive.js @@ -16,4 +16,3 @@ import foo = require("foo"); //// [a.js] "use strict"; exports.__esModule = true; -require("foo"); diff --git a/tests/baselines/reference/privacyCheckExternalModuleExportAssignmentOfGenericClass.js b/tests/baselines/reference/privacyCheckExternalModuleExportAssignmentOfGenericClass.js index 4c90004fa6c8e..5896705071b1d 100644 --- a/tests/baselines/reference/privacyCheckExternalModuleExportAssignmentOfGenericClass.js +++ b/tests/baselines/reference/privacyCheckExternalModuleExportAssignmentOfGenericClass.js @@ -25,7 +25,6 @@ module.exports = Foo; //// [privacyCheckExternalModuleExportAssignmentOfGenericClass_1.js] "use strict"; exports.__esModule = true; -require("./privacyCheckExternalModuleExportAssignmentOfGenericClass_0"); //// [privacyCheckExternalModuleExportAssignmentOfGenericClass_0.d.ts] diff --git a/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithoutExport.js b/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithoutExport.js index cbeb40bbc7cf4..14b52a1ea3ade 100644 --- a/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithoutExport.js +++ b/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithoutExport.js @@ -73,7 +73,7 @@ define(["require", "exports"], function (require, exports) { exports.c_public = c_public; }); //// [privacyTopLevelAmbientExternalModuleImportWithoutExport_core.js] -define(["require", "exports", "m", "m2", "privacyTopLevelAmbientExternalModuleImportWithoutExport_require", "privacyTopLevelAmbientExternalModuleImportWithoutExport_require1"], function (require, exports, im_private_mi_private, im_private_mu_private, im_private_mi_public) { +define(["require", "exports", "m", "m2", "privacyTopLevelAmbientExternalModuleImportWithoutExport_require"], function (require, exports, im_private_mi_private, im_private_mu_private, im_private_mi_public) { "use strict"; exports.__esModule = true; // Usage of privacy error imports diff --git a/tests/baselines/reference/project/baseline2/amd/dont_emit.js b/tests/baselines/reference/project/baseline2/amd/dont_emit.js index 945d897c0932b..18dae0f6420b3 100644 --- a/tests/baselines/reference/project/baseline2/amd/dont_emit.js +++ b/tests/baselines/reference/project/baseline2/amd/dont_emit.js @@ -1,4 +1,4 @@ -define(["require", "exports", "decl"], function (require, exports) { +define(["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; var p = { x: 10, y: 20 }; diff --git a/tests/baselines/reference/project/baseline2/node/dont_emit.js b/tests/baselines/reference/project/baseline2/node/dont_emit.js index a7359784966bc..ce766eee086a3 100644 --- a/tests/baselines/reference/project/baseline2/node/dont_emit.js +++ b/tests/baselines/reference/project/baseline2/node/dont_emit.js @@ -1,4 +1,3 @@ "use strict"; exports.__esModule = true; -require("decl"); var p = { x: 10, y: 20 }; diff --git a/tests/baselines/reference/project/nonRelative/amd/lib/foo/a.js b/tests/baselines/reference/project/nonRelative/amd/lib/foo/a.js index 2c6af2dd7788d..b92af88609dd4 100644 --- a/tests/baselines/reference/project/nonRelative/amd/lib/foo/a.js +++ b/tests/baselines/reference/project/nonRelative/amd/lib/foo/a.js @@ -1,4 +1,4 @@ -define(["require", "exports", "lib/foo/b"], function (require, exports) { +define(["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; function hello() { } diff --git a/tests/baselines/reference/project/nonRelative/node/lib/foo/a.js b/tests/baselines/reference/project/nonRelative/node/lib/foo/a.js index 8b40abebc0144..c83848543b20f 100644 --- a/tests/baselines/reference/project/nonRelative/node/lib/foo/a.js +++ b/tests/baselines/reference/project/nonRelative/node/lib/foo/a.js @@ -1,5 +1,4 @@ "use strict"; exports.__esModule = true; -require("lib/foo/b"); function hello() { } exports.hello = hello; diff --git a/tests/baselines/reference/project/visibilityOfTypeUsedAcrossModules/amd/commands.js b/tests/baselines/reference/project/visibilityOfTypeUsedAcrossModules/amd/commands.js index c84e7ec28a0c9..eb08364649a70 100644 --- a/tests/baselines/reference/project/visibilityOfTypeUsedAcrossModules/amd/commands.js +++ b/tests/baselines/reference/project/visibilityOfTypeUsedAcrossModules/amd/commands.js @@ -1,4 +1,4 @@ -define(["require", "exports", "fs", "server"], function (require, exports) { +define(["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; }); diff --git a/tests/baselines/reference/project/visibilityOfTypeUsedAcrossModules/amd/fs.js b/tests/baselines/reference/project/visibilityOfTypeUsedAcrossModules/amd/fs.js index f48ea108d9cbe..b07077a35d0e0 100644 --- a/tests/baselines/reference/project/visibilityOfTypeUsedAcrossModules/amd/fs.js +++ b/tests/baselines/reference/project/visibilityOfTypeUsedAcrossModules/amd/fs.js @@ -1,4 +1,4 @@ -define(["require", "exports", "./commands"], function (require, exports) { +define(["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; var RM = /** @class */ (function () { diff --git a/tests/baselines/reference/project/visibilityOfTypeUsedAcrossModules/node/commands.js b/tests/baselines/reference/project/visibilityOfTypeUsedAcrossModules/node/commands.js index 19cf3640c0562..64cbe53a86127 100644 --- a/tests/baselines/reference/project/visibilityOfTypeUsedAcrossModules/node/commands.js +++ b/tests/baselines/reference/project/visibilityOfTypeUsedAcrossModules/node/commands.js @@ -1,4 +1,2 @@ "use strict"; exports.__esModule = true; -require("fs"); -require("server"); diff --git a/tests/baselines/reference/project/visibilityOfTypeUsedAcrossModules/node/fs.js b/tests/baselines/reference/project/visibilityOfTypeUsedAcrossModules/node/fs.js index e7666100a8186..8baa948ca7aea 100644 --- a/tests/baselines/reference/project/visibilityOfTypeUsedAcrossModules/node/fs.js +++ b/tests/baselines/reference/project/visibilityOfTypeUsedAcrossModules/node/fs.js @@ -1,6 +1,5 @@ "use strict"; exports.__esModule = true; -require("./commands"); var RM = /** @class */ (function () { function RM() { } diff --git a/tests/baselines/reference/propertyIdentityWithPrivacyMismatch.js b/tests/baselines/reference/propertyIdentityWithPrivacyMismatch.js index e344c86fe01e4..fd3edbcb52cbe 100644 --- a/tests/baselines/reference/propertyIdentityWithPrivacyMismatch.js +++ b/tests/baselines/reference/propertyIdentityWithPrivacyMismatch.js @@ -29,7 +29,7 @@ var y: Foo2; //// [propertyIdentityWithPrivacyMismatch_0.js] //// [propertyIdentityWithPrivacyMismatch_1.js] -define(["require", "exports", "mod1", "mod2"], function (require, exports) { +define(["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; var x; diff --git a/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType1.js b/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType1.js index 417f6758638cc..151c719e0bd11 100644 --- a/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType1.js +++ b/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType1.js @@ -27,7 +27,7 @@ define(["require", "exports"], function (require, exports) { return ClassB; }); //// [recursiveExportAssignmentAndFindAliasedType1_moduleA.js] -define(["require", "exports", "moduleC", "recursiveExportAssignmentAndFindAliasedType1_moduleB"], function (require, exports) { +define(["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; }); diff --git a/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType2.js b/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType2.js index 5fbf6360d814f..3ef3cc597f5fe 100644 --- a/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType2.js +++ b/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType2.js @@ -31,7 +31,7 @@ define(["require", "exports"], function (require, exports) { return ClassB; }); //// [recursiveExportAssignmentAndFindAliasedType2_moduleA.js] -define(["require", "exports", "moduleC", "recursiveExportAssignmentAndFindAliasedType2_moduleB"], function (require, exports) { +define(["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; }); diff --git a/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType3.js b/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType3.js index 489920a2067fd..53ad4b5346468 100644 --- a/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType3.js +++ b/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType3.js @@ -35,7 +35,7 @@ define(["require", "exports"], function (require, exports) { return ClassB; }); //// [recursiveExportAssignmentAndFindAliasedType3_moduleA.js] -define(["require", "exports", "moduleC", "recursiveExportAssignmentAndFindAliasedType3_moduleB"], function (require, exports) { +define(["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; }); diff --git a/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType4.js b/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType4.js index 266e6acda24ea..2ab16bea5ba88 100644 --- a/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType4.js +++ b/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType4.js @@ -29,7 +29,7 @@ define(["require", "exports"], function (require, exports) { return ClassB; }); //// [recursiveExportAssignmentAndFindAliasedType4_moduleA.js] -define(["require", "exports", "recursiveExportAssignmentAndFindAliasedType4_moduleC", "recursiveExportAssignmentAndFindAliasedType4_moduleB"], function (require, exports) { +define(["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; }); diff --git a/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType5.js b/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType5.js index 574be573d6322..2fd8490563264 100644 --- a/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType5.js +++ b/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType5.js @@ -38,7 +38,7 @@ define(["require", "exports"], function (require, exports) { return ClassB; }); //// [recursiveExportAssignmentAndFindAliasedType5_moduleA.js] -define(["require", "exports", "recursiveExportAssignmentAndFindAliasedType5_moduleC", "recursiveExportAssignmentAndFindAliasedType5_moduleB"], function (require, exports) { +define(["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; }); diff --git a/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType6.js b/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType6.js index 70af971cf6310..6d5cc60f5e4fd 100644 --- a/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType6.js +++ b/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType6.js @@ -47,7 +47,7 @@ define(["require", "exports"], function (require, exports) { return ClassB; }); //// [recursiveExportAssignmentAndFindAliasedType6_moduleA.js] -define(["require", "exports", "recursiveExportAssignmentAndFindAliasedType6_moduleC", "recursiveExportAssignmentAndFindAliasedType6_moduleB"], function (require, exports) { +define(["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; }); diff --git a/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType7.js b/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType7.js index fccfa1b273030..c4bc8804f60e5 100644 --- a/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType7.js +++ b/tests/baselines/reference/recursiveExportAssignmentAndFindAliasedType7.js @@ -49,7 +49,7 @@ define(["require", "exports"], function (require, exports) { return ClassB; }); //// [recursiveExportAssignmentAndFindAliasedType7_moduleA.js] -define(["require", "exports", "recursiveExportAssignmentAndFindAliasedType7_moduleC", "recursiveExportAssignmentAndFindAliasedType7_moduleB"], function (require, exports) { +define(["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; }); diff --git a/tests/baselines/reference/requireOfAnEmptyFile1.js b/tests/baselines/reference/requireOfAnEmptyFile1.js index 465f55896a117..e792d9fa763f5 100644 --- a/tests/baselines/reference/requireOfAnEmptyFile1.js +++ b/tests/baselines/reference/requireOfAnEmptyFile1.js @@ -13,4 +13,3 @@ import fs = require('./requireOfAnEmptyFile1_b'); "use strict"; //requireOfAnEmptyFile1 exports.__esModule = true; -require("./requireOfAnEmptyFile1_b"); diff --git a/tests/baselines/reference/requireOfJsonFileNonRelativeWithoutExtension.js b/tests/baselines/reference/requireOfJsonFileNonRelativeWithoutExtension.js index 6f687b3d4cedd..7a85dff350116 100644 --- a/tests/baselines/reference/requireOfJsonFileNonRelativeWithoutExtension.js +++ b/tests/baselines/reference/requireOfJsonFileNonRelativeWithoutExtension.js @@ -25,5 +25,3 @@ import e = require("e"); // Should fail //// [out/file1.js] "use strict"; exports.__esModule = true; -require("d.json"); // Should fail -require("e"); // Should fail diff --git a/tests/baselines/reference/reuseInnerModuleMember.js b/tests/baselines/reference/reuseInnerModuleMember.js index 659caba1c8f4d..d432daed2a721 100644 --- a/tests/baselines/reference/reuseInnerModuleMember.js +++ b/tests/baselines/reference/reuseInnerModuleMember.js @@ -22,7 +22,6 @@ exports.__esModule = true; "use strict"; exports.__esModule = true; /// -require("./reuseInnerModuleMember_0"); var bar; (function (bar) { var x; diff --git a/tests/baselines/reference/staticInstanceResolution5.js b/tests/baselines/reference/staticInstanceResolution5.js index 7ae6fc9d5f7b4..d66531ff7b676 100644 --- a/tests/baselines/reference/staticInstanceResolution5.js +++ b/tests/baselines/reference/staticInstanceResolution5.js @@ -31,7 +31,7 @@ define(["require", "exports"], function (require, exports) { exports.Promise = Promise; }); //// [staticInstanceResolution5_1.js] -define(["require", "exports", "staticInstanceResolution5_0"], function (require, exports) { +define(["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; // these 3 should be errors diff --git a/tests/baselines/reference/strictModeReservedWordInImportEqualDeclaration.js b/tests/baselines/reference/strictModeReservedWordInImportEqualDeclaration.js index 68f0c55da4f45..16e8580e727cb 100644 --- a/tests/baselines/reference/strictModeReservedWordInImportEqualDeclaration.js +++ b/tests/baselines/reference/strictModeReservedWordInImportEqualDeclaration.js @@ -5,4 +5,3 @@ import public = require("1"); //// [strictModeReservedWordInImportEqualDeclaration.js] "use strict"; exports.__esModule = true; -require("1"); diff --git a/tests/baselines/reference/tsxElementResolution17.js b/tests/baselines/reference/tsxElementResolution17.js index 74886cf79a2a6..1f61a441d66b9 100644 --- a/tests/baselines/reference/tsxElementResolution17.js +++ b/tests/baselines/reference/tsxElementResolution17.js @@ -28,7 +28,7 @@ import s2 = require('elements2'); //// [file.jsx] //// [consumer.jsx] -define(["require", "exports", "elements1", "elements2"], function (require, exports, s1) { +define(["require", "exports", "elements1"], function (require, exports, s1) { "use strict"; exports.__esModule = true; ; diff --git a/tests/baselines/reference/typeUsedAsValueError2.js b/tests/baselines/reference/typeUsedAsValueError2.js index 7ebdb01886905..2c068d4f4d27e 100644 --- a/tests/baselines/reference/typeUsedAsValueError2.js +++ b/tests/baselines/reference/typeUsedAsValueError2.js @@ -32,7 +32,7 @@ define(["require", "exports"], function (require, exports) { exports.__esModule = true; }); //// [world.js] -define(["require", "exports", "helloInterface", "helloNamespace"], function (require, exports) { +define(["require", "exports"], function (require, exports) { "use strict"; exports.__esModule = true; HelloInterface.world; diff --git a/tests/baselines/reference/unusedImportDeclaration.js b/tests/baselines/reference/unusedImportDeclaration.js index f5f98a1225138..2bfcb7c2e5f2d 100644 --- a/tests/baselines/reference/unusedImportDeclaration.js +++ b/tests/baselines/reference/unusedImportDeclaration.js @@ -26,7 +26,6 @@ module.exports = TesterB; //// [unusedImportDeclaration_testerA.js] "use strict"; exports.__esModule = true; -require("./unusedImportDeclaration_testerB"); var thingy = { me: "A" }; diff --git a/tests/baselines/reference/unusedImports12.js b/tests/baselines/reference/unusedImports12.js index be0cd19ccc5da..4dc10f1114bdd 100644 --- a/tests/baselines/reference/unusedImports12.js +++ b/tests/baselines/reference/unusedImports12.js @@ -25,4 +25,3 @@ exports["default"] = Member; //// [a.js] "use strict"; exports.__esModule = true; -require("./b"); diff --git a/tests/baselines/reference/unusedImports9.js b/tests/baselines/reference/unusedImports9.js index 5b80c3ed2b02f..8ed4d5efd1bbb 100644 --- a/tests/baselines/reference/unusedImports9.js +++ b/tests/baselines/reference/unusedImports9.js @@ -35,4 +35,3 @@ exports.test2 = test2; //// [file2.js] "use strict"; exports.__esModule = true; -require("./file1"); diff --git a/tests/baselines/reference/visibilityOfCrossModuleTypeUsage.js b/tests/baselines/reference/visibilityOfCrossModuleTypeUsage.js index 8e7825e709fcc..1eab90467d486 100644 --- a/tests/baselines/reference/visibilityOfCrossModuleTypeUsage.js +++ b/tests/baselines/reference/visibilityOfCrossModuleTypeUsage.js @@ -32,12 +32,9 @@ exports.__esModule = true; "use strict"; //visibilityOfCrossModuleTypeUsage exports.__esModule = true; -require("./visibilityOfCrossModuleTypeUsage_fs"); -require("./visibilityOfCrossModuleTypeUsage_server"); //// [visibilityOfCrossModuleTypeUsage_fs.js] "use strict"; exports.__esModule = true; -require("./visibilityOfCrossModuleTypeUsage_commands"); function run(configuration) { var absoluteWorkspacePath = configuration.workspace.toAbsolutePath(configuration.server); } From ae788653c8edc85f836513d2ba792a825c448ae7 Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Tue, 31 Dec 2019 09:09:20 -0600 Subject: [PATCH 44/47] Make compiler option string-valued --- src/compiler/commandLineParser.ts | 17 ++++++++++------- src/compiler/diagnosticMessages.json | 2 +- src/compiler/transformers/ts.ts | 6 +++--- src/compiler/types.ts | 7 ++++++- .../reference/api/tsserverlibrary.d.ts | 6 +++++- tests/baselines/reference/api/typescript.d.ts | 6 +++++- .../importsNotUsedAsValue/tsconfig.json | 5 +++++ .../preserveUnusedImports/tsconfig.json | 5 ----- tests/cases/compiler/preserveUnusedImports.ts | 2 +- 9 files changed, 36 insertions(+), 20 deletions(-) create mode 100644 tests/baselines/reference/showConfig/Shows tsconfig for single option/importsNotUsedAsValue/tsconfig.json delete mode 100644 tests/baselines/reference/showConfig/Shows tsconfig for single option/preserveUnusedImports/tsconfig.json diff --git a/src/compiler/commandLineParser.ts b/src/compiler/commandLineParser.ts index 2e08d87627303..21a132b9e26f2 100644 --- a/src/compiler/commandLineParser.ts +++ b/src/compiler/commandLineParser.ts @@ -461,6 +461,16 @@ namespace ts { category: Diagnostics.Basic_Options, description: Diagnostics.Import_emit_helpers_from_tslib }, + { + name: "importsNotUsedAsValue", + type: createMapFromTemplate({ + remove: ImportsNotUsedAsValue.Remove, + preserve: ImportsNotUsedAsValue.Preserve + }), + affectsEmit: true, + category: Diagnostics.Advanced_Options, + description: Diagnostics.Emit_behavior_for_imports_used_only_for_types + }, { name: "downlevelIteration", type: "boolean", @@ -868,13 +878,6 @@ namespace ts { description: Diagnostics.Do_not_emit_outputs_if_any_errors_were_reported, transpileOptionValue: undefined }, - { - name: "preserveUnusedImports", - type: "boolean", - affectsEmit: true, - category: Diagnostics.Advanced_Options, - description: Diagnostics.Emit_imports_that_are_unused_or_used_only_for_types - }, { name: "preserveConstEnums", type: "boolean", diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index 862b2aa73eab0..f9b85b9562bac 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -1087,7 +1087,7 @@ "category": "Message", "code": 1377 }, - "Emit imports that are unused or used only for types": { + "Emit behavior for imports used only for types": { "category": "Message", "code": 1368 }, diff --git a/src/compiler/transformers/ts.ts b/src/compiler/transformers/ts.ts index e9dcfda1d359f..985dc771fbf68 100644 --- a/src/compiler/transformers/ts.ts +++ b/src/compiler/transformers/ts.ts @@ -2756,7 +2756,7 @@ namespace ts { } /** - * Visits an import declaration, eliding it if it is not referenced and `preserveUnusedImports` is not enabled. + * Visits an import declaration, eliding it if it is not referenced and `importsNotUsedAsValue` is not 'preserve'. * * @param node The import declaration node. */ @@ -2773,7 +2773,7 @@ namespace ts { // Elide the declaration if the import clause was elided. const importClause = visitNode(node.importClause, visitImportClause, isImportClause); - return importClause || compilerOptions.preserveUnusedImports + return importClause || compilerOptions.importsNotUsedAsValue === ImportsNotUsedAsValue.Preserve ? updateImportDeclaration( node, /*decorators*/ undefined, @@ -2917,7 +2917,7 @@ namespace ts { if (isExternalModuleImportEqualsDeclaration(node)) { const isReferenced = resolver.isReferencedAliasDeclaration(node); // If the alias is unreferenced but we want to keep the import, replace with 'import "mod"'. - if (!isReferenced && compilerOptions.preserveUnusedImports) { + if (!isReferenced && compilerOptions.importsNotUsedAsValue === ImportsNotUsedAsValue.Preserve) { return setOriginalNode( setTextRange( createImportDeclaration( diff --git a/src/compiler/types.ts b/src/compiler/types.ts index f305dcfe696be..ebc6802b70fda 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -5005,6 +5005,7 @@ namespace ts { /*@internal*/generateCpuProfile?: string; /*@internal*/help?: boolean; importHelpers?: boolean; + importsNotUsedAsValue?: ImportsNotUsedAsValue; /*@internal*/init?: boolean; inlineSourceMap?: boolean; inlineSources?: boolean; @@ -5052,7 +5053,6 @@ namespace ts { incremental?: boolean; tsBuildInfoFile?: string; removeComments?: boolean; - preserveUnusedImports?: boolean; rootDir?: string; rootDirs?: string[]; skipLibCheck?: boolean; @@ -5125,6 +5125,11 @@ namespace ts { ReactNative = 3 } + export const enum ImportsNotUsedAsValue { + Remove, + Preserve + } + export const enum NewLineKind { CarriageReturnLineFeed = 0, LineFeed = 1 diff --git a/tests/baselines/reference/api/tsserverlibrary.d.ts b/tests/baselines/reference/api/tsserverlibrary.d.ts index 0f61bf4374a08..bded7b5f86a9e 100644 --- a/tests/baselines/reference/api/tsserverlibrary.d.ts +++ b/tests/baselines/reference/api/tsserverlibrary.d.ts @@ -2631,6 +2631,7 @@ declare namespace ts { experimentalDecorators?: boolean; forceConsistentCasingInFileNames?: boolean; importHelpers?: boolean; + importsNotUsedAsValue?: ImportsNotUsedAsValue; inlineSourceMap?: boolean; inlineSources?: boolean; isolatedModules?: boolean; @@ -2670,7 +2671,6 @@ declare namespace ts { incremental?: boolean; tsBuildInfoFile?: string; removeComments?: boolean; - preserveUnusedImports?: boolean; rootDir?: string; rootDirs?: string[]; skipLibCheck?: boolean; @@ -2728,6 +2728,10 @@ declare namespace ts { React = 2, ReactNative = 3 } + export enum ImportsNotUsedAsValue { + Remove = 0, + Preserve = 1 + } export enum NewLineKind { CarriageReturnLineFeed = 0, LineFeed = 1 diff --git a/tests/baselines/reference/api/typescript.d.ts b/tests/baselines/reference/api/typescript.d.ts index 2e2c53206e996..696843a9b6cff 100644 --- a/tests/baselines/reference/api/typescript.d.ts +++ b/tests/baselines/reference/api/typescript.d.ts @@ -2631,6 +2631,7 @@ declare namespace ts { experimentalDecorators?: boolean; forceConsistentCasingInFileNames?: boolean; importHelpers?: boolean; + importsNotUsedAsValue?: ImportsNotUsedAsValue; inlineSourceMap?: boolean; inlineSources?: boolean; isolatedModules?: boolean; @@ -2670,7 +2671,6 @@ declare namespace ts { incremental?: boolean; tsBuildInfoFile?: string; removeComments?: boolean; - preserveUnusedImports?: boolean; rootDir?: string; rootDirs?: string[]; skipLibCheck?: boolean; @@ -2728,6 +2728,10 @@ declare namespace ts { React = 2, ReactNative = 3 } + export enum ImportsNotUsedAsValue { + Remove = 0, + Preserve = 1 + } export enum NewLineKind { CarriageReturnLineFeed = 0, LineFeed = 1 diff --git a/tests/baselines/reference/showConfig/Shows tsconfig for single option/importsNotUsedAsValue/tsconfig.json b/tests/baselines/reference/showConfig/Shows tsconfig for single option/importsNotUsedAsValue/tsconfig.json new file mode 100644 index 0000000000000..f94214e3e9e58 --- /dev/null +++ b/tests/baselines/reference/showConfig/Shows tsconfig for single option/importsNotUsedAsValue/tsconfig.json @@ -0,0 +1,5 @@ +{ + "compilerOptions": { + "importsNotUsedAsValue": "remove" + } +} diff --git a/tests/baselines/reference/showConfig/Shows tsconfig for single option/preserveUnusedImports/tsconfig.json b/tests/baselines/reference/showConfig/Shows tsconfig for single option/preserveUnusedImports/tsconfig.json deleted file mode 100644 index a276f50446e87..0000000000000 --- a/tests/baselines/reference/showConfig/Shows tsconfig for single option/preserveUnusedImports/tsconfig.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "compilerOptions": { - "preserveUnusedImports": true - } -} diff --git a/tests/cases/compiler/preserveUnusedImports.ts b/tests/cases/compiler/preserveUnusedImports.ts index a5c568a473f52..e6d4497ef1592 100644 --- a/tests/cases/compiler/preserveUnusedImports.ts +++ b/tests/cases/compiler/preserveUnusedImports.ts @@ -1,4 +1,4 @@ -// @preserveUnusedImports: true +// @importsNotUsedAsValue: preserve // @Filename: a.ts export type A = {}; From 8b279a9375f527bdbf9e0cae113d5648a49c157b Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Tue, 31 Dec 2019 09:31:03 -0600 Subject: [PATCH 45/47] Fix merge conflicts --- src/compiler/factoryPublic.ts | 6 +----- tests/baselines/reference/api/tsserverlibrary.d.ts | 9 ++------- tests/baselines/reference/api/typescript.d.ts | 9 ++------- 3 files changed, 5 insertions(+), 19 deletions(-) diff --git a/src/compiler/factoryPublic.ts b/src/compiler/factoryPublic.ts index 53e7f2fd93db8..19e927f4f6673 100644 --- a/src/compiler/factoryPublic.ts +++ b/src/compiler/factoryPublic.ts @@ -2350,11 +2350,7 @@ namespace ts { : node; } -<<<<<<< HEAD - export function createExportDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, exportClause: NamedExports | undefined, moduleSpecifier?: Expression, isTypeOnly = false) { -======= - export function createExportDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, exportClause: NamedExportBindings | undefined, moduleSpecifier?: Expression) { ->>>>>>> master + export function createExportDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, exportClause: NamedExportBindings | undefined, moduleSpecifier?: Expression, isTypeOnly = false) { const node = createSynthesizedNode(SyntaxKind.ExportDeclaration); node.decorators = asNodeArray(decorators); node.modifiers = asNodeArray(modifiers); diff --git a/tests/baselines/reference/api/tsserverlibrary.d.ts b/tests/baselines/reference/api/tsserverlibrary.d.ts index 31a308acaac85..850a3b418e81f 100644 --- a/tests/baselines/reference/api/tsserverlibrary.d.ts +++ b/tests/baselines/reference/api/tsserverlibrary.d.ts @@ -4196,13 +4196,8 @@ declare namespace ts { function updateImportSpecifier(node: ImportSpecifier, propertyName: Identifier | undefined, name: Identifier): ImportSpecifier; function createExportAssignment(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, isExportEquals: boolean | undefined, expression: Expression): ExportAssignment; function updateExportAssignment(node: ExportAssignment, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, expression: Expression): ExportAssignment; -<<<<<<< HEAD - function createExportDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, exportClause: NamedExports | undefined, moduleSpecifier?: Expression, isTypeOnly?: boolean): ExportDeclaration; - function updateExportDeclaration(node: ExportDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, exportClause: NamedExports | undefined, moduleSpecifier: Expression | undefined, isTypeOnly: boolean): ExportDeclaration; -======= - function createExportDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, exportClause: NamedExportBindings | undefined, moduleSpecifier?: Expression): ExportDeclaration; - function updateExportDeclaration(node: ExportDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, exportClause: NamedExportBindings | undefined, moduleSpecifier: Expression | undefined): ExportDeclaration; ->>>>>>> master + function createExportDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, exportClause: NamedExportBindings | undefined, moduleSpecifier?: Expression, isTypeOnly?: boolean): ExportDeclaration; + function updateExportDeclaration(node: ExportDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, exportClause: NamedExportBindings | undefined, moduleSpecifier: Expression | undefined, isTypeOnly: boolean): ExportDeclaration; function createNamedExports(elements: readonly ExportSpecifier[]): NamedExports; function updateNamedExports(node: NamedExports, elements: readonly ExportSpecifier[]): NamedExports; function createExportSpecifier(propertyName: string | Identifier | undefined, name: string | Identifier): ExportSpecifier; diff --git a/tests/baselines/reference/api/typescript.d.ts b/tests/baselines/reference/api/typescript.d.ts index 14ae5ac876af0..37dffe575d990 100644 --- a/tests/baselines/reference/api/typescript.d.ts +++ b/tests/baselines/reference/api/typescript.d.ts @@ -4196,13 +4196,8 @@ declare namespace ts { function updateImportSpecifier(node: ImportSpecifier, propertyName: Identifier | undefined, name: Identifier): ImportSpecifier; function createExportAssignment(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, isExportEquals: boolean | undefined, expression: Expression): ExportAssignment; function updateExportAssignment(node: ExportAssignment, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, expression: Expression): ExportAssignment; -<<<<<<< HEAD - function createExportDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, exportClause: NamedExports | undefined, moduleSpecifier?: Expression, isTypeOnly?: boolean): ExportDeclaration; - function updateExportDeclaration(node: ExportDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, exportClause: NamedExports | undefined, moduleSpecifier: Expression | undefined, isTypeOnly: boolean): ExportDeclaration; -======= - function createExportDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, exportClause: NamedExportBindings | undefined, moduleSpecifier?: Expression): ExportDeclaration; - function updateExportDeclaration(node: ExportDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, exportClause: NamedExportBindings | undefined, moduleSpecifier: Expression | undefined): ExportDeclaration; ->>>>>>> master + function createExportDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, exportClause: NamedExportBindings | undefined, moduleSpecifier?: Expression, isTypeOnly?: boolean): ExportDeclaration; + function updateExportDeclaration(node: ExportDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, exportClause: NamedExportBindings | undefined, moduleSpecifier: Expression | undefined, isTypeOnly: boolean): ExportDeclaration; function createNamedExports(elements: readonly ExportSpecifier[]): NamedExports; function updateNamedExports(node: NamedExports, elements: readonly ExportSpecifier[]): NamedExports; function createExportSpecifier(propertyName: string | Identifier | undefined, name: string | Identifier): ExportSpecifier; From f8333d0c7d1b88fc9e4df210f4bbbd1fab7f2ad8 Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Tue, 31 Dec 2019 13:42:24 -0600 Subject: [PATCH 46/47] Add --importsNotUsedAsValue=error --- src/compiler/checker.ts | 38 ++++++++++ src/compiler/commandLineParser.ts | 3 +- src/compiler/diagnosticMessages.json | 18 ++++- src/compiler/transformers/ts.ts | 4 +- src/compiler/types.ts | 3 +- .../reference/api/tsserverlibrary.d.ts | 3 +- tests/baselines/reference/api/typescript.d.ts | 3 +- .../awaitInNonAsyncFunction.errors.txt | 4 +- .../importsNotUsedAsValue_error.errors.txt | 37 ++++++++++ .../reference/importsNotUsedAsValue_error.js | 69 +++++++++++++++++ .../importsNotUsedAsValue_error.symbols | 74 +++++++++++++++++++ .../importsNotUsedAsValue_error.types | 72 ++++++++++++++++++ ...it(module=esnext,target=es2015).errors.txt | 4 +- ...it(module=system,target=es2015).errors.txt | 4 +- .../topLevelAwaitNonModule.errors.txt | 4 +- .../typeOnly/importsNotUsedAsValue_error.ts | 28 +++++++ 16 files changed, 354 insertions(+), 14 deletions(-) create mode 100644 tests/baselines/reference/importsNotUsedAsValue_error.errors.txt create mode 100644 tests/baselines/reference/importsNotUsedAsValue_error.js create mode 100644 tests/baselines/reference/importsNotUsedAsValue_error.symbols create mode 100644 tests/baselines/reference/importsNotUsedAsValue_error.types create mode 100644 tests/cases/conformance/externalModules/typeOnly/importsNotUsedAsValue_error.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index c8b2f89c8ac3c..7f3511a01e385 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -33172,6 +33172,40 @@ namespace ts { return !isInAppropriateContext; } + function importClauseContainsReferencedImport(importClause: ImportClause) { + return importClause.name && isReferenced(importClause) + || importClause.namedBindings && namedBindingsContainsReferencedImport(importClause.namedBindings); + + function isReferenced(declaration: Declaration) { + return !!getMergedSymbol(getSymbolOfNode(declaration)).isReferenced; + } + function namedBindingsContainsReferencedImport(namedBindings: NamedImportBindings) { + return isNamespaceImport(namedBindings) + ? isReferenced(namedBindings) + : some(namedBindings.elements, isReferenced); + } + } + + function checkImportsForTypeOnlyConversion(sourceFile: SourceFile) { + for (const statement of sourceFile.statements) { + if ( + isImportDeclaration(statement) && + statement.importClause && + !statement.importClause.isTypeOnly && + importClauseContainsReferencedImport(statement.importClause) && + !isReferencedAliasDeclaration(statement.importClause, /*checkChildren*/ true) + ) { + const isError = compilerOptions.importsNotUsedAsValue === ImportsNotUsedAsValue.Error; + errorOrSuggestion( + isError, + statement, + isError + ? Diagnostics.Import_is_never_used_as_a_value_and_must_use_import_type_when_importsNotUsedAsValue_is_error + : Diagnostics.Import_may_be_converted_to_a_type_only_import); + } + } + } + function checkExportSpecifier(node: ExportSpecifier) { checkAliasSymbol(node); if (getEmitDeclarations(compilerOptions)) { @@ -33664,6 +33698,10 @@ namespace ts { }); } + if (!node.isDeclarationFile && isExternalModule(node)) { + checkImportsForTypeOnlyConversion(node); + } + if (isExternalOrCommonJsModule(node)) { checkExternalModuleExports(node); } diff --git a/src/compiler/commandLineParser.ts b/src/compiler/commandLineParser.ts index 26374ad3470e5..1d428198d28b6 100644 --- a/src/compiler/commandLineParser.ts +++ b/src/compiler/commandLineParser.ts @@ -467,7 +467,8 @@ namespace ts { name: "importsNotUsedAsValue", type: createMapFromTemplate({ remove: ImportsNotUsedAsValue.Remove, - preserve: ImportsNotUsedAsValue.Preserve + preserve: ImportsNotUsedAsValue.Preserve, + error: ImportsNotUsedAsValue.Error }), affectsEmit: true, category: Diagnostics.Advanced_Options, diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index fbf1bace95bca..0e13b0b497189 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -1099,10 +1099,26 @@ "category": "Error", "code": 1370 }, - "'await' outside of an async function is only allowed at the top level of a module when '--module' is 'esnext' or 'system' and '--target' is 'es2017' or higher.": { + "Import is never used as a value and must use 'import type' when '--importsNotUsedAsValue' is 'error'.": { "category": "Error", "code": 1371 }, + "Import may be converted to a type-only import.": { + "category": "Suggestion", + "code": 1372 + }, + "Convert to type-only import": { + "category": "Message", + "code": 1373 + }, + "Convert all imports not used as a value to type-only imports": { + "category": "Message", + "code": 1374 + }, + "'await' outside of an async function is only allowed at the top level of a module when '--module' is 'esnext' or 'system' and '--target' is 'es2017' or higher.": { + "category": "Error", + "code": 1375 + }, "The types of '{0}' are incompatible between these types.": { "category": "Error", diff --git a/src/compiler/transformers/ts.ts b/src/compiler/transformers/ts.ts index fd88f23c4147c..e855981114f37 100644 --- a/src/compiler/transformers/ts.ts +++ b/src/compiler/transformers/ts.ts @@ -2777,7 +2777,9 @@ namespace ts { // Elide the declaration if the import clause was elided. const importClause = visitNode(node.importClause, visitImportClause, isImportClause); - return importClause || compilerOptions.importsNotUsedAsValue === ImportsNotUsedAsValue.Preserve + return importClause || + compilerOptions.importsNotUsedAsValue === ImportsNotUsedAsValue.Preserve || + compilerOptions.importsNotUsedAsValue === ImportsNotUsedAsValue.Error ? updateImportDeclaration( node, /*decorators*/ undefined, diff --git a/src/compiler/types.ts b/src/compiler/types.ts index 17bf205260a18..36275107b10f6 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -5166,7 +5166,8 @@ namespace ts { export const enum ImportsNotUsedAsValue { Remove, - Preserve + Preserve, + Error } export const enum NewLineKind { diff --git a/tests/baselines/reference/api/tsserverlibrary.d.ts b/tests/baselines/reference/api/tsserverlibrary.d.ts index 850a3b418e81f..5b8624ae0310d 100644 --- a/tests/baselines/reference/api/tsserverlibrary.d.ts +++ b/tests/baselines/reference/api/tsserverlibrary.d.ts @@ -2751,7 +2751,8 @@ declare namespace ts { } export enum ImportsNotUsedAsValue { Remove = 0, - Preserve = 1 + Preserve = 1, + Error = 2 } export enum NewLineKind { CarriageReturnLineFeed = 0, diff --git a/tests/baselines/reference/api/typescript.d.ts b/tests/baselines/reference/api/typescript.d.ts index 37dffe575d990..65e91049d3319 100644 --- a/tests/baselines/reference/api/typescript.d.ts +++ b/tests/baselines/reference/api/typescript.d.ts @@ -2751,7 +2751,8 @@ declare namespace ts { } export enum ImportsNotUsedAsValue { Remove = 0, - Preserve = 1 + Preserve = 1, + Error = 2 } export enum NewLineKind { CarriageReturnLineFeed = 0, diff --git a/tests/baselines/reference/awaitInNonAsyncFunction.errors.txt b/tests/baselines/reference/awaitInNonAsyncFunction.errors.txt index 885fcc5d90c7b..aa07a57b57ce2 100644 --- a/tests/baselines/reference/awaitInNonAsyncFunction.errors.txt +++ b/tests/baselines/reference/awaitInNonAsyncFunction.errors.txt @@ -13,7 +13,7 @@ tests/cases/compiler/awaitInNonAsyncFunction.ts(31,5): error TS1308: 'await' exp tests/cases/compiler/awaitInNonAsyncFunction.ts(34,7): error TS1103: A 'for-await-of' statement is only allowed within an async function or async generator. tests/cases/compiler/awaitInNonAsyncFunction.ts(35,5): error TS1308: 'await' expression is only allowed within an async function. tests/cases/compiler/awaitInNonAsyncFunction.ts(39,5): error TS1103: A 'for-await-of' statement is only allowed within an async function or async generator. -tests/cases/compiler/awaitInNonAsyncFunction.ts(40,1): error TS1371: 'await' outside of an async function is only allowed at the top level of a module when '--module' is 'esnext' or 'system' and '--target' is 'es2017' or higher. +tests/cases/compiler/awaitInNonAsyncFunction.ts(40,1): error TS1375: 'await' outside of an async function is only allowed at the top level of a module when '--module' is 'esnext' or 'system' and '--target' is 'es2017' or higher. ==== tests/cases/compiler/awaitInNonAsyncFunction.ts (16 errors) ==== @@ -100,4 +100,4 @@ tests/cases/compiler/awaitInNonAsyncFunction.ts(40,1): error TS1371: 'await' out !!! error TS1103: A 'for-await-of' statement is only allowed within an async function or async generator. await null; ~~~~~ -!!! error TS1371: 'await' outside of an async function is only allowed at the top level of a module when '--module' is 'esnext' or 'system' and '--target' is 'es2017' or higher. \ No newline at end of file +!!! error TS1375: 'await' outside of an async function is only allowed at the top level of a module when '--module' is 'esnext' or 'system' and '--target' is 'es2017' or higher. \ No newline at end of file diff --git a/tests/baselines/reference/importsNotUsedAsValue_error.errors.txt b/tests/baselines/reference/importsNotUsedAsValue_error.errors.txt new file mode 100644 index 0000000000000..cfc747c78b5d5 --- /dev/null +++ b/tests/baselines/reference/importsNotUsedAsValue_error.errors.txt @@ -0,0 +1,37 @@ +/b.ts(1,1): error TS1371: Import is never used as a value and must use 'import type' when '--importsNotUsedAsValue' is 'error'. +/c.ts(1,1): error TS1371: Import is never used as a value and must use 'import type' when '--importsNotUsedAsValue' is 'error'. +/e.ts(1,1): error TS6192: All imports in import declaration are unused. + + +==== /a.ts (0 errors) ==== + export default class {} + export class A {} + export type B = {}; + +==== /b.ts (1 errors) ==== + import { A, B } from './a'; // Error + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS1371: Import is never used as a value and must use 'import type' when '--importsNotUsedAsValue' is 'error'. + let a: A; + let b: B; + console.log(a, b); + +==== /c.ts (1 errors) ==== + import Default, * as named from './a'; // Error + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS1371: Import is never used as a value and must use 'import type' when '--importsNotUsedAsValue' is 'error'. + let a: Default; + let b: named.B; + console.log(a, b); + +==== /d.ts (0 errors) ==== + import Default, { A } from './a'; + const a = A; + let b: Default; + console.log(a, b); + +==== /e.ts (1 errors) ==== + import { A, B } from './a'; // noUnusedLocals error only + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS6192: All imports in import declaration are unused. + \ No newline at end of file diff --git a/tests/baselines/reference/importsNotUsedAsValue_error.js b/tests/baselines/reference/importsNotUsedAsValue_error.js new file mode 100644 index 0000000000000..fe70b0dbe60a7 --- /dev/null +++ b/tests/baselines/reference/importsNotUsedAsValue_error.js @@ -0,0 +1,69 @@ +//// [tests/cases/conformance/externalModules/typeOnly/importsNotUsedAsValue_error.ts] //// + +//// [a.ts] +export default class {} +export class A {} +export type B = {}; + +//// [b.ts] +import { A, B } from './a'; // Error +let a: A; +let b: B; +console.log(a, b); + +//// [c.ts] +import Default, * as named from './a'; // Error +let a: Default; +let b: named.B; +console.log(a, b); + +//// [d.ts] +import Default, { A } from './a'; +const a = A; +let b: Default; +console.log(a, b); + +//// [e.ts] +import { A, B } from './a'; // noUnusedLocals error only + + +//// [a.js] +"use strict"; +exports.__esModule = true; +var default_1 = /** @class */ (function () { + function default_1() { + } + return default_1; +}()); +exports["default"] = default_1; +var A = /** @class */ (function () { + function A() { + } + return A; +}()); +exports.A = A; +//// [b.js] +"use strict"; +exports.__esModule = true; +require("./a"); // Error +var a; +var b; +console.log(a, b); +//// [c.js] +"use strict"; +exports.__esModule = true; +require("./a"); // Error +var a; +var b; +console.log(a, b); +//// [d.js] +"use strict"; +exports.__esModule = true; +var a_1 = require("./a"); +var a = a_1.A; +var b; +console.log(a, b); +//// [e.js] +"use strict"; +exports.__esModule = true; +require("./a"); // noUnusedLocals error only diff --git a/tests/baselines/reference/importsNotUsedAsValue_error.symbols b/tests/baselines/reference/importsNotUsedAsValue_error.symbols new file mode 100644 index 0000000000000..0726f61086fa5 --- /dev/null +++ b/tests/baselines/reference/importsNotUsedAsValue_error.symbols @@ -0,0 +1,74 @@ +=== /a.ts === +export default class {} +export class A {} +>A : Symbol(A, Decl(a.ts, 0, 23)) + +export type B = {}; +>B : Symbol(B, Decl(a.ts, 1, 17)) + +=== /b.ts === +import { A, B } from './a'; // Error +>A : Symbol(A, Decl(b.ts, 0, 8)) +>B : Symbol(B, Decl(b.ts, 0, 11)) + +let a: A; +>a : Symbol(a, Decl(b.ts, 1, 3)) +>A : Symbol(A, Decl(b.ts, 0, 8)) + +let b: B; +>b : Symbol(b, Decl(b.ts, 2, 3)) +>B : Symbol(B, Decl(b.ts, 0, 11)) + +console.log(a, b); +>console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) +>console : Symbol(console, Decl(lib.dom.d.ts, --, --)) +>log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) +>a : Symbol(a, Decl(b.ts, 1, 3)) +>b : Symbol(b, Decl(b.ts, 2, 3)) + +=== /c.ts === +import Default, * as named from './a'; // Error +>Default : Symbol(Default, Decl(c.ts, 0, 6)) +>named : Symbol(named, Decl(c.ts, 0, 15)) + +let a: Default; +>a : Symbol(a, Decl(c.ts, 1, 3)) +>Default : Symbol(Default, Decl(c.ts, 0, 6)) + +let b: named.B; +>b : Symbol(b, Decl(c.ts, 2, 3)) +>named : Symbol(named, Decl(c.ts, 0, 15)) +>B : Symbol(named.B, Decl(a.ts, 1, 17)) + +console.log(a, b); +>console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) +>console : Symbol(console, Decl(lib.dom.d.ts, --, --)) +>log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) +>a : Symbol(a, Decl(c.ts, 1, 3)) +>b : Symbol(b, Decl(c.ts, 2, 3)) + +=== /d.ts === +import Default, { A } from './a'; +>Default : Symbol(Default, Decl(d.ts, 0, 6)) +>A : Symbol(A, Decl(d.ts, 0, 17)) + +const a = A; +>a : Symbol(a, Decl(d.ts, 1, 5)) +>A : Symbol(A, Decl(d.ts, 0, 17)) + +let b: Default; +>b : Symbol(b, Decl(d.ts, 2, 3)) +>Default : Symbol(Default, Decl(d.ts, 0, 6)) + +console.log(a, b); +>console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) +>console : Symbol(console, Decl(lib.dom.d.ts, --, --)) +>log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) +>a : Symbol(a, Decl(d.ts, 1, 5)) +>b : Symbol(b, Decl(d.ts, 2, 3)) + +=== /e.ts === +import { A, B } from './a'; // noUnusedLocals error only +>A : Symbol(A, Decl(e.ts, 0, 8)) +>B : Symbol(B, Decl(e.ts, 0, 11)) + diff --git a/tests/baselines/reference/importsNotUsedAsValue_error.types b/tests/baselines/reference/importsNotUsedAsValue_error.types new file mode 100644 index 0000000000000..5b166c47e684e --- /dev/null +++ b/tests/baselines/reference/importsNotUsedAsValue_error.types @@ -0,0 +1,72 @@ +=== /a.ts === +export default class {} +export class A {} +>A : A + +export type B = {}; +>B : B + +=== /b.ts === +import { A, B } from './a'; // Error +>A : typeof A +>B : any + +let a: A; +>a : A + +let b: B; +>b : B + +console.log(a, b); +>console.log(a, b) : void +>console.log : (message?: any, ...optionalParams: any[]) => void +>console : Console +>log : (message?: any, ...optionalParams: any[]) => void +>a : A +>b : B + +=== /c.ts === +import Default, * as named from './a'; // Error +>Default : typeof Default +>named : typeof named + +let a: Default; +>a : Default + +let b: named.B; +>b : named.B +>named : any + +console.log(a, b); +>console.log(a, b) : void +>console.log : (message?: any, ...optionalParams: any[]) => void +>console : Console +>log : (message?: any, ...optionalParams: any[]) => void +>a : Default +>b : named.B + +=== /d.ts === +import Default, { A } from './a'; +>Default : typeof Default +>A : typeof A + +const a = A; +>a : typeof A +>A : typeof A + +let b: Default; +>b : Default + +console.log(a, b); +>console.log(a, b) : void +>console.log : (message?: any, ...optionalParams: any[]) => void +>console : Console +>log : (message?: any, ...optionalParams: any[]) => void +>a : typeof A +>b : Default + +=== /e.ts === +import { A, B } from './a'; // noUnusedLocals error only +>A : typeof A +>B : any + diff --git a/tests/baselines/reference/topLevelAwait(module=esnext,target=es2015).errors.txt b/tests/baselines/reference/topLevelAwait(module=esnext,target=es2015).errors.txt index cb7636310d9f5..0bd384b85206d 100644 --- a/tests/baselines/reference/topLevelAwait(module=esnext,target=es2015).errors.txt +++ b/tests/baselines/reference/topLevelAwait(module=esnext,target=es2015).errors.txt @@ -1,9 +1,9 @@ -tests/cases/conformance/externalModules/topLevelAwait.ts(2,1): error TS1371: 'await' outside of an async function is only allowed at the top level of a module when '--module' is 'esnext' or 'system' and '--target' is 'es2017' or higher. +tests/cases/conformance/externalModules/topLevelAwait.ts(2,1): error TS1375: 'await' outside of an async function is only allowed at the top level of a module when '--module' is 'esnext' or 'system' and '--target' is 'es2017' or higher. ==== tests/cases/conformance/externalModules/topLevelAwait.ts (1 errors) ==== export const x = 1; await x; ~~~~~ -!!! error TS1371: 'await' outside of an async function is only allowed at the top level of a module when '--module' is 'esnext' or 'system' and '--target' is 'es2017' or higher. +!!! error TS1375: 'await' outside of an async function is only allowed at the top level of a module when '--module' is 'esnext' or 'system' and '--target' is 'es2017' or higher. \ No newline at end of file diff --git a/tests/baselines/reference/topLevelAwait(module=system,target=es2015).errors.txt b/tests/baselines/reference/topLevelAwait(module=system,target=es2015).errors.txt index cb7636310d9f5..0bd384b85206d 100644 --- a/tests/baselines/reference/topLevelAwait(module=system,target=es2015).errors.txt +++ b/tests/baselines/reference/topLevelAwait(module=system,target=es2015).errors.txt @@ -1,9 +1,9 @@ -tests/cases/conformance/externalModules/topLevelAwait.ts(2,1): error TS1371: 'await' outside of an async function is only allowed at the top level of a module when '--module' is 'esnext' or 'system' and '--target' is 'es2017' or higher. +tests/cases/conformance/externalModules/topLevelAwait.ts(2,1): error TS1375: 'await' outside of an async function is only allowed at the top level of a module when '--module' is 'esnext' or 'system' and '--target' is 'es2017' or higher. ==== tests/cases/conformance/externalModules/topLevelAwait.ts (1 errors) ==== export const x = 1; await x; ~~~~~ -!!! error TS1371: 'await' outside of an async function is only allowed at the top level of a module when '--module' is 'esnext' or 'system' and '--target' is 'es2017' or higher. +!!! error TS1375: 'await' outside of an async function is only allowed at the top level of a module when '--module' is 'esnext' or 'system' and '--target' is 'es2017' or higher. \ No newline at end of file diff --git a/tests/baselines/reference/topLevelAwaitNonModule.errors.txt b/tests/baselines/reference/topLevelAwaitNonModule.errors.txt index a38faa4613823..888c565e7a9d5 100644 --- a/tests/baselines/reference/topLevelAwaitNonModule.errors.txt +++ b/tests/baselines/reference/topLevelAwaitNonModule.errors.txt @@ -1,11 +1,11 @@ -tests/cases/conformance/externalModules/topLevelAwaitNonModule.ts(1,1): error TS1371: 'await' outside of an async function is only allowed at the top level of a module when '--module' is 'esnext' or 'system' and '--target' is 'es2017' or higher. +tests/cases/conformance/externalModules/topLevelAwaitNonModule.ts(1,1): error TS1375: 'await' outside of an async function is only allowed at the top level of a module when '--module' is 'esnext' or 'system' and '--target' is 'es2017' or higher. tests/cases/conformance/externalModules/topLevelAwaitNonModule.ts(1,7): error TS2304: Cannot find name 'x'. ==== tests/cases/conformance/externalModules/topLevelAwaitNonModule.ts (2 errors) ==== await x; ~~~~~ -!!! error TS1371: 'await' outside of an async function is only allowed at the top level of a module when '--module' is 'esnext' or 'system' and '--target' is 'es2017' or higher. +!!! error TS1375: 'await' outside of an async function is only allowed at the top level of a module when '--module' is 'esnext' or 'system' and '--target' is 'es2017' or higher. ~ !!! error TS2304: Cannot find name 'x'. \ No newline at end of file diff --git a/tests/cases/conformance/externalModules/typeOnly/importsNotUsedAsValue_error.ts b/tests/cases/conformance/externalModules/typeOnly/importsNotUsedAsValue_error.ts new file mode 100644 index 0000000000000..c74dfe8195167 --- /dev/null +++ b/tests/cases/conformance/externalModules/typeOnly/importsNotUsedAsValue_error.ts @@ -0,0 +1,28 @@ +// @importsNotUsedAsValue: error +// @noUnusedLocals: true + +// @Filename: /a.ts +export default class {} +export class A {} +export type B = {}; + +// @Filename: /b.ts +import { A, B } from './a'; // Error +let a: A; +let b: B; +console.log(a, b); + +// @Filename: /c.ts +import Default, * as named from './a'; // Error +let a: Default; +let b: named.B; +console.log(a, b); + +// @Filename: /d.ts +import Default, { A } from './a'; +const a = A; +let b: Default; +console.log(a, b); + +// @Filename: /e.ts +import { A, B } from './a'; // noUnusedLocals error only From c71d87bfa1be471ad5cd1cb8239b3f0a81f63938 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Fri, 3 Jan 2020 14:11:21 -0800 Subject: [PATCH 47/47] Phrasing of messages. --- src/compiler/checker.ts | 8 ++++---- src/compiler/commandLineParser.ts | 2 +- src/compiler/diagnosticMessages.json | 12 ++++++------ src/compiler/parser.ts | 2 +- src/services/codefixes/splitTypeOnlyImport.ts | 2 +- tests/baselines/reference/enums.errors.txt | 8 ++++---- tests/baselines/reference/grammarErrors.errors.txt | 4 ++-- .../importEqualsDeclarationError.errors.txt | 4 ++-- .../reference/importsNotUsedAsValue_error.errors.txt | 8 ++++---- tests/cases/fourslash/codeFixSplitTypeOnlyImport.ts | 2 +- 10 files changed, 26 insertions(+), 26 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 7f3511a01e385..27c4def26f914 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -2046,7 +2046,7 @@ namespace ts { error( errorLocation, isTypeOnlyEnumAlias(symbol) - ? Diagnostics.Type_only_enum_0_cannot_be_used_as_a_value + ? Diagnostics.Enum_0_cannot_be_used_as_a_value_because_only_its_type_has_been_imported : Diagnostics.Cannot_use_namespace_0_as_a_value, unescapeLeadingUnderscores(name)); return true; @@ -33200,8 +33200,8 @@ namespace ts { isError, statement, isError - ? Diagnostics.Import_is_never_used_as_a_value_and_must_use_import_type_when_importsNotUsedAsValue_is_error - : Diagnostics.Import_may_be_converted_to_a_type_only_import); + ? Diagnostics.This_import_is_never_used_as_a_value_and_must_use_import_type_because_the_importsNotUsedAsValue_is_set_to_error + : Diagnostics.This_import_may_be_converted_to_a_type_only_import); } } } @@ -36793,7 +36793,7 @@ namespace ts { function checkGrammarImportClause(node: ImportClause): boolean { if (node.isTypeOnly && node.name && node.namedBindings) { - return grammarErrorOnNode(node, Diagnostics.Type_only_import_can_specify_a_default_import_or_named_bindings_but_not_both); + return grammarErrorOnNode(node, Diagnostics.A_type_only_import_can_specify_a_default_import_or_named_bindings_but_not_both); } return false; } diff --git a/src/compiler/commandLineParser.ts b/src/compiler/commandLineParser.ts index 1d428198d28b6..76477a6fede8b 100644 --- a/src/compiler/commandLineParser.ts +++ b/src/compiler/commandLineParser.ts @@ -472,7 +472,7 @@ namespace ts { }), affectsEmit: true, category: Diagnostics.Advanced_Options, - description: Diagnostics.Emit_behavior_for_imports_used_only_for_types + description: Diagnostics.Specify_emit_Slashchecking_behavior_for_imports_that_are_only_used_for_types }, { name: "downlevelIteration", diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index 0e13b0b497189..43683086cde67 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -1063,11 +1063,11 @@ "category": "Error", "code": 1361 }, - "Type-only enum '{0}' cannot be used as a value.": { + "Enum '{0}' cannot be used as a value because only its type has been imported.": { "category": "Error", "code": 1362 }, - "Type-only import can specify a default import or named bindings, but not both.": { + "A type-only import can specify a default import or named bindings, but not both.": { "category": "Error", "code": 1363 }, @@ -1087,7 +1087,7 @@ "category": "Message", "code": 1377 }, - "Emit behavior for imports used only for types": { + "Specify emit/checking behavior for imports that are only used for types": { "category": "Message", "code": 1368 }, @@ -1095,15 +1095,15 @@ "category": "Message", "code": 1369 }, - "Only ES2015 imports may use 'import type'.": { + "Only ECMAScript imports may use 'import type'.": { "category": "Error", "code": 1370 }, - "Import is never used as a value and must use 'import type' when '--importsNotUsedAsValue' is 'error'.": { + "This import is never used as a value and must use 'import type' because the 'importsNotUsedAsValue' is set to 'error'.": { "category": "Error", "code": 1371 }, - "Import may be converted to a type-only import.": { + "This import may be converted to a type-only import.": { "category": "Suggestion", "code": 1372 }, diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index e3805d94ca7d4..28fc666a8da40 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -6424,7 +6424,7 @@ namespace ts { parseSemicolon(); const finished = finishNode(node); if (isTypeOnly) { - parseErrorAtRange(finished, Diagnostics.Only_ES2015_imports_may_use_import_type); + parseErrorAtRange(finished, Diagnostics.Only_ECMAScript_imports_may_use_import_type); } return finished; } diff --git a/src/services/codefixes/splitTypeOnlyImport.ts b/src/services/codefixes/splitTypeOnlyImport.ts index fad43216b55b3..e5691a76ab35d 100644 --- a/src/services/codefixes/splitTypeOnlyImport.ts +++ b/src/services/codefixes/splitTypeOnlyImport.ts @@ -1,6 +1,6 @@ /* @internal */ namespace ts.codefix { - const errorCodes = [Diagnostics.Type_only_import_can_specify_a_default_import_or_named_bindings_but_not_both.code]; + const errorCodes = [Diagnostics.A_type_only_import_can_specify_a_default_import_or_named_bindings_but_not_both.code]; const fixId = "splitTypeOnlyImport"; registerCodeFix({ errorCodes, diff --git a/tests/baselines/reference/enums.errors.txt b/tests/baselines/reference/enums.errors.txt index e8bb3034fbf20..4e874cbee48dc 100644 --- a/tests/baselines/reference/enums.errors.txt +++ b/tests/baselines/reference/enums.errors.txt @@ -1,5 +1,5 @@ -/b.ts(3,1): error TS1362: Type-only enum 'SyntaxKind' cannot be used as a value. -/b.ts(4,1): error TS1362: Type-only enum 'SymbolFlags' cannot be used as a value. +/b.ts(3,1): error TS1362: Enum 'SyntaxKind' cannot be used as a value because only its type has been imported. +/b.ts(4,1): error TS1362: Enum 'SymbolFlags' cannot be used as a value because only its type has been imported. ==== /a.ts (0 errors) ==== @@ -21,10 +21,10 @@ SyntaxKind.ImportClause; ~~~~~~~~~~ -!!! error TS1362: Type-only enum 'SyntaxKind' cannot be used as a value. +!!! error TS1362: Enum 'SyntaxKind' cannot be used as a value because only its type has been imported. SymbolFlags.Type; ~~~~~~~~~~~ -!!! error TS1362: Type-only enum 'SymbolFlags' cannot be used as a value. +!!! error TS1362: Enum 'SymbolFlags' cannot be used as a value because only its type has been imported. let kind: SyntaxKind.ImportClause; let flags: SymbolFlags; diff --git a/tests/baselines/reference/grammarErrors.errors.txt b/tests/baselines/reference/grammarErrors.errors.txt index 9346d1f6b5ca9..ad9d7c9f859ff 100644 --- a/tests/baselines/reference/grammarErrors.errors.txt +++ b/tests/baselines/reference/grammarErrors.errors.txt @@ -3,7 +3,7 @@ error TS5055: Cannot write file '/a.js' because it would overwrite input file. error TS5056: Cannot write file '/a.js' because it would be overwritten by multiple input files. /a.js(1,1): error TS8006: 'import type' declarations can only be used in TypeScript files. /a.js(2,1): error TS8006: 'export type' declarations can only be used in TypeScript files. -/b.ts(1,8): error TS1363: Type-only import can specify a default import or named bindings, but not both. +/b.ts(1,8): error TS1363: A type-only import can specify a default import or named bindings, but not both. !!! error TS5055: Cannot write file '/a.js' because it would overwrite input file. @@ -17,7 +17,7 @@ error TS5056: Cannot write file '/a.js' because it would be overwritten by multi ==== /b.ts (1 errors) ==== import type A, { B, C } from './a'; ~~~~~~~~~~~~~~~~ -!!! error TS1363: Type-only import can specify a default import or named bindings, but not both. +!!! error TS1363: A type-only import can specify a default import or named bindings, but not both. ==== /a.js (2 errors) ==== import type A from './a'; diff --git a/tests/baselines/reference/importEqualsDeclarationError.errors.txt b/tests/baselines/reference/importEqualsDeclarationError.errors.txt index d0361ba285f85..1d3f606b3e048 100644 --- a/tests/baselines/reference/importEqualsDeclarationError.errors.txt +++ b/tests/baselines/reference/importEqualsDeclarationError.errors.txt @@ -1,10 +1,10 @@ -/c.ts(1,1): error TS1370: Only ES2015 imports may use 'import type'. +/c.ts(1,1): error TS1370: Only ECMAScript imports may use 'import type'. ==== /c.ts (1 errors) ==== import type T = require('./a'); // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS1370: Only ES2015 imports may use 'import type'. +!!! error TS1370: Only ECMAScript imports may use 'import type'. import type = require('./b'); // Ok ==== /a.ts (0 errors) ==== diff --git a/tests/baselines/reference/importsNotUsedAsValue_error.errors.txt b/tests/baselines/reference/importsNotUsedAsValue_error.errors.txt index cfc747c78b5d5..6f6d8f6f3db7e 100644 --- a/tests/baselines/reference/importsNotUsedAsValue_error.errors.txt +++ b/tests/baselines/reference/importsNotUsedAsValue_error.errors.txt @@ -1,5 +1,5 @@ -/b.ts(1,1): error TS1371: Import is never used as a value and must use 'import type' when '--importsNotUsedAsValue' is 'error'. -/c.ts(1,1): error TS1371: Import is never used as a value and must use 'import type' when '--importsNotUsedAsValue' is 'error'. +/b.ts(1,1): error TS1371: This import is never used as a value and must use 'import type' because the 'importsNotUsedAsValue' is set to 'error'. +/c.ts(1,1): error TS1371: This import is never used as a value and must use 'import type' because the 'importsNotUsedAsValue' is set to 'error'. /e.ts(1,1): error TS6192: All imports in import declaration are unused. @@ -11,7 +11,7 @@ ==== /b.ts (1 errors) ==== import { A, B } from './a'; // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS1371: Import is never used as a value and must use 'import type' when '--importsNotUsedAsValue' is 'error'. +!!! error TS1371: This import is never used as a value and must use 'import type' because the 'importsNotUsedAsValue' is set to 'error'. let a: A; let b: B; console.log(a, b); @@ -19,7 +19,7 @@ ==== /c.ts (1 errors) ==== import Default, * as named from './a'; // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS1371: Import is never used as a value and must use 'import type' when '--importsNotUsedAsValue' is 'error'. +!!! error TS1371: This import is never used as a value and must use 'import type' because the 'importsNotUsedAsValue' is set to 'error'. let a: Default; let b: named.B; console.log(a, b); diff --git a/tests/cases/fourslash/codeFixSplitTypeOnlyImport.ts b/tests/cases/fourslash/codeFixSplitTypeOnlyImport.ts index 9ce49e23c6a48..00607ac2fc071 100644 --- a/tests/cases/fourslash/codeFixSplitTypeOnlyImport.ts +++ b/tests/cases/fourslash/codeFixSplitTypeOnlyImport.ts @@ -17,7 +17,7 @@ goTo.file("/c.ts"); verify.codeFix({ - errorCode: ts.Diagnostics.Type_only_import_can_specify_a_default_import_or_named_bindings_but_not_both.code, + errorCode: ts.Diagnostics.A_type_only_import_can_specify_a_default_import_or_named_bindings_but_not_both.code, description: ts.Diagnostics.Split_into_two_separate_import_declarations.message, applyChanges: false, index: 0,