diff --git a/extensions/typescript-language-features/src/languageFeatures/documentHighlight.ts b/extensions/typescript-language-features/src/languageFeatures/documentHighlight.ts index 3a7b43ed5eb..2758b4227b0 100644 --- a/extensions/typescript-language-features/src/languageFeatures/documentHighlight.ts +++ b/extensions/typescript-language-features/src/languageFeatures/documentHighlight.ts @@ -6,7 +6,6 @@ import * as vscode from 'vscode'; import type * as Proto from '../protocol'; import { ITypeScriptServiceClient } from '../typescriptService'; -import { flatten } from '../utils/arrays'; import { DocumentSelector } from '../utils/documentSelector'; import * as typeConverters from '../utils/typeConverters'; @@ -34,10 +33,10 @@ class TypeScriptDocumentHighlightProvider implements vscode.DocumentHighlightPro return []; } - return flatten( - response.body - .filter(highlight => highlight.file === file) - .map(convertDocumentHighlight)); + return response.body + .filter(highlight => highlight.file === file) + .map(convertDocumentHighlight) + .flat(); } } diff --git a/extensions/typescript-language-features/src/languageFeatures/tsconfig.ts b/extensions/typescript-language-features/src/languageFeatures/tsconfig.ts index 4e5eda244b6..b64ead7ca15 100644 --- a/extensions/typescript-language-features/src/languageFeatures/tsconfig.ts +++ b/extensions/typescript-language-features/src/languageFeatures/tsconfig.ts @@ -8,7 +8,7 @@ import { basename, dirname, join, posix } from 'path'; import * as vscode from 'vscode'; import * as nls from 'vscode-nls'; import { Utils } from 'vscode-uri'; -import { coalesce, flatten } from '../utils/arrays'; +import { coalesce } from '../utils/arrays'; import { exists } from '../utils/fs'; function mapChildren(node: jsonc.Node | undefined, f: (x: jsonc.Node) => R): R[] { @@ -195,9 +195,9 @@ export function register() { const languages = ['json', 'jsonc']; - const selector: vscode.DocumentSelector = flatten( - languages.map(language => - patterns.map((pattern): vscode.DocumentFilter => ({ language, pattern })))); + const selector: vscode.DocumentSelector = + languages.map(language => patterns.map((pattern): vscode.DocumentFilter => ({ language, pattern }))) + .flat(); return vscode.Disposable.from( vscode.commands.registerCommand(openExtendsLinkCommandId, async ({ resourceUri, extendsValue, }: OpenExtendsLinkCommandArgs) => { diff --git a/extensions/typescript-language-features/src/lazyClientHost.ts b/extensions/typescript-language-features/src/lazyClientHost.ts index 1a7432674fc..8ad2efac84c 100644 --- a/extensions/typescript-language-features/src/lazyClientHost.ts +++ b/extensions/typescript-language-features/src/lazyClientHost.ts @@ -11,7 +11,6 @@ import { TsServerProcessFactory } from './tsServer/server'; import { ITypeScriptVersionProvider } from './tsServer/versionProvider'; import TypeScriptServiceClientHost from './typeScriptServiceClientHost'; import { ActiveJsTsEditorTracker } from './utils/activeJsTsEditorTracker'; -import { flatten } from './utils/arrays'; import { ServiceConfigurationProvider } from './utils/configuration'; import * as fileSchemes from './utils/fileSchemes'; import { standardLanguageDescriptions } from './utils/languageDescription'; @@ -55,10 +54,10 @@ export function lazilyActivateClient( ): vscode.Disposable { const disposables: vscode.Disposable[] = []; - const supportedLanguage = flatten([ + const supportedLanguage = [ ...standardLanguageDescriptions.map(x => x.languageIds), ...pluginManager.plugins.map(x => x.languages) - ]); + ].flat(); let hasActivated = false; const maybeActivate = (textDocument: vscode.TextDocument): boolean => { diff --git a/extensions/typescript-language-features/src/task/taskProvider.ts b/extensions/typescript-language-features/src/task/taskProvider.ts index 75ca51278dd..85484f6d729 100644 --- a/extensions/typescript-language-features/src/task/taskProvider.ts +++ b/extensions/typescript-language-features/src/task/taskProvider.ts @@ -9,7 +9,7 @@ import * as vscode from 'vscode'; import * as nls from 'vscode-nls'; import { wait } from '../test/testUtils'; import { ITypeScriptServiceClient, ServerResponse } from '../typescriptService'; -import { coalesce, flatten } from '../utils/arrays'; +import { coalesce } from '../utils/arrays'; import { Disposable } from '../utils/dispose'; import { exists } from '../utils/fs'; import { isTsConfigFileName } from '../utils/languageDescription'; @@ -98,10 +98,10 @@ class TscTaskProvider extends Disposable implements vscode.TaskProvider { } private async getAllTsConfigs(token: vscode.CancellationToken): Promise { - const configs = flatten(await Promise.all([ + const configs = (await Promise.all([ this.getTsConfigForActiveFile(token), this.getTsConfigsInWorkspace(token), - ])); + ])).flat(); return Promise.all( configs.map(async config => await exists(config.uri) ? config : undefined), diff --git a/extensions/typescript-language-features/src/typeScriptServiceClientHost.ts b/extensions/typescript-language-features/src/typeScriptServiceClientHost.ts index 0543a6ae847..c8635b2f668 100644 --- a/extensions/typescript-language-features/src/typeScriptServiceClientHost.ts +++ b/extensions/typescript-language-features/src/typeScriptServiceClientHost.ts @@ -23,7 +23,7 @@ import TypeScriptServiceClient from './typescriptServiceClient'; import { IntellisenseStatus } from './ui/intellisenseStatus'; import { VersionStatus } from './ui/versionStatus'; import { ActiveJsTsEditorTracker } from './utils/activeJsTsEditorTracker'; -import { coalesce, flatten } from './utils/arrays'; +import { coalesce } from './utils/arrays'; import { ServiceConfigurationProvider } from './utils/configuration'; import { Disposable } from './utils/dispose'; import * as errorCodes from './utils/errorCodes'; @@ -165,11 +165,10 @@ export default class TypeScriptServiceClientHost extends Disposable { } private getAllModeIds(descriptions: LanguageDescription[], pluginManager: PluginManager) { - const allModeIds = flatten([ + return [ ...descriptions.map(x => x.languageIds), ...pluginManager.plugins.map(x => x.languages) - ]); - return allModeIds; + ].flat(); } public get serviceClient(): TypeScriptServiceClient { diff --git a/extensions/typescript-language-features/src/utils/arrays.ts b/extensions/typescript-language-features/src/utils/arrays.ts index 3619d828dc3..a25bbe54733 100644 --- a/extensions/typescript-language-features/src/utils/arrays.ts +++ b/extensions/typescript-language-features/src/utils/arrays.ts @@ -19,10 +19,6 @@ export function equals( return a.every((x, i) => itemEquals(x, b[i])); } -export function flatten(array: ReadonlyArray[]): T[] { - return Array.prototype.concat.apply([], array); -} - export function coalesce(array: ReadonlyArray): T[] { return array.filter(e => !!e); } diff --git a/extensions/typescript-language-features/src/utils/plugins.ts b/extensions/typescript-language-features/src/utils/plugins.ts index 0716aba36cb..92d61e3e235 100644 --- a/extensions/typescript-language-features/src/utils/plugins.ts +++ b/extensions/typescript-language-features/src/utils/plugins.ts @@ -37,7 +37,7 @@ export class PluginManager extends Disposable { return; } const newPlugins = this.readPlugins(); - if (!arrays.equals(arrays.flatten(Array.from(this._plugins.values())), arrays.flatten(Array.from(newPlugins.values())), TypeScriptServerPlugin.equals)) { + if (!arrays.equals(Array.from(this._plugins.values()).flat(), Array.from(newPlugins.values()).flat(), TypeScriptServerPlugin.equals)) { this._plugins = newPlugins; this._onDidUpdatePlugins.fire(this); } @@ -48,7 +48,7 @@ export class PluginManager extends Disposable { if (!this._plugins) { this._plugins = this.readPlugins(); } - return arrays.flatten(Array.from(this._plugins.values())); + return Array.from(this._plugins.values()).flat(); } private readonly _onDidUpdatePlugins = this._register(new vscode.EventEmitter());