diff --git a/extensions/git/src/commands.ts b/extensions/git/src/commands.ts index dd557053e8b..2ff8969ed0b 100644 --- a/extensions/git/src/commands.ts +++ b/extensions/git/src/commands.ts @@ -3129,9 +3129,7 @@ export class CommandCenter { if (result) { const resultFn = choices.get(result); - if (resultFn) { - resultFn(); - } + resultFn?.(); } }); }; diff --git a/extensions/git/src/git.ts b/extensions/git/src/git.ts index f87cefbd653..7590d0e023e 100644 --- a/extensions/git/src/git.ts +++ b/extensions/git/src/git.ts @@ -556,9 +556,7 @@ export class Git { private async _exec(args: string[], options: SpawnOptions = {}): Promise> { const child = this.spawn(args, options); - if (options.onSpawn) { - options.onSpawn(child); - } + options.onSpawn?.(child); if (options.input) { child.stdin!.end(options.input, 'utf8'); diff --git a/extensions/json-language-features/server/src/jsonServer.ts b/extensions/json-language-features/server/src/jsonServer.ts index 9594d242f51..2e89694c912 100644 --- a/extensions/json-language-features/server/src/jsonServer.ts +++ b/extensions/json-language-features/server/src/jsonServer.ts @@ -251,9 +251,7 @@ export function startServer(connection: Connection, runtime: RuntimeEnvironment) // The settings have changed. Is send on server activation as well. connection.onDidChangeConfiguration((change) => { let settings = change.settings; - if (runtime.configureHttpRequests) { - runtime.configureHttpRequests(settings?.http?.proxy, !!settings.http?.proxyStrictSSL); - } + runtime.configureHttpRequests?.(settings?.http?.proxy, !!settings.http?.proxyStrictSSL); jsonConfigurationSettings = settings.json?.schemas; validateEnabled = !!settings.json?.validate?.enable; updateConfiguration(); diff --git a/src/vs/base/browser/dom.ts b/src/vs/base/browser/dom.ts index a59a09e21f1..3fd1496dc08 100644 --- a/src/vs/base/browser/dom.ts +++ b/src/vs/base/browser/dom.ts @@ -1733,9 +1733,7 @@ export class DragAndDropObserver extends Disposable { this._register(addDisposableListener(this.element, EventType.DRAG_OVER, (e: DragEvent) => { e.preventDefault(); // needed so that the drop event fires (https://stackoverflow.com/questions/21339924/drop-event-not-firing-in-chrome) - if (this.callbacks.onDragOver) { - this.callbacks.onDragOver(e, e.timeStamp - this.dragStartTime); - } + this.callbacks.onDragOver?.(e, e.timeStamp - this.dragStartTime); })); this._register(addDisposableListener(this.element, EventType.DRAG_LEAVE, (e: DragEvent) => { diff --git a/src/vs/base/browser/ui/contextview/contextview.ts b/src/vs/base/browser/ui/contextview/contextview.ts index 1aa24bde272..e464ffdd554 100644 --- a/src/vs/base/browser/ui/contextview/contextview.ts +++ b/src/vs/base/browser/ui/contextview/contextview.ts @@ -220,9 +220,7 @@ export class ContextView extends Disposable { this.doLayout(); // Focus - if (this.delegate.focus) { - this.delegate.focus(); - } + this.delegate.focus?.(); } getViewElement(): HTMLElement { diff --git a/src/vs/base/browser/ui/grid/gridview.ts b/src/vs/base/browser/ui/grid/gridview.ts index dca11631c87..e121bcc10c8 100644 --- a/src/vs/base/browser/ui/grid/gridview.ts +++ b/src/vs/base/browser/ui/grid/gridview.ts @@ -857,9 +857,7 @@ class LeafNode implements ISplitView, IDisposable { set boundarySashes(boundarySashes: IRelativeBoundarySashes) { this._boundarySashes = boundarySashes; - if (this.view.setBoundarySashes) { - this.view.setBoundarySashes(toAbsoluteBoundarySashes(boundarySashes, this.orientation)); - } + this.view.setBoundarySashes?.(toAbsoluteBoundarySashes(boundarySashes, this.orientation)); } layout(size: number, offset: number, ctx: ILayoutContext | undefined): void { @@ -897,9 +895,7 @@ class LeafNode implements ISplitView, IDisposable { } setVisible(visible: boolean): void { - if (this.view.setVisible) { - this.view.setVisible(visible); - } + this.view.setVisible?.(visible); } dispose(): void { diff --git a/src/vs/base/browser/ui/list/listView.ts b/src/vs/base/browser/ui/list/listView.ts index 52d2b94841b..eece9fc3bcb 100644 --- a/src/vs/base/browser/ui/list/listView.ts +++ b/src/vs/base/browser/ui/list/listView.ts @@ -1032,9 +1032,7 @@ export class ListView implements ISpliceable, IDisposable { this.currentDragData = new ElementsDragAndDropData(elements); StaticDND.CurrentDragAndDropData = new ExternalElementsDragAndDropData(elements); - if (this.dnd.onDragStart) { - this.dnd.onDragStart(this.currentDragData, event); - } + this.dnd.onDragStart?.(this.currentDragData, event); } private onDragOver(event: IListDragEvent): boolean { @@ -1169,9 +1167,7 @@ export class ListView implements ISpliceable, IDisposable { this.currentDragData = undefined; StaticDND.CurrentDragAndDropData = undefined; - if (this.dnd.onDragEnd) { - this.dnd.onDragEnd(event); - } + this.dnd.onDragEnd?.(event); } private clearDragOverFeedback(): void { @@ -1379,16 +1375,12 @@ export class ListView implements ISpliceable, IDisposable { if (renderer) { renderer.renderElement(item.element, index, row.templateData, undefined); - if (renderer.disposeElement) { - renderer.disposeElement(item.element, index, row.templateData, undefined); - } + renderer.disposeElement?.(item.element, index, row.templateData, undefined); } item.size = row.domNode.offsetHeight; - if (this.virtualDelegate.setDynamicHeight) { - this.virtualDelegate.setDynamicHeight(item.element, item.size); - } + this.virtualDelegate.setDynamicHeight?.(item.element, item.size); item.lastDynamicHeightWidth = this.renderWidth; this.rowsContainer.removeChild(row.domNode); @@ -1429,9 +1421,7 @@ export class ListView implements ISpliceable, IDisposable { if (item.row) { const renderer = this.renderers.get(item.row.templateId); if (renderer) { - if (renderer.disposeElement) { - renderer.disposeElement(item.element, -1, item.row.templateData, undefined); - } + renderer.disposeElement?.(item.element, -1, item.row.templateData, undefined); renderer.disposeTemplate(item.row.templateData); } } diff --git a/src/vs/base/browser/ui/list/listWidget.ts b/src/vs/base/browser/ui/list/listWidget.ts index 0bfef7f8ae7..4b6f146a51e 100644 --- a/src/vs/base/browser/ui/list/listWidget.ts +++ b/src/vs/base/browser/ui/list/listWidget.ts @@ -1109,9 +1109,7 @@ class PipelineRenderer implements IListRenderer { let i = 0; for (const renderer of this.renderers) { - if (renderer.disposeElement) { - renderer.disposeElement(element, index, templateData[i], height); - } + renderer.disposeElement?.(element, index, templateData[i], height); i += 1; } @@ -1182,9 +1180,7 @@ class ListViewDragAndDrop implements IListViewDragAndDrop { } onDragStart(data: IDragAndDropData, originalEvent: DragEvent): void { - if (this.dnd.onDragStart) { - this.dnd.onDragStart(data, originalEvent); - } + this.dnd.onDragStart?.(data, originalEvent); } onDragOver(data: IDragAndDropData, targetElement: T, targetIndex: number, originalEvent: DragEvent): boolean | IListDragOverReaction { @@ -1196,9 +1192,7 @@ class ListViewDragAndDrop implements IListViewDragAndDrop { } onDragEnd(originalEvent: DragEvent): void { - if (this.dnd.onDragEnd) { - this.dnd.onDragEnd(originalEvent); - } + this.dnd.onDragEnd?.(originalEvent); } drop(data: IDragAndDropData, targetElement: T, targetIndex: number, originalEvent: DragEvent): void { @@ -1328,9 +1322,7 @@ export class List implements ISpliceable, IThemable, IDisposable { if (this.accessibilityProvider) { baseRenderers.push(new AccessibiltyRenderer(this.accessibilityProvider)); - if (this.accessibilityProvider.onDidChangeActiveDescendant) { - this.accessibilityProvider.onDidChangeActiveDescendant(this.onDidChangeActiveDescendant, this, this.disposables); - } + this.accessibilityProvider.onDidChangeActiveDescendant?.(this.onDidChangeActiveDescendant, this, this.disposables); } renderers = renderers.map(r => new PipelineRenderer(r.templateId, [...baseRenderers, r])); diff --git a/src/vs/base/browser/ui/splitview/splitview.ts b/src/vs/base/browser/ui/splitview/splitview.ts index a692d06373f..fa6e7570cab 100644 --- a/src/vs/base/browser/ui/splitview/splitview.ts +++ b/src/vs/base/browser/ui/splitview/splitview.ts @@ -231,9 +231,7 @@ abstract class ViewItem { this.container.classList.toggle('visible', visible); - if (this.view.setVisible) { - this.view.setVisible(visible); - } + this.view.setVisible?.(visible); } get minimumSize(): number { return this.visible ? this.view.minimumSize : 0; } diff --git a/src/vs/base/browser/ui/tree/abstractTree.ts b/src/vs/base/browser/ui/tree/abstractTree.ts index a1470dca72f..db84a4be8eb 100644 --- a/src/vs/base/browser/ui/tree/abstractTree.ts +++ b/src/vs/base/browser/ui/tree/abstractTree.ts @@ -70,9 +70,7 @@ class TreeNodeListDragAndDrop implements IListDragAndDrop< } onDragStart(data: IDragAndDropData, originalEvent: DragEvent): void { - if (this.dnd.onDragStart) { - this.dnd.onDragStart(asTreeDragAndDropData(data), originalEvent); - } + this.dnd.onDragStart?.(asTreeDragAndDropData(data), originalEvent); } onDragOver(data: IDragAndDropData, targetNode: ITreeNode | undefined, targetIndex: number | undefined, originalEvent: DragEvent, raw = true): boolean | IListDragOverReaction { @@ -137,9 +135,7 @@ class TreeNodeListDragAndDrop implements IListDragAndDrop< } onDragEnd(originalEvent: DragEvent): void { - if (this.dnd.onDragEnd) { - this.dnd.onDragEnd(originalEvent); - } + this.dnd.onDragEnd?.(originalEvent); } } @@ -220,9 +216,7 @@ export class ComposedTreeDelegate implements IListV } setDynamicHeight(element: N, height: number): void { - if (this.delegate.setDynamicHeight) { - this.delegate.setDynamicHeight(element.element, height); - } + this.delegate.setDynamicHeight?.(element.element, height); } } @@ -350,9 +344,7 @@ class TreeRenderer implements IListRenderer Event.map(onDidChangeCollapseState, e => e.node)(this.onDidChangeNodeTwistieState, this, this.disposables); - if (renderer.onDidChangeTwistieState) { - renderer.onDidChangeTwistieState(this.onDidChangeTwistieState, this, this.disposables); - } + renderer.onDidChangeTwistieState?.(this.onDidChangeTwistieState, this, this.disposables); } updateOptions(options: ITreeRendererOptions = {}): void { @@ -414,9 +406,7 @@ class TreeRenderer implements IListRenderer disposeElement(node: ITreeNode, index: number, templateData: ITreeListTemplateData, height: number | undefined): void { templateData.indentGuidesDisposable.dispose(); - if (this.renderer.disposeElement) { - this.renderer.disposeElement(node, index, templateData.templateData, height); - } + this.renderer.disposeElement?.(node, index, templateData.templateData, height); if (typeof height === 'number') { this.renderedNodes.delete(node); diff --git a/src/vs/base/browser/ui/tree/asyncDataTree.ts b/src/vs/base/browser/ui/tree/asyncDataTree.ts index 5f1b89e1e03..fbd7ad55081 100644 --- a/src/vs/base/browser/ui/tree/asyncDataTree.ts +++ b/src/vs/base/browser/ui/tree/asyncDataTree.ts @@ -119,9 +119,7 @@ class AsyncDataTreeRenderer implements IT } disposeElement(node: ITreeNode, TFilterData>, index: number, templateData: IDataTreeListTemplateData, height: number | undefined): void { - if (this.renderer.disposeElement) { - this.renderer.disposeElement(this.nodeMapper.map(node) as ITreeNode, index, templateData.templateData, height); - } + this.renderer.disposeElement?.(this.nodeMapper.map(node) as ITreeNode, index, templateData.templateData, height); } disposeTemplate(templateData: IDataTreeListTemplateData): void { @@ -196,9 +194,7 @@ class AsyncDataTreeNodeListDragAndDrop implements IListDragAndDrop | undefined, targetIndex: number | undefined, originalEvent: DragEvent, raw = true): boolean | IListDragOverReaction { @@ -210,9 +206,7 @@ class AsyncDataTreeNodeListDragAndDrop implements IListDragAndDrop i } disposeElement(node: ITreeNode, TFilterData>, index: number, templateData: IDataTreeListTemplateData, height: number | undefined): void { - if (this.renderer.disposeElement) { - this.renderer.disposeElement(this.nodeMapper.map(node) as ITreeNode, index, templateData.templateData, height); - } + this.renderer.disposeElement?.(this.nodeMapper.map(node) as ITreeNode, index, templateData.templateData, height); } disposeCompressedElements(node: ITreeNode>, TFilterData>, index: number, templateData: IDataTreeListTemplateData, height: number | undefined): void { - if (this.renderer.disposeCompressedElements) { - this.renderer.disposeCompressedElements(this.compressibleNodeMapperProvider().map(node) as ITreeNode, TFilterData>, index, templateData.templateData, height); - } + this.renderer.disposeCompressedElements?.(this.compressibleNodeMapperProvider().map(node) as ITreeNode, TFilterData>, index, templateData.templateData, height); } disposeTemplate(templateData: IDataTreeListTemplateData): void { diff --git a/src/vs/base/browser/ui/tree/dataTree.ts b/src/vs/base/browser/ui/tree/dataTree.ts index afb6fa662fe..4dfe854ec04 100644 --- a/src/vs/base/browser/ui/tree/dataTree.ts +++ b/src/vs/base/browser/ui/tree/dataTree.ts @@ -140,9 +140,7 @@ export class DataTree extends AbstractTree) => { diff --git a/src/vs/base/browser/ui/tree/indexTreeModel.ts b/src/vs/base/browser/ui/tree/indexTreeModel.ts index 44c0d42819b..a7f024af3df 100644 --- a/src/vs/base/browser/ui/tree/indexTreeModel.ts +++ b/src/vs/base/browser/ui/tree/indexTreeModel.ts @@ -554,9 +554,7 @@ export class IndexTreeModel, TFilterData = voi node.renderNodeCount = renderNodeCount; } - if (onDidCreateNode) { - onDidCreateNode(node); - } + onDidCreateNode?.(node); return node; } diff --git a/src/vs/base/browser/ui/tree/objectTree.ts b/src/vs/base/browser/ui/tree/objectTree.ts index 847cb86d2fe..bd4aa34b2c7 100644 --- a/src/vs/base/browser/ui/tree/objectTree.ts +++ b/src/vs/base/browser/ui/tree/objectTree.ts @@ -140,13 +140,9 @@ class CompressibleRenderer, TFilterData, TTemplateDat disposeElement(node: ITreeNode, index: number, templateData: CompressibleTemplateData, height: number | undefined): void { if (templateData.compressedTreeNode) { - if (this.renderer.disposeCompressedElements) { - this.renderer.disposeCompressedElements(templateData.compressedTreeNode, index, templateData.data, height); - } + this.renderer.disposeCompressedElements?.(templateData.compressedTreeNode, index, templateData.data, height); } else { - if (this.renderer.disposeElement) { - this.renderer.disposeElement(node, index, templateData.data, height); - } + this.renderer.disposeElement?.(node, index, templateData.data, height); } } diff --git a/src/vs/base/common/async.ts b/src/vs/base/common/async.ts index 031b10f3e9f..e45c78ae5e3 100644 --- a/src/vs/base/common/async.ts +++ b/src/vs/base/common/async.ts @@ -354,9 +354,7 @@ export class Delayer implements IDisposable { this.cancelTimeout(); if (this.completionPromise) { - if (this.doReject) { - this.doReject(new CancellationError()); - } + this.doReject?.(new CancellationError()); this.completionPromise = null; } } @@ -885,9 +883,7 @@ export class RunOnceScheduler { } protected doRun(): void { - if (this.runner) { - this.runner(); - } + this.runner?.(); } } @@ -960,9 +956,7 @@ export class ProcessTimeRunOnceScheduler { // time elapsed clearInterval(this.intervalToken); this.intervalToken = -1; - if (this.runner) { - this.runner(); - } + this.runner?.(); } } @@ -985,9 +979,7 @@ export class RunOnceWorker extends RunOnceScheduler { const units = this.units; this.units = []; - if (this.runner) { - this.runner(units); - } + this.runner?.(units); } override dispose(): void { diff --git a/src/vs/base/common/event.ts b/src/vs/base/common/event.ts index e9536b9b89b..ee30f5eceb2 100644 --- a/src/vs/base/common/event.ts +++ b/src/vs/base/common/event.ts @@ -690,9 +690,7 @@ export class Emitter { } const result = listener.subscription.set(() => { - if (removeMonitor) { - removeMonitor(); - } + removeMonitor?.(); if (!this._disposed) { removeListener(); if (this._options && this._options.onLastListenerRemove) { diff --git a/src/vs/base/common/worker/simpleWorker.ts b/src/vs/base/common/worker/simpleWorker.ts index 2617e68abfc..580298b30e1 100644 --- a/src/vs/base/common/worker/simpleWorker.ts +++ b/src/vs/base/common/worker/simpleWorker.ts @@ -283,9 +283,7 @@ export class SimpleWorkerClient extends Disp (err: any) => { // in Firefox, web workers fail lazily :( // we will reject the proxy - if (lazyProxyReject) { - lazyProxyReject(err); - } + lazyProxyReject?.(err); } )); diff --git a/src/vs/base/parts/contextmenu/electron-sandbox/contextmenu.ts b/src/vs/base/parts/contextmenu/electron-sandbox/contextmenu.ts index 7c058d45990..74ca18173c0 100644 --- a/src/vs/base/parts/contextmenu/electron-sandbox/contextmenu.ts +++ b/src/vs/base/parts/contextmenu/electron-sandbox/contextmenu.ts @@ -15,9 +15,7 @@ export function popup(items: IContextMenuItem[], options?: IPopupOptions, onHide const onClickChannel = `vscode:onContextMenu${contextMenuId}`; const onClickChannelHandler = (event: unknown, itemId: number, context: IContextMenuEvent) => { const item = processedItems[itemId]; - if (item.click) { - item.click(context); - } + item.click?.(context); }; ipcRenderer.once(onClickChannel, onClickChannelHandler); @@ -28,9 +26,7 @@ export function popup(items: IContextMenuItem[], options?: IPopupOptions, onHide ipcRenderer.removeListener(onClickChannel, onClickChannelHandler); - if (onHide) { - onHide(); - } + onHide?.(); }); ipcRenderer.send(CONTEXT_MENU_CHANNEL, contextMenuId, items.map(item => createItem(item, processedItems)), onClickChannel, options); diff --git a/src/vs/base/parts/ipc/common/ipc.ts b/src/vs/base/parts/ipc/common/ipc.ts index 7f607bd1360..80c87a772c5 100644 --- a/src/vs/base/parts/ipc/common/ipc.ts +++ b/src/vs/base/parts/ipc/common/ipc.ts @@ -707,9 +707,7 @@ export class ChannelClient implements IChannelClient, IDisposable { const handler = this.handlers.get(response.id); - if (handler) { - handler(response); - } + handler?.(response); } @memoize diff --git a/src/vs/base/parts/ipc/node/ipc.cp.ts b/src/vs/base/parts/ipc/node/ipc.cp.ts index bc8c91530aa..fa6d8073ab7 100644 --- a/src/vs/base/parts/ipc/node/ipc.cp.ts +++ b/src/vs/base/parts/ipc/node/ipc.cp.ts @@ -26,9 +26,7 @@ export class Server extends IPCServer { super({ send: r => { try { - if (process.send) { - process.send((r.buffer).toString('base64')); - } + process.send?.((r.buffer).toString('base64')); } catch (e) { /* not much to do */ } }, onMessage: Event.fromNodeEventEmitter(process, 'message', msg => VSBuffer.wrap(Buffer.from(msg, 'base64'))) diff --git a/src/vs/base/parts/quickinput/browser/quickInput.ts b/src/vs/base/parts/quickinput/browser/quickInput.ts index e7099f2655b..1a496080028 100644 --- a/src/vs/base/parts/quickinput/browser/quickInput.ts +++ b/src/vs/base/parts/quickinput/browser/quickInput.ts @@ -1406,9 +1406,7 @@ export class QuickInputController extends Disposable { return new Promise((doResolve, reject) => { let resolve = (result: R) => { resolve = doResolve; - if (options.onKeyMods) { - options.onKeyMods(input.keyMods); - } + options.onKeyMods?.(input.keyMods); doResolve(result); }; if (token.isCancellationRequested) { diff --git a/src/vs/base/parts/storage/node/storage.ts b/src/vs/base/parts/storage/node/storage.ts index e8bfec83a24..789481987b9 100644 --- a/src/vs/base/parts/storage/node/storage.ts +++ b/src/vs/base/parts/storage/node/storage.ts @@ -440,14 +440,10 @@ class SQLiteStorageDatabaseLogger { } trace(msg: string): void { - if (this.logTrace) { - this.logTrace(msg); - } + this.logTrace?.(msg); } error(error: string | Error): void { - if (this.logError) { - this.logError(error); - } + this.logError?.(error); } } diff --git a/src/vs/base/test/common/troubleshooting.ts b/src/vs/base/test/common/troubleshooting.ts index 84051e8a18a..7cfee55bd0b 100644 --- a/src/vs/base/test/common/troubleshooting.ts +++ b/src/vs/base/test/common/troubleshooting.ts @@ -47,13 +47,9 @@ export function endTrackingDisposables(): void { } export function beginLoggingFS(withStacks: boolean = false): void { - if ((self).beginLoggingFS) { - (self).beginLoggingFS(withStacks); - } + (self).beginLoggingFS?.(withStacks); } export function endLoggingFS(): void { - if ((self).endLoggingFS) { - (self).endLoggingFS(); - } + (self).endLoggingFS?.(); } diff --git a/src/vs/editor/browser/view/viewUserInputEvents.ts b/src/vs/editor/browser/view/viewUserInputEvents.ts index 64df9a0859f..5e7104b9969 100644 --- a/src/vs/editor/browser/view/viewUserInputEvents.ts +++ b/src/vs/editor/browser/view/viewUserInputEvents.ts @@ -33,69 +33,47 @@ export class ViewUserInputEvents { } public emitKeyDown(e: IKeyboardEvent): void { - if (this.onKeyDown) { - this.onKeyDown(e); - } + this.onKeyDown?.(e); } public emitKeyUp(e: IKeyboardEvent): void { - if (this.onKeyUp) { - this.onKeyUp(e); - } + this.onKeyUp?.(e); } public emitContextMenu(e: IEditorMouseEvent): void { - if (this.onContextMenu) { - this.onContextMenu(this._convertViewToModelMouseEvent(e)); - } + this.onContextMenu?.(this._convertViewToModelMouseEvent(e)); } public emitMouseMove(e: IEditorMouseEvent): void { - if (this.onMouseMove) { - this.onMouseMove(this._convertViewToModelMouseEvent(e)); - } + this.onMouseMove?.(this._convertViewToModelMouseEvent(e)); } public emitMouseLeave(e: IPartialEditorMouseEvent): void { - if (this.onMouseLeave) { - this.onMouseLeave(this._convertViewToModelMouseEvent(e)); - } + this.onMouseLeave?.(this._convertViewToModelMouseEvent(e)); } public emitMouseDown(e: IEditorMouseEvent): void { - if (this.onMouseDown) { - this.onMouseDown(this._convertViewToModelMouseEvent(e)); - } + this.onMouseDown?.(this._convertViewToModelMouseEvent(e)); } public emitMouseUp(e: IEditorMouseEvent): void { - if (this.onMouseUp) { - this.onMouseUp(this._convertViewToModelMouseEvent(e)); - } + this.onMouseUp?.(this._convertViewToModelMouseEvent(e)); } public emitMouseDrag(e: IEditorMouseEvent): void { - if (this.onMouseDrag) { - this.onMouseDrag(this._convertViewToModelMouseEvent(e)); - } + this.onMouseDrag?.(this._convertViewToModelMouseEvent(e)); } public emitMouseDrop(e: IPartialEditorMouseEvent): void { - if (this.onMouseDrop) { - this.onMouseDrop(this._convertViewToModelMouseEvent(e)); - } + this.onMouseDrop?.(this._convertViewToModelMouseEvent(e)); } public emitMouseDropCanceled(): void { - if (this.onMouseDropCanceled) { - this.onMouseDropCanceled(); - } + this.onMouseDropCanceled?.(); } public emitMouseWheel(e: IMouseWheelEvent): void { - if (this.onMouseWheel) { - this.onMouseWheel(e); - } + this.onMouseWheel?.(e); } private _convertViewToModelMouseEvent(e: IEditorMouseEvent): IEditorMouseEvent; diff --git a/src/vs/editor/browser/widget/codeEditorWidget.ts b/src/vs/editor/browser/widget/codeEditorWidget.ts index 991afab9ef8..ea567a7972c 100644 --- a/src/vs/editor/browser/widget/codeEditorWidget.ts +++ b/src/vs/editor/browser/widget/codeEditorWidget.ts @@ -2136,9 +2136,7 @@ class CodeEditorWidgetFocusTracker extends Disposable { } public refreshState(): void { - if (this._domFocusTracker.refreshState) { - this._domFocusTracker.refreshState(); - } + this._domFocusTracker.refreshState?.(); } } diff --git a/src/vs/editor/contrib/find/browser/findWidget.ts b/src/vs/editor/contrib/find/browser/findWidget.ts index 30a80942e2e..bfbb6921638 100644 --- a/src/vs/editor/contrib/find/browser/findWidget.ts +++ b/src/vs/editor/contrib/find/browser/findWidget.ts @@ -1348,9 +1348,7 @@ export class SimpleButton extends Widget { e.preventDefault(); return; } - if (this._opts.onKeyDown) { - this._opts.onKeyDown(e); - } + this._opts.onKeyDown?.(e); }); } diff --git a/src/vs/editor/contrib/folding/browser/indentRangeProvider.ts b/src/vs/editor/contrib/folding/browser/indentRangeProvider.ts index e918367846e..82e00b27484 100644 --- a/src/vs/editor/contrib/folding/browser/indentRangeProvider.ts +++ b/src/vs/editor/contrib/folding/browser/indentRangeProvider.ts @@ -74,9 +74,7 @@ export class RangesCollector { } return new FoldingRegions(startIndexes, endIndexes); } else { - if (this._notifyTooManyRegions) { - this._notifyTooManyRegions(this._foldingRangesLimit); - } + this._notifyTooManyRegions?.(this._foldingRangesLimit); let entries = 0; let maxIndent = this._indentOccurrences.length; for (let i = 0; i < this._indentOccurrences.length; i++) { diff --git a/src/vs/editor/contrib/folding/browser/syntaxRangeProvider.ts b/src/vs/editor/contrib/folding/browser/syntaxRangeProvider.ts index f1c58f87a14..cd98ace150b 100644 --- a/src/vs/editor/contrib/folding/browser/syntaxRangeProvider.ts +++ b/src/vs/editor/contrib/folding/browser/syntaxRangeProvider.ts @@ -121,9 +121,7 @@ export class RangesCollector { } return new FoldingRegions(startIndexes, endIndexes, this._types); } else { - if (this._notifyTooManyRegions) { - this._notifyTooManyRegions(this._foldingRangesLimit); - } + this._notifyTooManyRegions?.(this._foldingRangesLimit); let entries = 0; let maxLevel = this._nestingLevelCounts.length; for (let i = 0; i < this._nestingLevelCounts.length; i++) { diff --git a/src/vs/editor/contrib/inlineCompletions/browser/inlineCompletionsModel.ts b/src/vs/editor/contrib/inlineCompletions/browser/inlineCompletionsModel.ts index e7870b9c77d..7e585ac9af0 100644 --- a/src/vs/editor/contrib/inlineCompletions/browser/inlineCompletionsModel.ts +++ b/src/vs/editor/contrib/inlineCompletions/browser/inlineCompletionsModel.ts @@ -243,9 +243,7 @@ export class InlineCompletionsSession extends BaseGhostTextWidgetModel { lastCompletionItem = currentCompletion.sourceInlineCompletion; const provider = currentCompletion.sourceProvider; - if (provider.handleItemDidShow) { - provider.handleItemDidShow(currentCompletion.sourceInlineCompletions, lastCompletionItem); - } + provider.handleItemDidShow?.(currentCompletion.sourceInlineCompletions, lastCompletionItem); } })); diff --git a/src/vs/editor/contrib/rename/browser/renameInputField.ts b/src/vs/editor/contrib/rename/browser/renameInputField.ts index af9ade477ac..64b88fb6f82 100644 --- a/src/vs/editor/contrib/rename/browser/renameInputField.ts +++ b/src/vs/editor/contrib/rename/browser/renameInputField.ts @@ -146,15 +146,11 @@ export class RenameInputField implements IContentWidget { private _currentCancelInput?: (focusEditor: boolean) => void; acceptInput(wantsPreview: boolean): void { - if (this._currentAcceptInput) { - this._currentAcceptInput(wantsPreview); - } + this._currentAcceptInput?.(wantsPreview); } cancelInput(focusEditor: boolean): void { - if (this._currentCancelInput) { - this._currentCancelInput(focusEditor); - } + this._currentCancelInput?.(focusEditor); } getInput(where: IRange, value: string, selectionStart: number, selectionEnd: number, supportPreview: boolean, token: CancellationToken): Promise { diff --git a/src/vs/editor/contrib/unicodeHighlighter/browser/bannerController.ts b/src/vs/editor/contrib/unicodeHighlighter/browser/bannerController.ts index 868a8024e59..d2542d01582 100644 --- a/src/vs/editor/contrib/unicodeHighlighter/browser/bannerController.ts +++ b/src/vs/editor/contrib/unicodeHighlighter/browser/bannerController.ts @@ -39,9 +39,7 @@ export class BannerController extends Disposable { ...item, onClose: () => { this.hide(); - if (item.onClose) { - item.onClose(); - } + item.onClose?.(); } }); this._editor.setBanner(this.banner.element, BANNER_ELEMENT_HEIGHT); diff --git a/src/vs/platform/contextview/browser/contextMenuHandler.ts b/src/vs/platform/contextview/browser/contextMenuHandler.ts index 6ad90b3af61..960971f9667 100644 --- a/src/vs/platform/contextview/browser/contextMenuHandler.ts +++ b/src/vs/platform/contextview/browser/contextMenuHandler.ts @@ -129,9 +129,7 @@ export class ContextMenuHandler { }, onHide: (didCancel?: boolean) => { - if (delegate.onHide) { - delegate.onHide(!!didCancel); - } + delegate.onHide?.(!!didCancel); if (this.block) { this.block.remove(); diff --git a/src/vs/platform/contextview/browser/contextMenuService.ts b/src/vs/platform/contextview/browser/contextMenuService.ts index 437b3ffd8ce..2d4ee16cb62 100644 --- a/src/vs/platform/contextview/browser/contextMenuService.ts +++ b/src/vs/platform/contextview/browser/contextMenuService.ts @@ -47,9 +47,7 @@ export class ContextMenuService extends Disposable implements IContextMenuServic this.contextMenuHandler.showContextMenu({ ...delegate, onHide: (didCancel) => { - if (delegate.onHide) { - delegate.onHide(didCancel); - } + delegate.onHide?.(didCancel); this._onDidHideContextMenu.fire(); } diff --git a/src/vs/platform/menubar/electron-main/menubar.ts b/src/vs/platform/menubar/electron-main/menubar.ts index 9fd8cca89ea..2b8f19da866 100644 --- a/src/vs/platform/menubar/electron-main/menubar.ts +++ b/src/vs/platform/menubar/electron-main/menubar.ts @@ -816,9 +816,7 @@ export class Menubar { const originalClick = options.click; options.click = (item, window, event) => { this.reportMenuActionTelemetry(commandId); - if (originalClick) { - originalClick(item, window, event); - } + originalClick?.(item, window, event); }; return options; diff --git a/src/vs/platform/remote/electron-sandbox/remoteAuthorityResolverService.ts b/src/vs/platform/remote/electron-sandbox/remoteAuthorityResolverService.ts index 36bca9adf94..f048d7153a9 100644 --- a/src/vs/platform/remote/electron-sandbox/remoteAuthorityResolverService.ts +++ b/src/vs/platform/remote/electron-sandbox/remoteAuthorityResolverService.ts @@ -71,9 +71,7 @@ export class RemoteAuthorityResolverService extends Disposable implements IRemot const key = uri.toString(); if (!this._canonicalURIRequests.has(key)) { const request = new PendingPromise(uri); - if (this._canonicalURIProvider) { - this._canonicalURIProvider(request.input).then((uri) => request.resolve(uri), (err) => request.reject(err)); - } + this._canonicalURIProvider?.(request.input).then((uri) => request.resolve(uri), (err) => request.reject(err)); this._canonicalURIRequests.set(key, request); } return this._canonicalURIRequests.get(key)!.promise; diff --git a/src/vs/workbench/api/browser/mainThreadSearch.ts b/src/vs/workbench/api/browser/mainThreadSearch.ts index 45a9fb1d1a3..1ff5cdfb75c 100644 --- a/src/vs/workbench/api/browser/mainThreadSearch.ts +++ b/src/vs/workbench/api/browser/mainThreadSearch.ts @@ -94,9 +94,7 @@ class SearchOperation { this.matches.set(match.resource.toString(), match); } - if (this.progress) { - this.progress(match); - } + this.progress?.(match); } } diff --git a/src/vs/workbench/api/common/extHostQuickOpen.ts b/src/vs/workbench/api/common/extHostQuickOpen.ts index 1a2dda0396f..67c56f94474 100644 --- a/src/vs/workbench/api/common/extHostQuickOpen.ts +++ b/src/vs/workbench/api/common/extHostQuickOpen.ts @@ -136,9 +136,7 @@ export function createExtHostQuickOpen(mainContext: IMainContext, workspace: IEx } $onItemSelected(handle: number): void { - if (this._onDidSelectItem) { - this._onDidSelectItem(handle); - } + this._onDidSelectItem?.(handle); } // ---- input diff --git a/src/vs/workbench/api/common/extHostWorkspace.ts b/src/vs/workbench/api/common/extHostWorkspace.ts index dda77ef065e..9d805271e48 100644 --- a/src/vs/workbench/api/common/extHostWorkspace.ts +++ b/src/vs/workbench/api/common/extHostWorkspace.ts @@ -546,9 +546,7 @@ export class ExtHostWorkspace implements ExtHostWorkspaceShape, IExtHostWorkspac } $handleTextSearchResult(result: IRawFileMatch2, requestId: number): void { - if (this._activeSearchCallbacks[requestId]) { - this._activeSearchCallbacks[requestId](result); - } + this._activeSearchCallbacks[requestId]?.(result); } saveAll(includeUntitled?: boolean): Promise { diff --git a/src/vs/workbench/api/node/extensionHostProcess.ts b/src/vs/workbench/api/node/extensionHostProcess.ts index 54d0b9b3556..9f88fb6c32c 100644 --- a/src/vs/workbench/api/node/extensionHostProcess.ts +++ b/src/vs/workbench/api/node/extensionHostProcess.ts @@ -197,9 +197,7 @@ function _createExtHostProtocol(): Promise { // Now that we have managed to install a message listener, ask the other side to send us the socket const req: IExtHostReadyMessage = { type: 'VSCODE_EXTHOST_IPC_READY' }; - if (process.send) { - process.send(req); - } + process.send?.(req); }); } else { diff --git a/src/vs/workbench/api/test/common/testRPCProtocol.ts b/src/vs/workbench/api/test/common/testRPCProtocol.ts index 2947d378288..feeba9523f5 100644 --- a/src/vs/workbench/api/test/common/testRPCProtocol.ts +++ b/src/vs/workbench/api/test/common/testRPCProtocol.ts @@ -57,9 +57,7 @@ export class TestRPCProtocol implements IExtHostContext, IExtHostRpcService { private set _callCount(value: number) { this._callCountValue = value; if (this._callCountValue === 0) { - if (this._completeIdle) { - this._completeIdle(); - } + this._completeIdle?.(); this._idle = undefined; } } diff --git a/src/vs/workbench/browser/dnd.ts b/src/vs/workbench/browser/dnd.ts index 8cda2f318c7..3a186e54ab4 100644 --- a/src/vs/workbench/browser/dnd.ts +++ b/src/vs/workbench/browser/dnd.ts @@ -609,9 +609,7 @@ export class CompositeDragAndDropObserver extends Disposable { return; } - if (callbacks.onDragLeave) { - callbacks.onDragLeave({ eventData: e, dragAndDropData: data! }); - } + callbacks.onDragLeave?.({ eventData: e, dragAndDropData: data! }); }, onDrop: e => { if (callbacks.onDrop) { diff --git a/src/vs/workbench/contrib/bulkEdit/browser/preview/bulkEditPane.ts b/src/vs/workbench/contrib/bulkEdit/browser/preview/bulkEditPane.ts index c6af0ffa259..9438ae5a507 100644 --- a/src/vs/workbench/contrib/bulkEdit/browser/preview/bulkEditPane.ts +++ b/src/vs/workbench/contrib/bulkEdit/browser/preview/bulkEditPane.ts @@ -272,9 +272,7 @@ export class BulkEditPane extends ViewPane { } private _done(accept: boolean): void { - if (this._currentResolve) { - this._currentResolve(accept ? this._currentInput?.getWorkspaceEdit() : undefined); - } + this._currentResolve?.(accept ? this._currentInput?.getWorkspaceEdit() : undefined); this._currentInput = undefined; this._setState(State.Message); this._sessionDisposables.clear(); diff --git a/src/vs/workbench/contrib/comments/browser/commentReply.ts b/src/vs/workbench/contrib/comments/browser/commentReply.ts index 2c2c9e13537..9a42f9d308b 100644 --- a/src/vs/workbench/contrib/comments/browser/commentReply.ts +++ b/src/vs/workbench/contrib/comments/browser/commentReply.ts @@ -250,9 +250,7 @@ export class CommentReply extends Disposable { })); this._commentFormActions = new CommentFormActions(container, async (action: IAction) => { - if (this._actionRunDelegate) { - this._actionRunDelegate(); - } + this._actionRunDelegate?.(); action.run({ thread: this._commentThread, diff --git a/src/vs/workbench/contrib/debug/common/abstractDebugAdapter.ts b/src/vs/workbench/contrib/debug/common/abstractDebugAdapter.ts index 348aa5815b7..299a6ad3eb6 100644 --- a/src/vs/workbench/contrib/debug/common/abstractDebugAdapter.ts +++ b/src/vs/workbench/contrib/debug/common/abstractDebugAdapter.ts @@ -155,14 +155,10 @@ export abstract class AbstractDebugAdapter implements IDebugAdapter { switch (message.type) { case 'event': - if (this.eventCallback) { - this.eventCallback(message); - } + this.eventCallback?.(message); break; case 'request': - if (this.requestCallback) { - this.requestCallback(message); - } + this.requestCallback?.(message); break; case 'response': { const response = message; diff --git a/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.ts b/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.ts index 50b9b8c606e..363be55ed18 100644 --- a/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.ts +++ b/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.ts @@ -1519,9 +1519,7 @@ export class ExtensionsWorkbenchService extends Disposable implements IExtension this.progressService.withProgress({ location: ProgressLocation.Extensions }, () => new Promise(resolve => this._activityCallBack = resolve)); } } else { - if (this._activityCallBack) { - this._activityCallBack(); - } + this._activityCallBack?.(); this._activityCallBack = null; } } diff --git a/src/vs/workbench/contrib/notebook/browser/view/cellParts/cellToolbars.ts b/src/vs/workbench/contrib/notebook/browser/view/cellParts/cellToolbars.ts index 45fc3cbb235..c84443b70ab 100644 --- a/src/vs/workbench/contrib/notebook/browser/view/cellParts/cellToolbars.ts +++ b/src/vs/workbench/contrib/notebook/browser/view/cellParts/cellToolbars.ts @@ -164,9 +164,7 @@ export class CellTitleToolbarPart extends CellPart { if (deferredUpdate && !visible) { this._register(disposableTimeout(() => { - if (deferredUpdate) { - deferredUpdate(); - } + deferredUpdate?.(); })); deferredUpdate = undefined; diff --git a/src/vs/workbench/contrib/notebook/browser/viewParts/notebookEditorToolbar.ts b/src/vs/workbench/contrib/notebook/browser/viewParts/notebookEditorToolbar.ts index 243b4b96edc..1d1d38c2689 100644 --- a/src/vs/workbench/contrib/notebook/browser/viewParts/notebookEditorToolbar.ts +++ b/src/vs/workbench/contrib/notebook/browser/viewParts/notebookEditorToolbar.ts @@ -405,9 +405,7 @@ export class NotebookEditorToolbar extends Disposable { if (deferredUpdate && !visible) { setTimeout(() => { - if (deferredUpdate) { - deferredUpdate(); - } + deferredUpdate?.(); }, 0); deferredUpdate = undefined; } diff --git a/src/vs/workbench/contrib/preferences/browser/settingsTree.ts b/src/vs/workbench/contrib/preferences/browser/settingsTree.ts index b65d169f75c..c3893a2a036 100644 --- a/src/vs/workbench/contrib/preferences/browser/settingsTree.ts +++ b/src/vs/workbench/contrib/preferences/browser/settingsTree.ts @@ -1166,9 +1166,7 @@ export class SettingArrayRenderer extends AbstractSettingRenderer implements ITr common.toDispose.add( listWidget.onDidChangeList(e => { const newList = this.computeNewList(template, e); - if (template.onChange) { - template.onChange(newList); - } + template.onChange?.(newList); }) ); @@ -1349,9 +1347,7 @@ abstract class AbstractSettingObjectRenderer extends AbstractSettingRenderer imp template.objectDropdownWidget!.setValue(newItems); } - if (template.onChange) { - template.onChange(newValue); - } + template.onChange?.(newValue); } } @@ -1539,9 +1535,7 @@ abstract class AbstractSettingTextRenderer extends AbstractSettingRenderer imple })); common.toDispose.add( inputBox.onDidChange(e => { - if (template.onChange) { - template.onChange(e); - } + template.onChange?.(e); })); common.toDispose.add(inputBox); inputBox.inputElement.classList.add(AbstractSettingRenderer.CONTROL_CLASS); @@ -1652,9 +1646,7 @@ export class SettingEnumRenderer extends AbstractSettingRenderer implements ITre common.toDispose.add( selectBox.onDidSelect(e => { - if (template.onChange) { - template.onChange(e.index); - } + template.onChange?.(e.index); })); const enumDescriptionElement = common.containerElement.insertBefore($('.setting-item-enumDescription'), common.descriptionElement.nextSibling); @@ -1758,9 +1750,7 @@ export class SettingNumberRenderer extends AbstractSettingRenderer implements IT })); common.toDispose.add( inputBox.onDidChange(e => { - if (template.onChange) { - template.onChange(e); - } + template.onChange?.(e); })); common.toDispose.add(inputBox); inputBox.inputElement.classList.add(AbstractSettingRenderer.CONTROL_CLASS); diff --git a/src/vs/workbench/contrib/search/common/searchModel.ts b/src/vs/workbench/contrib/search/common/searchModel.ts index 8c56ab754f6..2fd8f4ab2c8 100644 --- a/src/vs/workbench/contrib/search/common/searchModel.ts +++ b/src/vs/workbench/contrib/search/common/searchModel.ts @@ -1077,9 +1077,7 @@ export class SearchModel extends Disposable { progressEmitter.fire(); this.onSearchProgress(p); - if (onProgress) { - onProgress(p); - } + onProgress?.(p); }); const dispose = () => tokenSource.dispose(); diff --git a/src/vs/workbench/contrib/welcomeWalkthrough/browser/walkThroughPart.ts b/src/vs/workbench/contrib/welcomeWalkthrough/browser/walkThroughPart.ts index fc8d43ad75b..118d6086336 100644 --- a/src/vs/workbench/contrib/welcomeWalkthrough/browser/walkThroughPart.ts +++ b/src/vs/workbench/contrib/welcomeWalkthrough/browser/walkThroughPart.ts @@ -291,9 +291,7 @@ export class WalkThroughPart extends EditorPane { this.updateSizeClasses(); this.decorateContent(); this.contentDisposables.push(this.keybindingService.onDidUpdateKeybindings(() => this.decorateContent())); - if (input.onReady) { - input.onReady(this.content.firstElementChild as HTMLElement, store); - } + input.onReady?.(this.content.firstElementChild as HTMLElement, store); this.scrollbar.scanDomNode(); this.loadTextEditorViewState(input); this.updatedScrollPosition(); @@ -371,9 +369,7 @@ export class WalkThroughPart extends EditorPane { this.multiCursorModifier(); } })); - if (input.onReady) { - input.onReady(innerContent, store); - } + input.onReady?.(innerContent, store); this.scrollbar.scanDomNode(); this.loadTextEditorViewState(input); this.updatedScrollPosition(); diff --git a/src/vs/workbench/services/contextmenu/electron-sandbox/contextmenuService.ts b/src/vs/workbench/services/contextmenu/electron-sandbox/contextmenuService.ts index b4c0e11cbeb..fe6eff44dd5 100644 --- a/src/vs/workbench/services/contextmenu/electron-sandbox/contextmenuService.ts +++ b/src/vs/workbench/services/contextmenu/electron-sandbox/contextmenuService.ts @@ -83,9 +83,7 @@ class NativeContextMenuService extends Disposable implements IContextMenuService const actions = delegate.getActions(); if (actions.length) { const onHide = once(() => { - if (delegate.onHide) { - delegate.onHide(false); - } + delegate.onHide?.(false); dom.ModifierKeyEmitter.getInstance().resetKeyStatus(); this._onDidHideContextMenu.fire(); diff --git a/src/vs/workbench/services/extensions/common/rpcProtocol.ts b/src/vs/workbench/services/extensions/common/rpcProtocol.ts index f44eae7e257..392b0c78da3 100644 --- a/src/vs/workbench/services/extensions/common/rpcProtocol.ts +++ b/src/vs/workbench/services/extensions/common/rpcProtocol.ts @@ -406,9 +406,7 @@ export class RPCProtocol extends Disposable implements IRPCProtocol { this._logger.logIncoming(msgLength, req, RequestInitiator.OtherSide, `receiveCancel`); } const callId = String(req); - if (this._cancelInvokedHandlers[callId]) { - this._cancelInvokedHandlers[callId](); - } + this._cancelInvokedHandlers[callId]?.(); } private _receiveReply(msgLength: number, req: number, value: any): void { diff --git a/src/vs/workbench/services/search/common/searchService.ts b/src/vs/workbench/services/search/common/searchService.ts index cf0aad3563a..62ec6f455ce 100644 --- a/src/vs/workbench/services/search/common/searchService.ts +++ b/src/vs/workbench/services/search/common/searchService.ts @@ -134,9 +134,7 @@ export class SearchService extends Disposable implements ISearchService { return; } - if (onProgress) { - onProgress(item); - } + onProgress?.(item); }; const exists = await Promise.all(query.folderQueries.map(query => this.fileService.exists(query.folder))); diff --git a/src/vs/workbench/services/textfile/common/textEditorService.ts b/src/vs/workbench/services/textfile/common/textEditorService.ts index 9e40eb88f5a..c8c9050875b 100644 --- a/src/vs/workbench/services/textfile/common/textEditorService.ts +++ b/src/vs/workbench/services/textfile/common/textEditorService.ts @@ -227,9 +227,7 @@ export class TextEditorService extends Disposable implements ITextEditorService // Return early if already cached let input = this.editorInputCache.get(resource); if (input) { - if (cachedFn) { - cachedFn(input); - } + cachedFn?.(input); return input; }