From b0633c5b6ed437284c9d495dad5fff475e9dd7ee Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Tue, 10 Jan 2023 11:42:07 -0800 Subject: [PATCH 1/5] Add failing test --- tests/cases/compiler/issue52182.ts | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 tests/cases/compiler/issue52182.ts diff --git a/tests/cases/compiler/issue52182.ts b/tests/cases/compiler/issue52182.ts new file mode 100644 index 0000000000000..800ec19a53bfe --- /dev/null +++ b/tests/cases/compiler/issue52182.ts @@ -0,0 +1,20 @@ +// @filename: tsconfig.json +{ + "compilerOptions": { + "paths": { + "@angular/*": ["./@angular/*"] + } + } +} + +// @filename: @angular/core/package.json +{ + "name": "@angular/core", + "typings": "index.d.ts" +} + +// @filename: @angular/core/index.ts +export {}; + +// @filename: @angular/core/testing/test.ts +import "@angular/core"; From 7f4baf6e3d994476cf863a277a64601fb0e8ae51 Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Tue, 10 Jan 2023 14:00:12 -0800 Subject: [PATCH 2/5] Suppress resolvedUsingTsExtension during loadModuleFromDirectory --- src/compiler/moduleNameResolver.ts | 11 +++++++++- tests/baselines/reference/issue52182.js | 22 ++++++++++++++++++++ tests/baselines/reference/issue52182.symbols | 8 +++++++ tests/baselines/reference/issue52182.types | 8 +++++++ 4 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 tests/baselines/reference/issue52182.js create mode 100644 tests/baselines/reference/issue52182.symbols create mode 100644 tests/baselines/reference/issue52182.types diff --git a/src/compiler/moduleNameResolver.ts b/src/compiler/moduleNameResolver.ts index 30cbc37fd14e9..6fe2800ca9177 100644 --- a/src/compiler/moduleNameResolver.ts +++ b/src/compiler/moduleNameResolver.ts @@ -259,6 +259,7 @@ export interface ModuleResolutionState { requestContainingDirectory: string | undefined; reportDiagnostic: DiagnosticReporter; isConfigLookup: boolean; + suppressResolvedUsingTsExtension: boolean; } /** Just the fields that we use for module resolution. @@ -526,6 +527,7 @@ export function resolveTypeReferenceDirective(typeReferenceDirectiveName: string requestContainingDirectory: containingDirectory, reportDiagnostic: diag => void diagnostics.push(diag), isConfigLookup: false, + suppressResolvedUsingTsExtension: false, }; let resolved = primaryLookup(); let primary = true; @@ -1652,6 +1654,7 @@ function nodeModuleNameResolverWorker(features: NodeResolutionFeatures, moduleNa requestContainingDirectory: containingDirectory, reportDiagnostic: diag => void diagnostics.push(diag), isConfigLookup, + suppressResolvedUsingTsExtension: false, }; if (traceEnabled && getEmitModuleResolutionKind(compilerOptions) >= ModuleResolutionKind.Node16 && getEmitModuleResolutionKind(compilerOptions) <= ModuleResolutionKind.NodeNext) { @@ -1948,7 +1951,7 @@ function tryAddingExtensions(candidate: string, extensions: Extensions, original function tryExtension(ext: string, resolvedUsingTsExtension?: boolean): PathAndExtension | undefined { const path = tryFile(candidate + ext, onlyRecordFailures, state); - return path === undefined ? undefined : { path, ext, resolvedUsingTsExtension }; + return path === undefined ? undefined : { path, ext, resolvedUsingTsExtension: !state.suppressResolvedUsingTsExtension && resolvedUsingTsExtension }; } } @@ -2111,6 +2114,7 @@ export function getTemporaryModuleResolutionState(packageJsonInfoCache: PackageJ requestContainingDirectory: undefined, reportDiagnostic: noop, isConfigLookup: false, + suppressResolvedUsingTsExtension: false, }; } @@ -2232,11 +2236,14 @@ function loadNodeModuleFromDirectoryWorker(extensions: Extensions, candidate: st // (technically it only emits a deprecation warning in esm packages right now, but that's probably // enough to mean we don't need to support it) const features = state.features; + const suppressResolvedUsingTsExtension = state.suppressResolvedUsingTsExtension; + state.suppressResolvedUsingTsExtension = true; if (jsonContent?.type !== "module") { state.features &= ~NodeResolutionFeatures.EsmMode; } const result = nodeLoadModuleByRelativeName(expandedExtensions, candidate, onlyRecordFailures, state, /*considerPackageJson*/ false); state.features = features; + state.suppressResolvedUsingTsExtension = suppressResolvedUsingTsExtension; return result; }; @@ -2935,6 +2942,7 @@ export function classicNameResolver(moduleName: string, containingFile: string, requestContainingDirectory: containingDirectory, reportDiagnostic: diag => void diagnostics.push(diag), isConfigLookup: false, + suppressResolvedUsingTsExtension: false, }; const resolved = @@ -3015,6 +3023,7 @@ export function loadModuleFromGlobalCache(moduleName: string, projectName: strin requestContainingDirectory: undefined, reportDiagnostic: diag => void diagnostics.push(diag), isConfigLookup: false, + suppressResolvedUsingTsExtension: false, }; const resolved = loadModuleFromImmediateNodeModulesDirectory(Extensions.Declaration, moduleName, globalCache, state, /*typesScopeOnly*/ false, /*cache*/ undefined, /*redirectedReference*/ undefined); return createResolvedModuleWithFailedLookupLocations( diff --git a/tests/baselines/reference/issue52182.js b/tests/baselines/reference/issue52182.js new file mode 100644 index 0000000000000..8c2455d0a32f5 --- /dev/null +++ b/tests/baselines/reference/issue52182.js @@ -0,0 +1,22 @@ +//// [tests/cases/compiler/issue52182.ts] //// + +//// [package.json] +{ + "name": "@angular/core", + "typings": "index.d.ts" +} + +//// [index.ts] +export {}; + +//// [test.ts] +import "@angular/core"; + + +//// [index.js] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//// [test.js] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +require("@angular/core"); diff --git a/tests/baselines/reference/issue52182.symbols b/tests/baselines/reference/issue52182.symbols new file mode 100644 index 0000000000000..c696908e16a5f --- /dev/null +++ b/tests/baselines/reference/issue52182.symbols @@ -0,0 +1,8 @@ +=== tests/cases/compiler/@angular/core/index.ts === + +export {}; + +=== tests/cases/compiler/@angular/core/testing/test.ts === + +import "@angular/core"; + diff --git a/tests/baselines/reference/issue52182.types b/tests/baselines/reference/issue52182.types new file mode 100644 index 0000000000000..c696908e16a5f --- /dev/null +++ b/tests/baselines/reference/issue52182.types @@ -0,0 +1,8 @@ +=== tests/cases/compiler/@angular/core/index.ts === + +export {}; + +=== tests/cases/compiler/@angular/core/testing/test.ts === + +import "@angular/core"; + From 29a4d8bebbc9effd15b58bc6b4b4897b3042b4f5 Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Tue, 10 Jan 2023 15:14:30 -0800 Subject: [PATCH 3/5] Update tests --- ...s => suppressResolvedUsingTsExtension1.js} | 2 +- ...suppressResolvedUsingTsExtension1.symbols} | 0 ...> suppressResolvedUsingTsExtension1.types} | 0 ...ppressResolvedUsingTsExtension2.errors.txt | 25 +++++++++++++++++++ .../suppressResolvedUsingTsExtension2.js | 21 ++++++++++++++++ .../suppressResolvedUsingTsExtension2.symbols | 15 +++++++++++ .../suppressResolvedUsingTsExtension2.types | 16 ++++++++++++ ...s => suppressResolvedUsingTsExtension1.ts} | 0 .../suppressResolvedUsingTsExtension2.ts | 21 ++++++++++++++++ 9 files changed, 99 insertions(+), 1 deletion(-) rename tests/baselines/reference/{issue52182.js => suppressResolvedUsingTsExtension1.js} (80%) rename tests/baselines/reference/{issue52182.symbols => suppressResolvedUsingTsExtension1.symbols} (100%) rename tests/baselines/reference/{issue52182.types => suppressResolvedUsingTsExtension1.types} (100%) create mode 100644 tests/baselines/reference/suppressResolvedUsingTsExtension2.errors.txt create mode 100644 tests/baselines/reference/suppressResolvedUsingTsExtension2.js create mode 100644 tests/baselines/reference/suppressResolvedUsingTsExtension2.symbols create mode 100644 tests/baselines/reference/suppressResolvedUsingTsExtension2.types rename tests/cases/compiler/{issue52182.ts => suppressResolvedUsingTsExtension1.ts} (100%) create mode 100644 tests/cases/compiler/suppressResolvedUsingTsExtension2.ts diff --git a/tests/baselines/reference/issue52182.js b/tests/baselines/reference/suppressResolvedUsingTsExtension1.js similarity index 80% rename from tests/baselines/reference/issue52182.js rename to tests/baselines/reference/suppressResolvedUsingTsExtension1.js index 8c2455d0a32f5..d124e5be344f4 100644 --- a/tests/baselines/reference/issue52182.js +++ b/tests/baselines/reference/suppressResolvedUsingTsExtension1.js @@ -1,4 +1,4 @@ -//// [tests/cases/compiler/issue52182.ts] //// +//// [tests/cases/compiler/suppressResolvedUsingTsExtension1.ts] //// //// [package.json] { diff --git a/tests/baselines/reference/issue52182.symbols b/tests/baselines/reference/suppressResolvedUsingTsExtension1.symbols similarity index 100% rename from tests/baselines/reference/issue52182.symbols rename to tests/baselines/reference/suppressResolvedUsingTsExtension1.symbols diff --git a/tests/baselines/reference/issue52182.types b/tests/baselines/reference/suppressResolvedUsingTsExtension1.types similarity index 100% rename from tests/baselines/reference/issue52182.types rename to tests/baselines/reference/suppressResolvedUsingTsExtension1.types diff --git a/tests/baselines/reference/suppressResolvedUsingTsExtension2.errors.txt b/tests/baselines/reference/suppressResolvedUsingTsExtension2.errors.txt new file mode 100644 index 0000000000000..ef3ffa721e4ea --- /dev/null +++ b/tests/baselines/reference/suppressResolvedUsingTsExtension2.errors.txt @@ -0,0 +1,25 @@ +tests/cases/compiler/test.ts(1,19): error TS5097: An import path can only end with a '.ts' extension when 'allowImportingTsExtensions' is enabled. + + +==== tests/cases/compiler/tsconfig.json (0 errors) ==== + { + "compilerOptions": { + "paths": { + "foo/*": ["./dist/*"], + "baz/*.ts": ["./types/*.d.ts"] + } + } + } + +==== tests/cases/compiler/dist/bar.ts (0 errors) ==== + export const a = 1234; + +==== tests/cases/compiler/types/main.d.ts (0 errors) ==== + export const b: string; + +==== tests/cases/compiler/test.ts (1 errors) ==== + import { a } from "foo/bar.ts"; + ~~~~~~~~~~~~ +!!! error TS5097: An import path can only end with a '.ts' extension when 'allowImportingTsExtensions' is enabled. + import { b } from "baz/main.ts"; + \ No newline at end of file diff --git a/tests/baselines/reference/suppressResolvedUsingTsExtension2.js b/tests/baselines/reference/suppressResolvedUsingTsExtension2.js new file mode 100644 index 0000000000000..e9e625183892b --- /dev/null +++ b/tests/baselines/reference/suppressResolvedUsingTsExtension2.js @@ -0,0 +1,21 @@ +//// [tests/cases/compiler/suppressResolvedUsingTsExtension2.ts] //// + +//// [bar.ts] +export const a = 1234; + +//// [main.d.ts] +export const b: string; + +//// [test.ts] +import { a } from "foo/bar.ts"; +import { b } from "baz/main.ts"; + + +//// [bar.js] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.a = void 0; +exports.a = 1234; +//// [test.js] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/tests/baselines/reference/suppressResolvedUsingTsExtension2.symbols b/tests/baselines/reference/suppressResolvedUsingTsExtension2.symbols new file mode 100644 index 0000000000000..4418c58121945 --- /dev/null +++ b/tests/baselines/reference/suppressResolvedUsingTsExtension2.symbols @@ -0,0 +1,15 @@ +=== tests/cases/compiler/dist/bar.ts === +export const a = 1234; +>a : Symbol(a, Decl(bar.ts, 0, 12)) + +=== tests/cases/compiler/types/main.d.ts === +export const b: string; +>b : Symbol(b, Decl(main.d.ts, 0, 12)) + +=== tests/cases/compiler/test.ts === +import { a } from "foo/bar.ts"; +>a : Symbol(a, Decl(test.ts, 0, 8)) + +import { b } from "baz/main.ts"; +>b : Symbol(b, Decl(test.ts, 1, 8)) + diff --git a/tests/baselines/reference/suppressResolvedUsingTsExtension2.types b/tests/baselines/reference/suppressResolvedUsingTsExtension2.types new file mode 100644 index 0000000000000..1687bb192d5de --- /dev/null +++ b/tests/baselines/reference/suppressResolvedUsingTsExtension2.types @@ -0,0 +1,16 @@ +=== tests/cases/compiler/dist/bar.ts === +export const a = 1234; +>a : 1234 +>1234 : 1234 + +=== tests/cases/compiler/types/main.d.ts === +export const b: string; +>b : string + +=== tests/cases/compiler/test.ts === +import { a } from "foo/bar.ts"; +>a : 1234 + +import { b } from "baz/main.ts"; +>b : string + diff --git a/tests/cases/compiler/issue52182.ts b/tests/cases/compiler/suppressResolvedUsingTsExtension1.ts similarity index 100% rename from tests/cases/compiler/issue52182.ts rename to tests/cases/compiler/suppressResolvedUsingTsExtension1.ts diff --git a/tests/cases/compiler/suppressResolvedUsingTsExtension2.ts b/tests/cases/compiler/suppressResolvedUsingTsExtension2.ts new file mode 100644 index 0000000000000..9dca31e0cee37 --- /dev/null +++ b/tests/cases/compiler/suppressResolvedUsingTsExtension2.ts @@ -0,0 +1,21 @@ +// @moduleResolution: bundler + +// @filename: tsconfig.json +{ + "compilerOptions": { + "paths": { + "foo/*": ["./dist/*"], + "baz/*.ts": ["./types/*.d.ts"] + } + } +} + +// @filename: dist/bar.ts +export const a = 1234; + +// @filename: types/main.d.ts +export const b: string; + +// @filename: test.ts +import { a } from "foo/bar.ts"; +import { b } from "baz/main.ts"; From 8bc68dedefb5ee6d96acd594ddd669d6ec89c8ea Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Tue, 10 Jan 2023 15:43:07 -0800 Subject: [PATCH 4/5] Rename flag to be more descriptive --- src/compiler/moduleNameResolver.ts | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/compiler/moduleNameResolver.ts b/src/compiler/moduleNameResolver.ts index 6fe2800ca9177..332804c7d43df 100644 --- a/src/compiler/moduleNameResolver.ts +++ b/src/compiler/moduleNameResolver.ts @@ -259,7 +259,7 @@ export interface ModuleResolutionState { requestContainingDirectory: string | undefined; reportDiagnostic: DiagnosticReporter; isConfigLookup: boolean; - suppressResolvedUsingTsExtension: boolean; + candidateIsFromPackageJsonField: boolean; } /** Just the fields that we use for module resolution. @@ -527,7 +527,7 @@ export function resolveTypeReferenceDirective(typeReferenceDirectiveName: string requestContainingDirectory: containingDirectory, reportDiagnostic: diag => void diagnostics.push(diag), isConfigLookup: false, - suppressResolvedUsingTsExtension: false, + candidateIsFromPackageJsonField: false, }; let resolved = primaryLookup(); let primary = true; @@ -1654,7 +1654,7 @@ function nodeModuleNameResolverWorker(features: NodeResolutionFeatures, moduleNa requestContainingDirectory: containingDirectory, reportDiagnostic: diag => void diagnostics.push(diag), isConfigLookup, - suppressResolvedUsingTsExtension: false, + candidateIsFromPackageJsonField: false, }; if (traceEnabled && getEmitModuleResolutionKind(compilerOptions) >= ModuleResolutionKind.Node16 && getEmitModuleResolutionKind(compilerOptions) <= ModuleResolutionKind.NodeNext) { @@ -1951,7 +1951,7 @@ function tryAddingExtensions(candidate: string, extensions: Extensions, original function tryExtension(ext: string, resolvedUsingTsExtension?: boolean): PathAndExtension | undefined { const path = tryFile(candidate + ext, onlyRecordFailures, state); - return path === undefined ? undefined : { path, ext, resolvedUsingTsExtension: !state.suppressResolvedUsingTsExtension && resolvedUsingTsExtension }; + return path === undefined ? undefined : { path, ext, resolvedUsingTsExtension: !state.candidateIsFromPackageJsonField && resolvedUsingTsExtension }; } } @@ -2114,7 +2114,7 @@ export function getTemporaryModuleResolutionState(packageJsonInfoCache: PackageJ requestContainingDirectory: undefined, reportDiagnostic: noop, isConfigLookup: false, - suppressResolvedUsingTsExtension: false, + candidateIsFromPackageJsonField: false, }; } @@ -2236,14 +2236,14 @@ function loadNodeModuleFromDirectoryWorker(extensions: Extensions, candidate: st // (technically it only emits a deprecation warning in esm packages right now, but that's probably // enough to mean we don't need to support it) const features = state.features; - const suppressResolvedUsingTsExtension = state.suppressResolvedUsingTsExtension; - state.suppressResolvedUsingTsExtension = true; + const candidateIsFromPackageJsonField = state.candidateIsFromPackageJsonField; + state.candidateIsFromPackageJsonField = true; if (jsonContent?.type !== "module") { state.features &= ~NodeResolutionFeatures.EsmMode; } const result = nodeLoadModuleByRelativeName(expandedExtensions, candidate, onlyRecordFailures, state, /*considerPackageJson*/ false); state.features = features; - state.suppressResolvedUsingTsExtension = suppressResolvedUsingTsExtension; + state.candidateIsFromPackageJsonField = candidateIsFromPackageJsonField; return result; }; @@ -2942,7 +2942,7 @@ export function classicNameResolver(moduleName: string, containingFile: string, requestContainingDirectory: containingDirectory, reportDiagnostic: diag => void diagnostics.push(diag), isConfigLookup: false, - suppressResolvedUsingTsExtension: false, + candidateIsFromPackageJsonField: false, }; const resolved = @@ -3023,7 +3023,7 @@ export function loadModuleFromGlobalCache(moduleName: string, projectName: strin requestContainingDirectory: undefined, reportDiagnostic: diag => void diagnostics.push(diag), isConfigLookup: false, - suppressResolvedUsingTsExtension: false, + candidateIsFromPackageJsonField: false, }; const resolved = loadModuleFromImmediateNodeModulesDirectory(Extensions.Declaration, moduleName, globalCache, state, /*typesScopeOnly*/ false, /*cache*/ undefined, /*redirectedReference*/ undefined); return createResolvedModuleWithFailedLookupLocations( From f45a558e884f3525bf22b62b39686051eb78ad52 Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Tue, 10 Jan 2023 15:49:14 -0800 Subject: [PATCH 5/5] Rename tests, add node10 mode --- ...solutionCandidateFromPackageJsonField1.js} | 2 +- ...ionCandidateFromPackageJsonField1.symbols} | 0 ...utionCandidateFromPackageJsonField1.types} | 0 ...eld2(moduleresolution=bundler).errors.txt} | 0 ...geJsonField2(moduleresolution=bundler).js} | 2 +- ...nField2(moduleresolution=bundler).symbols} | 0 ...sonField2(moduleresolution=bundler).types} | 0 ...Field2(moduleresolution=node10).errors.txt | 25 +++++++++++++++++++ ...kageJsonField2(moduleresolution=node10).js | 21 ++++++++++++++++ ...sonField2(moduleresolution=node10).symbols | 15 +++++++++++ ...eJsonField2(moduleresolution=node10).types | 16 ++++++++++++ ...solutionCandidateFromPackageJsonField1.ts} | 0 ...solutionCandidateFromPackageJsonField2.ts} | 2 +- 13 files changed, 80 insertions(+), 3 deletions(-) rename tests/baselines/reference/{suppressResolvedUsingTsExtension1.js => resolutionCandidateFromPackageJsonField1.js} (79%) rename tests/baselines/reference/{suppressResolvedUsingTsExtension1.symbols => resolutionCandidateFromPackageJsonField1.symbols} (100%) rename tests/baselines/reference/{suppressResolvedUsingTsExtension1.types => resolutionCandidateFromPackageJsonField1.types} (100%) rename tests/baselines/reference/{suppressResolvedUsingTsExtension2.errors.txt => resolutionCandidateFromPackageJsonField2(moduleresolution=bundler).errors.txt} (100%) rename tests/baselines/reference/{suppressResolvedUsingTsExtension2.js => resolutionCandidateFromPackageJsonField2(moduleresolution=bundler).js} (80%) rename tests/baselines/reference/{suppressResolvedUsingTsExtension2.symbols => resolutionCandidateFromPackageJsonField2(moduleresolution=bundler).symbols} (100%) rename tests/baselines/reference/{suppressResolvedUsingTsExtension2.types => resolutionCandidateFromPackageJsonField2(moduleresolution=bundler).types} (100%) create mode 100644 tests/baselines/reference/resolutionCandidateFromPackageJsonField2(moduleresolution=node10).errors.txt create mode 100644 tests/baselines/reference/resolutionCandidateFromPackageJsonField2(moduleresolution=node10).js create mode 100644 tests/baselines/reference/resolutionCandidateFromPackageJsonField2(moduleresolution=node10).symbols create mode 100644 tests/baselines/reference/resolutionCandidateFromPackageJsonField2(moduleresolution=node10).types rename tests/cases/compiler/{suppressResolvedUsingTsExtension1.ts => resolutionCandidateFromPackageJsonField1.ts} (100%) rename tests/cases/compiler/{suppressResolvedUsingTsExtension2.ts => resolutionCandidateFromPackageJsonField2.ts} (90%) diff --git a/tests/baselines/reference/suppressResolvedUsingTsExtension1.js b/tests/baselines/reference/resolutionCandidateFromPackageJsonField1.js similarity index 79% rename from tests/baselines/reference/suppressResolvedUsingTsExtension1.js rename to tests/baselines/reference/resolutionCandidateFromPackageJsonField1.js index d124e5be344f4..094f3a3dd9e7a 100644 --- a/tests/baselines/reference/suppressResolvedUsingTsExtension1.js +++ b/tests/baselines/reference/resolutionCandidateFromPackageJsonField1.js @@ -1,4 +1,4 @@ -//// [tests/cases/compiler/suppressResolvedUsingTsExtension1.ts] //// +//// [tests/cases/compiler/resolutionCandidateFromPackageJsonField1.ts] //// //// [package.json] { diff --git a/tests/baselines/reference/suppressResolvedUsingTsExtension1.symbols b/tests/baselines/reference/resolutionCandidateFromPackageJsonField1.symbols similarity index 100% rename from tests/baselines/reference/suppressResolvedUsingTsExtension1.symbols rename to tests/baselines/reference/resolutionCandidateFromPackageJsonField1.symbols diff --git a/tests/baselines/reference/suppressResolvedUsingTsExtension1.types b/tests/baselines/reference/resolutionCandidateFromPackageJsonField1.types similarity index 100% rename from tests/baselines/reference/suppressResolvedUsingTsExtension1.types rename to tests/baselines/reference/resolutionCandidateFromPackageJsonField1.types diff --git a/tests/baselines/reference/suppressResolvedUsingTsExtension2.errors.txt b/tests/baselines/reference/resolutionCandidateFromPackageJsonField2(moduleresolution=bundler).errors.txt similarity index 100% rename from tests/baselines/reference/suppressResolvedUsingTsExtension2.errors.txt rename to tests/baselines/reference/resolutionCandidateFromPackageJsonField2(moduleresolution=bundler).errors.txt diff --git a/tests/baselines/reference/suppressResolvedUsingTsExtension2.js b/tests/baselines/reference/resolutionCandidateFromPackageJsonField2(moduleresolution=bundler).js similarity index 80% rename from tests/baselines/reference/suppressResolvedUsingTsExtension2.js rename to tests/baselines/reference/resolutionCandidateFromPackageJsonField2(moduleresolution=bundler).js index e9e625183892b..fc322d5465d3d 100644 --- a/tests/baselines/reference/suppressResolvedUsingTsExtension2.js +++ b/tests/baselines/reference/resolutionCandidateFromPackageJsonField2(moduleresolution=bundler).js @@ -1,4 +1,4 @@ -//// [tests/cases/compiler/suppressResolvedUsingTsExtension2.ts] //// +//// [tests/cases/compiler/resolutionCandidateFromPackageJsonField2.ts] //// //// [bar.ts] export const a = 1234; diff --git a/tests/baselines/reference/suppressResolvedUsingTsExtension2.symbols b/tests/baselines/reference/resolutionCandidateFromPackageJsonField2(moduleresolution=bundler).symbols similarity index 100% rename from tests/baselines/reference/suppressResolvedUsingTsExtension2.symbols rename to tests/baselines/reference/resolutionCandidateFromPackageJsonField2(moduleresolution=bundler).symbols diff --git a/tests/baselines/reference/suppressResolvedUsingTsExtension2.types b/tests/baselines/reference/resolutionCandidateFromPackageJsonField2(moduleresolution=bundler).types similarity index 100% rename from tests/baselines/reference/suppressResolvedUsingTsExtension2.types rename to tests/baselines/reference/resolutionCandidateFromPackageJsonField2(moduleresolution=bundler).types diff --git a/tests/baselines/reference/resolutionCandidateFromPackageJsonField2(moduleresolution=node10).errors.txt b/tests/baselines/reference/resolutionCandidateFromPackageJsonField2(moduleresolution=node10).errors.txt new file mode 100644 index 0000000000000..ef3ffa721e4ea --- /dev/null +++ b/tests/baselines/reference/resolutionCandidateFromPackageJsonField2(moduleresolution=node10).errors.txt @@ -0,0 +1,25 @@ +tests/cases/compiler/test.ts(1,19): error TS5097: An import path can only end with a '.ts' extension when 'allowImportingTsExtensions' is enabled. + + +==== tests/cases/compiler/tsconfig.json (0 errors) ==== + { + "compilerOptions": { + "paths": { + "foo/*": ["./dist/*"], + "baz/*.ts": ["./types/*.d.ts"] + } + } + } + +==== tests/cases/compiler/dist/bar.ts (0 errors) ==== + export const a = 1234; + +==== tests/cases/compiler/types/main.d.ts (0 errors) ==== + export const b: string; + +==== tests/cases/compiler/test.ts (1 errors) ==== + import { a } from "foo/bar.ts"; + ~~~~~~~~~~~~ +!!! error TS5097: An import path can only end with a '.ts' extension when 'allowImportingTsExtensions' is enabled. + import { b } from "baz/main.ts"; + \ No newline at end of file diff --git a/tests/baselines/reference/resolutionCandidateFromPackageJsonField2(moduleresolution=node10).js b/tests/baselines/reference/resolutionCandidateFromPackageJsonField2(moduleresolution=node10).js new file mode 100644 index 0000000000000..fc322d5465d3d --- /dev/null +++ b/tests/baselines/reference/resolutionCandidateFromPackageJsonField2(moduleresolution=node10).js @@ -0,0 +1,21 @@ +//// [tests/cases/compiler/resolutionCandidateFromPackageJsonField2.ts] //// + +//// [bar.ts] +export const a = 1234; + +//// [main.d.ts] +export const b: string; + +//// [test.ts] +import { a } from "foo/bar.ts"; +import { b } from "baz/main.ts"; + + +//// [bar.js] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.a = void 0; +exports.a = 1234; +//// [test.js] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/tests/baselines/reference/resolutionCandidateFromPackageJsonField2(moduleresolution=node10).symbols b/tests/baselines/reference/resolutionCandidateFromPackageJsonField2(moduleresolution=node10).symbols new file mode 100644 index 0000000000000..4418c58121945 --- /dev/null +++ b/tests/baselines/reference/resolutionCandidateFromPackageJsonField2(moduleresolution=node10).symbols @@ -0,0 +1,15 @@ +=== tests/cases/compiler/dist/bar.ts === +export const a = 1234; +>a : Symbol(a, Decl(bar.ts, 0, 12)) + +=== tests/cases/compiler/types/main.d.ts === +export const b: string; +>b : Symbol(b, Decl(main.d.ts, 0, 12)) + +=== tests/cases/compiler/test.ts === +import { a } from "foo/bar.ts"; +>a : Symbol(a, Decl(test.ts, 0, 8)) + +import { b } from "baz/main.ts"; +>b : Symbol(b, Decl(test.ts, 1, 8)) + diff --git a/tests/baselines/reference/resolutionCandidateFromPackageJsonField2(moduleresolution=node10).types b/tests/baselines/reference/resolutionCandidateFromPackageJsonField2(moduleresolution=node10).types new file mode 100644 index 0000000000000..1687bb192d5de --- /dev/null +++ b/tests/baselines/reference/resolutionCandidateFromPackageJsonField2(moduleresolution=node10).types @@ -0,0 +1,16 @@ +=== tests/cases/compiler/dist/bar.ts === +export const a = 1234; +>a : 1234 +>1234 : 1234 + +=== tests/cases/compiler/types/main.d.ts === +export const b: string; +>b : string + +=== tests/cases/compiler/test.ts === +import { a } from "foo/bar.ts"; +>a : 1234 + +import { b } from "baz/main.ts"; +>b : string + diff --git a/tests/cases/compiler/suppressResolvedUsingTsExtension1.ts b/tests/cases/compiler/resolutionCandidateFromPackageJsonField1.ts similarity index 100% rename from tests/cases/compiler/suppressResolvedUsingTsExtension1.ts rename to tests/cases/compiler/resolutionCandidateFromPackageJsonField1.ts diff --git a/tests/cases/compiler/suppressResolvedUsingTsExtension2.ts b/tests/cases/compiler/resolutionCandidateFromPackageJsonField2.ts similarity index 90% rename from tests/cases/compiler/suppressResolvedUsingTsExtension2.ts rename to tests/cases/compiler/resolutionCandidateFromPackageJsonField2.ts index 9dca31e0cee37..c1e30c89e5b9d 100644 --- a/tests/cases/compiler/suppressResolvedUsingTsExtension2.ts +++ b/tests/cases/compiler/resolutionCandidateFromPackageJsonField2.ts @@ -1,4 +1,4 @@ -// @moduleResolution: bundler +// @moduleResolution: node10,bundler // @filename: tsconfig.json {