From 8531a230e5cef295c2cd7565d48178c41e4cd1cb Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Fri, 20 Jul 2018 17:58:43 -0700 Subject: [PATCH] Use flatten in a few places to improve readability --- extensions/typescript-language-features/src/extension.ts | 6 +++++- .../typescript-language-features/src/features/task.ts | 5 ++++- .../typescript-language-features/src/features/tsconfig.ts | 7 +++++-- .../typescript-language-features/src/utils/arrays.ts | 4 ++++ 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/extensions/typescript-language-features/src/extension.ts b/extensions/typescript-language-features/src/extension.ts index 2a6dd787d06..74f0ac6f509 100644 --- a/extensions/typescript-language-features/src/extension.ts +++ b/extensions/typescript-language-features/src/extension.ts @@ -16,6 +16,7 @@ import LogDirectoryProvider from './utils/logDirectoryProvider'; import ManagedFileContextManager from './utils/managedFileContext'; import { getContributedTypeScriptServerPlugins, TypeScriptServerPlugin } from './utils/plugins'; import * as ProjectStatus from './utils/projectStatus'; +import { flatten } from './utils/arrays'; export function activate( @@ -36,7 +37,10 @@ export function activate( context.subscriptions.push(module.register()); }); - const supportedLanguage = [].concat.apply([], standardLanguageDescriptions.map(x => x.modeIds).concat(plugins.map(x => x.languages))); + const supportedLanguage = flatten([ + ...standardLanguageDescriptions.map(x => x.modeIds), + ...plugins.map(x => x.languages) + ]); function didOpenTextDocument(textDocument: vscode.TextDocument): boolean { if (isSupportedDocument(supportedLanguage, textDocument)) { openListener.dispose(); diff --git a/extensions/typescript-language-features/src/features/task.ts b/extensions/typescript-language-features/src/features/task.ts index 2dbacec79ec..e819a1c092b 100644 --- a/extensions/typescript-language-features/src/features/task.ts +++ b/extensions/typescript-language-features/src/features/task.ts @@ -78,7 +78,10 @@ class TscTaskProvider implements vscode.TaskProvider { private async getAllTsConfigs(token: vscode.CancellationToken): Promise { const out = new Set(); - const configs = (await this.getTsConfigForActiveFile(token)).concat(await this.getTsConfigsInWorkspace()); + const configs = [ + ...await this.getTsConfigForActiveFile(token), + ...await this.getTsConfigsInWorkspace() + ]; for (const config of configs) { if (await exists(config.path)) { out.add(config); diff --git a/extensions/typescript-language-features/src/features/tsconfig.ts b/extensions/typescript-language-features/src/features/tsconfig.ts index 25073d089f4..414c0f01148 100644 --- a/extensions/typescript-language-features/src/features/tsconfig.ts +++ b/extensions/typescript-language-features/src/features/tsconfig.ts @@ -6,6 +6,7 @@ import * as jsonc from 'jsonc-parser'; import { dirname, join } from 'path'; import * as vscode from 'vscode'; +import { flatten } from '../utils/arrays'; function mapNode(node: jsonc.Node | undefined, f: (x: jsonc.Node) => R): R[] { return node && node.type === 'array' && node.children @@ -83,7 +84,9 @@ export function register() { const languages = ['json', 'jsonc']; - const selector: vscode.DocumentSelector = ([] as any[]).concat( - ...languages.map(language => patterns.map((pattern): vscode.DocumentFilter => ({ language, pattern })))); + const selector: vscode.DocumentSelector = flatten( + languages.map(language => + patterns.map((pattern): vscode.DocumentFilter => ({ language, pattern })))); + return vscode.languages.registerDocumentLinkProvider(selector, new TsconfigLinkProvider()); } diff --git a/extensions/typescript-language-features/src/utils/arrays.ts b/extensions/typescript-language-features/src/utils/arrays.ts index 57dbd54a29c..3a15e38981a 100644 --- a/extensions/typescript-language-features/src/utils/arrays.ts +++ b/extensions/typescript-language-features/src/utils/arrays.ts @@ -14,4 +14,8 @@ export function equals(one: T[], other: T[], itemEquals: (a: T, b: T) => bool } return true; +} + +export function flatten(arr: T[][]): T[] { + return [].concat.apply([], arr); } \ No newline at end of file