From 3d35801127f0a62d58d752bc613506e836c5d120 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Fri, 6 Jul 2018 14:16:30 -0700 Subject: [PATCH] Make sure quickSuggestionsForPaths is respected on TS 2.9+ Fixes #53683 --- .../src/features/completions.ts | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/extensions/typescript-language-features/src/features/completions.ts b/extensions/typescript-language-features/src/features/completions.ts index c7ce7bf6e56..2c4ece54764 100644 --- a/extensions/typescript-language-features/src/features/completions.ts +++ b/extensions/typescript-language-features/src/features/completions.ts @@ -318,20 +318,9 @@ class TypeScriptCompletionItemProvider implements vscode.CompletionItemProvider } const enableDotCompletions = this.shouldEnableDotCompletions(document, position); - - const completionItems: vscode.CompletionItem[] = []; - for (const element of msg) { - if (element.kind === PConst.Kind.warning && !completionConfiguration.nameSuggestions) { - continue; - } - if (!completionConfiguration.autoImportSuggestions && element.hasAction) { - continue; - } - const item = new MyCompletionItem(position, document, line.text, element, enableDotCompletions, completionConfiguration.useCodeSnippetsOnMethodSuggest); - completionItems.push(item); - } - - return completionItems; + return msg + .filter(entry => !shouldExcludeCompletionEntry(entry, completionConfiguration)) + .map(entry => new MyCompletionItem(position, document, line.text, entry, enableDotCompletions, completionConfiguration.useCodeSnippetsOnMethodSuggest)); } public async resolveCompletionItem( @@ -595,6 +584,17 @@ class TypeScriptCompletionItemProvider implements vscode.CompletionItemProvider } } +function shouldExcludeCompletionEntry( + element: Proto.CompletionEntry, + completionConfiguration: CompletionConfiguration +) { + return ( + (!completionConfiguration.nameSuggestions && element.kind === PConst.Kind.warning) + || (!completionConfiguration.quickSuggestionsForPaths && + (element.kind === PConst.Kind.directory || element.kind === PConst.Kind.script)) + || (!completionConfiguration.autoImportSuggestions && element.hasAction) + ); +} export function register( selector: vscode.DocumentSelector,