Skip to content

Commit 1f51140

Browse files
author
Andy Hanson
committed
Don't unconditonally use a path mapping
1 parent 79e2628 commit 1f51140

8 files changed

+33
-16
lines changed

src/compiler/moduleSpecifiers.ts

+6-10
Original file line numberDiff line numberDiff line change
@@ -87,11 +87,9 @@ namespace ts.moduleSpecifiers {
8787
function getLocalModuleSpecifiers(
8888
moduleFileName: string,
8989
{ moduleResolutionKind, addJsExtension, getCanonicalFileName, sourceDirectory }: Info,
90-
compilerOptions: CompilerOptions,
90+
{ baseUrl, paths, rootDirs }: CompilerOptions,
9191
preferences: ModuleSpecifierPreferences,
9292
): ReadonlyArray<string> {
93-
const { baseUrl, paths, rootDirs } = compilerOptions;
94-
9593
const relativePath = rootDirs && tryGetModuleNameFromRootDirs(rootDirs, moduleFileName, sourceDirectory, getCanonicalFileName) ||
9694
removeExtensionAndIndexPostFix(ensurePathIsNonModuleName(getRelativePathFromDirectory(sourceDirectory, moduleFileName, getCanonicalFileName)), moduleResolutionKind, addJsExtension);
9795
if (!baseUrl || preferences.importModuleSpecifierPreference === "relative") {
@@ -105,23 +103,21 @@ namespace ts.moduleSpecifiers {
105103

106104
const importRelativeToBaseUrl = removeExtensionAndIndexPostFix(relativeToBaseUrl, moduleResolutionKind, addJsExtension);
107105
const fromPaths = paths && tryGetModuleNameFromPaths(removeFileExtension(relativeToBaseUrl), importRelativeToBaseUrl, paths);
108-
if (fromPaths) {
109-
return [fromPaths];
110-
}
106+
const nonRelative = fromPaths === undefined ? importRelativeToBaseUrl : fromPaths;
111107

112108
if (preferences.importModuleSpecifierPreference === "non-relative") {
113-
return [importRelativeToBaseUrl];
109+
return [nonRelative];
114110
}
115111

116112
if (preferences.importModuleSpecifierPreference !== undefined) Debug.assertNever(preferences.importModuleSpecifierPreference);
117113

118-
if (isPathRelativeToParent(relativeToBaseUrl)) {
114+
if (isPathRelativeToParent(nonRelative)) {
119115
return [relativePath];
120116
}
121117

122118
// Prefer a relative import over a baseUrl import if it has fewer components.
123-
const relativeFirst = countPathComponents(relativePath) < countPathComponents(importRelativeToBaseUrl);
124-
return relativeFirst ? [relativePath, importRelativeToBaseUrl] : [importRelativeToBaseUrl, relativePath];
119+
const relativeFirst = countPathComponents(relativePath) < countPathComponents(nonRelative);
120+
return relativeFirst ? [relativePath, nonRelative] : [nonRelative, relativePath];
125121
}
126122

127123
function countPathComponents(path: string): number {

tests/cases/fourslash/importNameCodeFixNewImportPaths0.ts

+4-1
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,8 @@
1818
verify.importFixAtPosition([
1919
`import { foo } from "a";
2020
21-
foo();`
21+
foo();`,
22+
`import { foo } from "./folder_a/f2";
23+
24+
foo();`,
2225
]);

tests/cases/fourslash/importNameCodeFixNewImportPaths1.ts

+4-1
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,8 @@
1818
verify.importFixAtPosition([
1919
`import { foo } from "b/f2";
2020
21-
foo();`
21+
foo();`,
22+
`import { foo } from "./folder_b/f2";
23+
24+
foo();`,
2225
]);

tests/cases/fourslash/importNameCodeFixNewImportPaths2.ts

+4-1
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,8 @@
2424
verify.importFixAtPosition([
2525
`import { foo } from "b";
2626
27-
foo();`
27+
foo();`,
28+
`import { foo } from "./folder_b";
29+
30+
foo();`,
2831
]);

tests/cases/fourslash/importNameCodeFixNewImportPaths_withExtension.ts

+4-1
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,8 @@
1919
verify.importFixAtPosition([
2020
`import { foo } from "foo";
2121
22-
foo`
22+
foo`,
23+
`import { foo } from "./thisHasPathMapping";
24+
25+
foo`,
2326
]);

tests/cases/fourslash/importNameCodeFixNewImportPaths_withLeadingDotSlash.ts

+4-1
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,8 @@
1919
verify.importFixAtPosition([
2020
`import { foo } from "foo";
2121
22-
foo`
22+
foo`,
23+
`import { foo } from "./thisHasPathMapping";
24+
25+
foo`,
2326
]);

tests/cases/fourslash/importNameCodeFixNewImportPaths_withParentRelativePath.ts

+4-1
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,8 @@
1919
verify.importFixAtPosition([
2020
`import { foo } from "foo";
2121
22-
foo`
22+
foo`,
23+
`import { foo } from "../thisHasPathMapping";
24+
25+
foo`,
2326
]);

tests/cases/fourslash/importNameCodeFix_fromPathMapping.ts

+3
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@
1818

1919
goTo.file("/b.ts");
2020
verify.importFixAtPosition([
21+
`import { foo } from "./a";
22+
23+
foo;`,
2124
`import { foo } from "@root/a";
2225
2326
foo;`,

0 commit comments

Comments
 (0)