From 43f6bf8ff7c3d65f14b722b4f011d233da579bab Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Wed, 20 Feb 2019 12:05:22 +0100 Subject: [PATCH] Address some null errors (#60565) --- src/vs/editor/common/modes.ts | 2 +- .../api/electron-browser/mainThreadComments.ts | 8 +++++--- .../electron-browser/mainThreadDocumentsAndEditors.ts | 10 +++++----- .../api/electron-browser/mainThreadLanguageFeatures.ts | 7 ++++--- src/vs/workbench/api/node/extHost.protocol.ts | 10 +++++----- src/vs/workbench/api/node/extHostExtensionService.ts | 10 +++++----- src/vs/workbench/api/node/extHostTextEditors.ts | 4 ++-- 7 files changed, 27 insertions(+), 24 deletions(-) diff --git a/src/vs/editor/common/modes.ts b/src/vs/editor/common/modes.ts index b864e628aa8..230992a68a8 100644 --- a/src/vs/editor/common/modes.ts +++ b/src/vs/editor/common/modes.ts @@ -1317,7 +1317,7 @@ export interface DocumentCommentProvider { deleteReaction?(resource: URI, comment: Comment, reaction: CommentReaction, token: CancellationToken): Promise; reactionGroup?: CommentReaction[]; - onDidChangeCommentThreads(): Event; + onDidChangeCommentThreads?(): Event; } /** diff --git a/src/vs/workbench/api/electron-browser/mainThreadComments.ts b/src/vs/workbench/api/electron-browser/mainThreadComments.ts index b8b975d7188..5d7329f4b50 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadComments.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadComments.ts @@ -75,7 +75,7 @@ export class MainThreadDocumentCommentProvider implements modes.DocumentCommentP } - onDidChangeCommentThreads = null; + // onDidChangeCommentThreads = null; } @extHostNamedCustomer(MainContext.MainThreadComments) @@ -129,8 +129,10 @@ export class MainThreadComments extends Disposable implements MainThreadComments }); }); - this._openPanelListener.dispose(); - this._openPanelListener = null; + if (this._openPanelListener) { + this._openPanelListener.dispose(); + this._openPanelListener = null; + } } }); } diff --git a/src/vs/workbench/api/electron-browser/mainThreadDocumentsAndEditors.ts b/src/vs/workbench/api/electron-browser/mainThreadDocumentsAndEditors.ts index 7801fcbf337..dd73c36be3f 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadDocumentsAndEditors.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadDocumentsAndEditors.ts @@ -85,8 +85,8 @@ class DocumentAndEditorStateDelta { readonly addedDocuments: ITextModel[], readonly removedEditors: TextEditorSnapshot[], readonly addedEditors: TextEditorSnapshot[], - readonly oldActiveEditor: string | undefined, - readonly newActiveEditor: string | undefined, + readonly oldActiveEditor: string | null | undefined, + readonly newActiveEditor: string | null | undefined, ) { this.isEmpty = this.removedDocuments.length === 0 && this.addedDocuments.length === 0 @@ -131,7 +131,7 @@ class DocumentAndEditorState { constructor( readonly documents: Set, readonly textEditors: Map, - readonly activeEditor: string | undefined, + readonly activeEditor: string | null | undefined, ) { // } @@ -257,7 +257,7 @@ class MainThreadDocumentAndEditorStateComputer { // to match output panels or the active workbench editor with // one of editor we have just computed if (!activeEditor) { - let candidate: IEditor; + let candidate: IEditor | undefined; if (this._activeEditorOrder === ActiveEditorOrder.Editor) { candidate = this._getActiveEditorFromEditorPart() || this._getActiveEditorFromPanel(); } else { @@ -291,7 +291,7 @@ class MainThreadDocumentAndEditorStateComputer { } } - private _getActiveEditorFromEditorPart(): IEditor { + private _getActiveEditorFromEditorPart(): IEditor | undefined { let result = this._editorService.activeTextEditorWidget; if (isDiffEditor(result)) { result = result.getModifiedEditor(); diff --git a/src/vs/workbench/api/electron-browser/mainThreadLanguageFeatures.ts b/src/vs/workbench/api/electron-browser/mainThreadLanguageFeatures.ts index 73dbc49ae4e..0be7720a10f 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadLanguageFeatures.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadLanguageFeatures.ts @@ -87,9 +87,10 @@ export class MainThreadLanguageFeatures implements MainThreadLanguageFeaturesSha private static _reviveWorkspaceSymbolDto(data: WorkspaceSymbolDto): search.IWorkspaceSymbol; private static _reviveWorkspaceSymbolDto(data: WorkspaceSymbolDto[]): search.IWorkspaceSymbol[]; - private static _reviveWorkspaceSymbolDto(data: WorkspaceSymbolDto | WorkspaceSymbolDto[]): search.IWorkspaceSymbol | search.IWorkspaceSymbol[] { + private static _reviveWorkspaceSymbolDto(data: undefined): undefined; + private static _reviveWorkspaceSymbolDto(data: WorkspaceSymbolDto | WorkspaceSymbolDto[] | undefined): search.IWorkspaceSymbol | search.IWorkspaceSymbol[] | undefined { if (!data) { - return data; + return data; } else if (Array.isArray(data)) { data.forEach(MainThreadLanguageFeatures._reviveWorkspaceSymbolDto); return data; @@ -99,7 +100,7 @@ export class MainThreadLanguageFeatures implements MainThreadLanguageFeaturesSha } } - private static _reviveCodeActionDto(data: CodeActionDto[]): modes.CodeAction[] { + private static _reviveCodeActionDto(data: CodeActionDto[] | undefined): modes.CodeAction[] { if (data) { data.forEach(code => reviveWorkspaceEditDto(code.edit)); } diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index 0bd07056ef0..9a1fe1a5f12 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -558,9 +558,9 @@ export interface MainThreadTaskShape extends IDisposable { export interface MainThreadExtensionServiceShape extends IDisposable { $localShowMessage(severity: Severity, msg: string): void; - $activateExtension(extensionId: ExtensionIdentifier, activationEvent: string): Promise; + $activateExtension(extensionId: ExtensionIdentifier, activationEvent: string | null): Promise; $onWillActivateExtension(extensionId: ExtensionIdentifier): void; - $onDidActivateExtension(extensionId: ExtensionIdentifier, startup: boolean, codeLoadingTime: number, activateCallTime: number, activateResolvedTime: number, activationEvent: string): void; + $onDidActivateExtension(extensionId: ExtensionIdentifier, startup: boolean, codeLoadingTime: number, activateCallTime: number, activateResolvedTime: number, activationEvent: string | null): void; $onExtensionActivationFailed(extensionId: ExtensionIdentifier): void; $onExtensionRuntimeError(extensionId: ExtensionIdentifier, error: SerializedError): void; $addMessage(extensionId: ExtensionIdentifier, severity: Severity, message: string): void; @@ -691,7 +691,7 @@ export interface ITextEditorAddData { options: IResolvedTextEditorConfiguration; selections: ISelection[]; visibleRanges: IRange[]; - editorPosition: EditorViewColumn; + editorPosition: EditorViewColumn | undefined; } export interface ITextEditorPositionData { [id: string]: EditorViewColumn; @@ -716,7 +716,7 @@ export interface IDocumentsAndEditorsDelta { addedDocuments?: IModelAddedData[]; removedEditors?: string[]; addedEditors?: ITextEditorAddData[]; - newActiveEditor?: string; + newActiveEditor?: string | null; } export interface ExtHostDocumentsAndEditorsShape { @@ -867,7 +867,7 @@ export interface WorkspaceEditDto { rejectReason?: string; } -export function reviveWorkspaceEditDto(data: WorkspaceEditDto): modes.WorkspaceEdit { +export function reviveWorkspaceEditDto(data: WorkspaceEditDto | undefined): modes.WorkspaceEdit { if (data && data.edits) { for (const edit of data.edits) { if (typeof (edit).resource === 'object') { diff --git a/src/vs/workbench/api/node/extHostExtensionService.ts b/src/vs/workbench/api/node/extHostExtensionService.ts index ce45a06e521..ad668857a8a 100644 --- a/src/vs/workbench/api/node/extHostExtensionService.ts +++ b/src/vs/workbench/api/node/extHostExtensionService.ts @@ -166,7 +166,7 @@ export class ExtHostExtensionService implements ExtHostExtensionServiceShape { private readonly _storage: ExtHostStorage; private readonly _storagePath: ExtensionStoragePath; private readonly _activator: ExtensionsActivator; - private _extensionPathIndex: Promise>; + private _extensionPathIndex: Promise> | null; private readonly _extensionApiFactory: IExtensionApiFactory; private readonly _resolvers: { [authorityPrefix: string]: vscode.RemoteAuthorityResolver; }; @@ -222,7 +222,7 @@ export class ExtHostExtensionService implements ExtHostExtensionServiceShape { await this._mainThreadExtensionsProxy.$activateExtension(extensionId, activationEvent); return new HostExtension(); } - const extensionDescription = this._registry.getExtensionDescription(extensionId); + const extensionDescription = this._registry.getExtensionDescription(extensionId)!; return this._activateExtension(extensionDescription, reason); } }); @@ -302,7 +302,7 @@ export class ExtHostExtensionService implements ExtHostExtensionServiceShape { return this._barrier.wait().then(_ => this._registry); } - public getExtensionExports(extensionId: ExtensionIdentifier): IExtensionAPI { + public getExtensionExports(extensionId: ExtensionIdentifier): IExtensionAPI | null | undefined { if (this._barrier.isOpen()) { return this._activator.getActivatedExtension(extensionId).exports; } else { @@ -624,7 +624,7 @@ export class ExtHostExtensionService implements ExtHostExtensionServiceShape { // Execute the runner if it follows our spec if (testRunner && typeof testRunner.run === 'function') { return new Promise((c, e) => { - testRunner!.run(this._initData.environment.extensionTestsPath, (error, failures) => { + testRunner!.run(this._initData.environment.extensionTestsPath!, (error, failures) => { if (error) { e(error.toString()); } else { @@ -671,7 +671,7 @@ export class ExtHostExtensionService implements ExtHostExtensionServiceShape { public registerRemoteAuthorityResolver(authorityPrefix: string, resolver: vscode.RemoteAuthorityResolver): vscode.Disposable { this._resolvers[authorityPrefix] = resolver; return toDisposable(() => { - this._resolvers[authorityPrefix] = null; + delete this._resolvers[authorityPrefix]; }); } diff --git a/src/vs/workbench/api/node/extHostTextEditors.ts b/src/vs/workbench/api/node/extHostTextEditors.ts index 2ebad811a31..3b316662afb 100644 --- a/src/vs/workbench/api/node/extHostTextEditors.ts +++ b/src/vs/workbench/api/node/extHostTextEditors.ts @@ -53,8 +53,8 @@ export class ExtHostEditors implements ExtHostEditorsShape { showTextDocument(document: vscode.TextDocument, column: vscode.ViewColumn, preserveFocus: boolean): Promise; showTextDocument(document: vscode.TextDocument, options: { column: vscode.ViewColumn, preserveFocus: boolean, pinned: boolean }): Promise; - showTextDocument(document: vscode.TextDocument, columnOrOptions: vscode.ViewColumn | vscode.TextDocumentShowOptions, preserveFocus?: boolean): Promise; - showTextDocument(document: vscode.TextDocument, columnOrOptions: vscode.ViewColumn | vscode.TextDocumentShowOptions, preserveFocus?: boolean): Promise { + showTextDocument(document: vscode.TextDocument, columnOrOptions: vscode.ViewColumn | vscode.TextDocumentShowOptions | undefined, preserveFocus?: boolean): Promise; + showTextDocument(document: vscode.TextDocument, columnOrOptions: vscode.ViewColumn | vscode.TextDocumentShowOptions | undefined, preserveFocus?: boolean): Promise { let options: ITextDocumentShowOptions; if (typeof columnOrOptions === 'number') { options = { -- GitLab