Skip to content

Commit d65bdb8

Browse files
PhoebeSzmucerPhoebe Szmucer
and
Phoebe Szmucer
authored
Fix duplicated import suggestions (#57369)
Co-authored-by: Phoebe Szmucer <[email protected]>
1 parent ae27e55 commit d65bdb8

File tree

2 files changed

+18
-5
lines changed

2 files changed

+18
-5
lines changed

src/services/stringCompletions.ts

+4-1
Original file line numberDiff line numberDiff line change
@@ -670,7 +670,10 @@ function getCompletionEntriesForDirectoryFragmentWithRootDirs(rootDirs: string[]
670670
const basePath = compilerOptions.project || host.getCurrentDirectory();
671671
const ignoreCase = !(host.useCaseSensitiveFileNames && host.useCaseSensitiveFileNames());
672672
const baseDirectories = getBaseDirectoriesFromRootDirs(rootDirs, basePath, scriptDirectory, ignoreCase);
673-
return flatMap(baseDirectories, baseDirectory => arrayFrom(getCompletionEntriesForDirectoryFragment(fragment, baseDirectory, extensionOptions, host, /*moduleSpecifierIsRelative*/ true, exclude).values()));
673+
return deduplicate<NameAndKind>(
674+
flatMap(baseDirectories, baseDirectory => arrayFrom(getCompletionEntriesForDirectoryFragment(fragment, baseDirectory, extensionOptions, host, /*moduleSpecifierIsRelative*/ true, exclude).values())),
675+
(itemA, itemB) => itemA.name === itemB.name && itemA.kind === itemB.kind && itemA.extension === itemB.extension,
676+
);
674677
}
675678

676679
const enum ReferenceKind {

tests/cases/fourslash/completionForStringLiteralRelativeImport5.ts

+14-4
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,14 @@
1313
//// var foo3 = require(".//*require1*/
1414

1515
// @Filename: /repo/src2/dir/test2.ts
16-
//// import * as foo1 from ".//*import_as2*/
17-
//// import foo2 = require(".//*import_equals2*/
18-
//// var foo3 = require(".//*require2*/
16+
//// import * as foo1 from "..//*import_as2*/
17+
//// import foo2 = require("..//*import_equals2*/
18+
//// var foo3 = require("..//*require2*/
19+
20+
// @Filename: /repo/src2/index.ts
21+
//// import * as foo1 from ".//*import_as3*/
22+
//// import foo2 = require(".//*import_equals3*/
23+
//// var foo3 = require(".//*require3*/
1924

2025
// @Filename: /repo/generated1/dir/f1.ts
2126
//// /*f1*/
@@ -31,7 +36,12 @@ verify.completions(
3136
},
3237
{
3338
marker: ["import_as2", "import_equals2", "require2"],
34-
unsorted: ["f1", "f2", "test1"],
39+
unsorted: ["dir", "index"],
40+
isNewIdentifierLocation: true,
41+
},
42+
{
43+
marker: ["import_as3", "import_equals3", "require3"],
44+
unsorted: ["dir"],
3545
isNewIdentifierLocation: true,
3646
}
3747
);

0 commit comments

Comments
 (0)