diff --git a/extensions/markdown-language-features/src/languageFeatures/fileReferences.ts b/extensions/markdown-language-features/src/languageFeatures/fileReferences.ts index b1c06b85f9f..46ed49f3c4b 100644 --- a/extensions/markdown-language-features/src/languageFeatures/fileReferences.ts +++ b/extensions/markdown-language-features/src/languageFeatures/fileReferences.ts @@ -21,10 +21,7 @@ export class FindFileReferencesCommand implements Command { ) { } public async execute(resource?: vscode.Uri) { - if (!resource) { - resource = vscode.window.activeTextEditor?.document.uri; - } - + resource ??= vscode.window.activeTextEditor?.document.uri; if (!resource) { vscode.window.showErrorMessage(localize('error.noResource', "Find file references failed. No resource provided.")); return; diff --git a/extensions/markdown-language-features/src/logging.ts b/extensions/markdown-language-features/src/logging.ts index 2f9a9732d58..d296fed655d 100644 --- a/extensions/markdown-language-features/src/logging.ts +++ b/extensions/markdown-language-features/src/logging.ts @@ -35,9 +35,7 @@ export class VsCodeOutputLogger extends Disposable implements ILogger { private _outputChannel?: vscode.OutputChannel; private get outputChannel() { - if (!this._outputChannel) { - this._outputChannel = this._register(vscode.window.createOutputChannel('Markdown')); - } + this._outputChannel ??= this._register(vscode.window.createOutputChannel('Markdown')); return this._outputChannel; } diff --git a/extensions/markdown-language-features/src/markdownExtensions.ts b/extensions/markdown-language-features/src/markdownExtensions.ts index cd6dfeb4260..0c768d0d48e 100644 --- a/extensions/markdown-language-features/src/markdownExtensions.ts +++ b/extensions/markdown-language-features/src/markdownExtensions.ts @@ -144,9 +144,7 @@ class VSCodeExtensionMarkdownContributionProvider extends Disposable implements public readonly onContributionsChanged = this._onContributionsChanged.event; public get contributions(): MarkdownContributions { - if (!this._contributions) { - this._contributions = this.getCurrentContributions(); - } + this._contributions ??= this.getCurrentContributions(); return this._contributions; } diff --git a/extensions/notebook-renderers/src/color.ts b/extensions/notebook-renderers/src/color.ts index 2c01cae1071..9ad281d35c4 100644 --- a/extensions/notebook-renderers/src/color.ts +++ b/extensions/notebook-renderers/src/color.ts @@ -866,9 +866,7 @@ export class Color { private _toString?: string; toString(): string { - if (!this._toString) { - this._toString = Color.Format.CSS.format(this); - } + this._toString ??= Color.Format.CSS.format(this); return this._toString; } diff --git a/extensions/simple-browser/src/simpleBrowserManager.ts b/extensions/simple-browser/src/simpleBrowserManager.ts index 5cbcc86b342..ef485916411 100644 --- a/extensions/simple-browser/src/simpleBrowserManager.ts +++ b/extensions/simple-browser/src/simpleBrowserManager.ts @@ -35,9 +35,7 @@ export class SimpleBrowserManager { const url = state?.url ?? ''; const view = SimpleBrowserView.restore(this.extensionUri, url, panel); this.registerWebviewListeners(view); - if (!this._activeView) { - this._activeView = view; - } + this._activeView ??= view; } private registerWebviewListeners(view: SimpleBrowserView) { diff --git a/extensions/typescript-language-features/src/languageFeatures/completions.ts b/extensions/typescript-language-features/src/languageFeatures/completions.ts index 68eb03dd690..2547b92e044 100644 --- a/extensions/typescript-language-features/src/languageFeatures/completions.ts +++ b/extensions/typescript-language-features/src/languageFeatures/completions.ts @@ -117,13 +117,9 @@ class MyCompletionItem extends vscode.CompletionItem { if (tsEntry.kindModifiers) { const kindModifiers = parseKindModifier(tsEntry.kindModifiers); if (kindModifiers.has(PConst.KindModifiers.optional)) { - if (!this.insertText) { - this.insertText = this.textLabel; - } + this.insertText ??= this.textLabel; + this.filterText ??= this.textLabel; - if (!this.filterText) { - this.filterText = this.textLabel; - } if (typeof this.label === 'string') { this.label += '?'; } else { diff --git a/extensions/typescript-language-features/src/languageFeatures/fileReferences.ts b/extensions/typescript-language-features/src/languageFeatures/fileReferences.ts index 68685848035..b9e9db47fe5 100644 --- a/extensions/typescript-language-features/src/languageFeatures/fileReferences.ts +++ b/extensions/typescript-language-features/src/languageFeatures/fileReferences.ts @@ -30,10 +30,7 @@ class FileReferencesCommand implements Command { return; } - if (!resource) { - resource = vscode.window.activeTextEditor?.document.uri; - } - + resource ??= vscode.window.activeTextEditor?.document.uri; if (!resource) { vscode.window.showErrorMessage(localize('error.noResource', "Find file references failed. No resource provided.")); return; diff --git a/extensions/typescript-language-features/src/utils/dependentRegistration.ts b/extensions/typescript-language-features/src/utils/dependentRegistration.ts index 3d97b8a8e7f..c53d553625c 100644 --- a/extensions/typescript-language-features/src/utils/dependentRegistration.ts +++ b/extensions/typescript-language-features/src/utils/dependentRegistration.ts @@ -54,14 +54,10 @@ class ConditionalRegistration { private update() { const enabled = this.conditions.every(condition => condition.value); if (enabled) { - if (!this.registration) { - this.registration = this.doRegister(); - } + this.registration ??= this.doRegister(); } else { - if (this.registration) { - this.registration.dispose(); - this.registration = undefined; - } + this.registration?.dispose(); + this.registration = undefined; } } } diff --git a/extensions/typescript-language-features/src/utils/plugins.ts b/extensions/typescript-language-features/src/utils/plugins.ts index 697e5422445..814f0e12016 100644 --- a/extensions/typescript-language-features/src/utils/plugins.ts +++ b/extensions/typescript-language-features/src/utils/plugins.ts @@ -28,7 +28,7 @@ namespace TypeScriptServerPlugin { export class PluginManager extends Disposable { private readonly _pluginConfigurations = new Map(); - private _plugins: Map> | undefined; + private _plugins?: Map>; constructor() { super(); @@ -37,6 +37,7 @@ export class PluginManager extends Disposable { if (!this._plugins) { return; } + const newPlugins = this.readPlugins(); if (!arrays.equals(Array.from(this._plugins.values()).flat(), Array.from(newPlugins.values()).flat(), TypeScriptServerPlugin.equals)) { this._plugins = newPlugins; @@ -46,9 +47,7 @@ export class PluginManager extends Disposable { } public get plugins(): ReadonlyArray { - if (!this._plugins) { - this._plugins = this.readPlugins(); - } + this._plugins ??= this.readPlugins(); return Array.from(this._plugins.values()).flat(); } diff --git a/extensions/typescript-language-features/src/utils/temp.electron.ts b/extensions/typescript-language-features/src/utils/temp.electron.ts index 84fc21ff885..886c8f014fe 100644 --- a/extensions/typescript-language-features/src/utils/temp.electron.ts +++ b/extensions/typescript-language-features/src/utils/temp.electron.ts @@ -34,9 +34,7 @@ const getRootTempDir = (() => { export const getInstanceTempDir = (() => { let dir: string | undefined; return () => { - if (!dir) { - dir = path.join(getRootTempDir(), makeRandomHexString(20)); - } + dir ??= path.join(getRootTempDir(), makeRandomHexString(20)); if (!fs.existsSync(dir)) { fs.mkdirSync(dir); } diff --git a/src/vs/workbench/contrib/notebook/browser/view/renderers/webviewPreloads.ts b/src/vs/workbench/contrib/notebook/browser/view/renderers/webviewPreloads.ts index 4907be7643d..dfc089fc50d 100644 --- a/src/vs/workbench/contrib/notebook/browser/view/renderers/webviewPreloads.ts +++ b/src/vs/workbench/contrib/notebook/browser/view/renderers/webviewPreloads.ts @@ -1305,10 +1305,7 @@ async function webviewPreloads(ctx: PreloadContext) { } private load(): Promise { - if (!this._loadPromise) { - this._loadPromise = this._load(); - } - + this._loadPromise ??= this._load(); return this._loadPromise; }