From 0c8e31f14a2c1d4c0c7ea75573caab39b171384b Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Thu, 8 Mar 2018 14:27:33 -0800 Subject: [PATCH] Use memoize for documentSelector --- extensions/typescript/src/languageProvider.ts | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/extensions/typescript/src/languageProvider.ts b/extensions/typescript/src/languageProvider.ts index 1c8cffb3025..afdcf4fcbbd 100644 --- a/extensions/typescript/src/languageProvider.ts +++ b/extensions/typescript/src/languageProvider.ts @@ -18,6 +18,7 @@ import DiagnosticsManager from './features/diagnostics'; import { LanguageDescription } from './utils/languageDescription'; import * as fileSchemes from './utils/fileSchemes'; import { CachedNavTreeResponse } from './features/baseCodeLensProvider'; +import { memoize } from './utils/memoize'; const validateSetting = 'validate.enable'; const foldingSetting = 'typescript.experimental.syntaxFolding'; @@ -31,8 +32,6 @@ export default class LanguageProvider { private _validate: boolean = true; - private _documentSelector?: DocumentFilter[]; - private readonly disposables: Disposable[] = []; private readonly versionDependentDisposables: Disposable[] = []; @@ -82,16 +81,15 @@ export default class LanguageProvider { this.formattingOptionsManager.dispose(); } + @memoize private get documentSelector(): DocumentFilter[] { - if (!this._documentSelector) { - this._documentSelector = []; - for (const language of this.description.modeIds) { - for (const scheme of fileSchemes.supportedSchemes) { - this._documentSelector.push({ language, scheme }); - } + const documentSelector = []; + for (const language of this.description.modeIds) { + for (const scheme of fileSchemes.supportedSchemes) { + documentSelector.push({ language, scheme }); } } - return this._documentSelector; + return documentSelector; } private async registerProviders( @@ -196,7 +194,7 @@ export default class LanguageProvider { return !!base && base === this.description.configFile; } - public get id(): string { + private get id(): string { return this.description.id; } -- GitLab