diff --git a/src/services/completions.ts b/src/services/completions.ts index 42821f5dcccb5..eee800d1236b4 100644 --- a/src/services/completions.ts +++ b/src/services/completions.ts @@ -164,7 +164,7 @@ namespace ts.Completions { TypeAssertionKeywords, TypeKeywords, TypeKeyword, // Literally just `type` - Last = TypeKeywords + Last = TypeKeyword } const enum GlobalsSearch { Continue, Success, Fail } @@ -552,7 +552,7 @@ namespace ts.Completions { if (keywordFilters !== KeywordCompletionFilters.None) { const entryNames = new Set(entries.map(e => e.name)); for (const keywordEntry of getKeywordCompletions(keywordFilters, !insideJsDocTagTypeExpression && isSourceFileJS(sourceFile))) { - if (!entryNames.has(keywordEntry.name)) { + if (isTypeOnlyLocation && isTypeKeyword(stringToToken(keywordEntry.name)!) || !entryNames.has(keywordEntry.name)) { insertSorted(entries, keywordEntry, compareCompletionEntries, /*allowDuplicates*/ true); } } diff --git a/tests/cases/fourslash/server/autoImportProvider_namespaceSameNameAsIntrinsic.ts b/tests/cases/fourslash/server/autoImportProvider_namespaceSameNameAsIntrinsic.ts new file mode 100644 index 0000000000000..f4c6342f44ecd --- /dev/null +++ b/tests/cases/fourslash/server/autoImportProvider_namespaceSameNameAsIntrinsic.ts @@ -0,0 +1,39 @@ +/// + +// @Filename: /node_modules/fp-ts/package.json +//// { "name": "fp-ts", "version": "0.10.4" } + +// @Filename: /node_modules/fp-ts/index.d.ts +//// export * as string from "./lib/string"; + +// @Filename: /node_modules/fp-ts/lib/string.d.ts +//// export declare const fromString: (s: string) => string; +//// export type SafeString = string; + +// @Filename: /package.json +//// { "dependencies": { "fp-ts": "^0.10.4" } } + +// @Filename: /tsconfig.json +//// { "compilerOptions": { "module": "commonjs" } } + +// @Filename: /index.ts +//// type A = { name: string/**/ } + +goTo.marker(""); +verify.completions({ + marker: "", + includes: [{ + name: "string", + sortText: completion.SortText.GlobalsOrKeywords, + }, { + name: "string", + sortText: completion.SortText.AutoImportSuggestions, + source: "fp-ts", + sourceDisplay: "fp-ts", + hasAction: true, + }], + preferences: { + includeCompletionsForModuleExports: true, + allowIncompleteCompletions: true, + }, +});