From 8e71de66ff29c2e9e5d5de4174bd784678ea7b5c Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Mon, 22 Oct 2018 09:27:53 +0200 Subject: [PATCH] strictNull for rename.ts --- src/tsconfig.strictNullChecks.json | 3 ++- src/vs/editor/common/modes.ts | 2 +- src/vs/editor/contrib/rename/rename.ts | 28 ++++++++++++++++++-------- src/vs/monaco.d.ts | 2 +- 4 files changed, 24 insertions(+), 11 deletions(-) diff --git a/src/tsconfig.strictNullChecks.json b/src/tsconfig.strictNullChecks.json index 1693a2a6a02..33ac650937a 100644 --- a/src/tsconfig.strictNullChecks.json +++ b/src/tsconfig.strictNullChecks.json @@ -298,6 +298,7 @@ "./vs/editor/contrib/parameterHints/provideSignatureHelp.ts", "./vs/editor/contrib/quickOpen/quickOpen.ts", "./vs/editor/contrib/referenceSearch/referencesModel.ts", + "./vs/editor/contrib/rename/rename.ts", "./vs/editor/contrib/rename/renameInputField.ts", "./vs/editor/contrib/smartSelect/tokenTree.ts", "./vs/editor/contrib/snippet/snippetParser.ts", @@ -552,4 +553,4 @@ "exclude": [ "./typings/require-monaco.d.ts" ] -} \ No newline at end of file +} diff --git a/src/vs/editor/common/modes.ts b/src/vs/editor/common/modes.ts index 90d6c2d6bf8..ae54c9fe82a 100644 --- a/src/vs/editor/common/modes.ts +++ b/src/vs/editor/common/modes.ts @@ -1101,7 +1101,7 @@ export interface ResourceTextEdit { } export interface WorkspaceEdit { - edits: Array; + edits?: Array; } export interface Rejection { diff --git a/src/vs/editor/contrib/rename/rename.ts b/src/vs/editor/contrib/rename/rename.ts index 75f2cc2296c..2fa6143d301 100644 --- a/src/vs/editor/contrib/rename/rename.ts +++ b/src/vs/editor/contrib/rename/rename.ts @@ -43,10 +43,10 @@ class RenameSkeleton { return this._provider.length > 0; } - async resolveRenameLocation(token: CancellationToken): Promise { + async resolveRenameLocation(token: CancellationToken): Promise { let [provider] = this._provider; - let res: RenameLocation & Rejection; + let res: RenameLocation & Rejection | null | undefined; if (provider.resolveRenameLocation) { res = await provider.resolveRenameLocation(this.model, this.position, token); @@ -116,15 +116,19 @@ class RenameController implements IEditorContribution { this._renameInputVisible = CONTEXT_RENAME_INPUT_VISIBLE.bindTo(contextKeyService); } - public dispose(): void { + dispose(): void { this._renameInputField.dispose(); } - public getId(): string { + getId(): string { return RenameController.ID; } - public async run(token: CancellationToken): Promise { + async run(token: CancellationToken): Promise { + + if (!this.editor.hasModel()) { + return undefined; + } const position = this.editor.getPosition(); const skeleton = new RenameSkeleton(this.editor.getModel(), position); @@ -133,7 +137,7 @@ class RenameController implements IEditorContribution { return undefined; } - let loc: RenameLocation & Rejection; + let loc: RenameLocation & Rejection | null | undefined; try { loc = await skeleton.resolveRenameLocation(token); } catch (e) { @@ -175,6 +179,11 @@ class RenameController implements IEditorContribution { const state = new EditorState(this.editor, CodeEditorStateFlag.Position | CodeEditorStateFlag.Value | CodeEditorStateFlag.Selection | CodeEditorStateFlag.Scroll); const renameOperation = Promise.resolve(skeleton.provideRenameEdits(newNameOrFocusFlag, 0, [], token).then(result => { + + if (!this.editor.hasModel()) { + return undefined; + } + if (result.rejectReason) { if (state.validate(this.editor)) { MessageController.get(this.editor).showMessage(result.rejectReason, this.editor.getPosition()); @@ -187,7 +196,7 @@ class RenameController implements IEditorContribution { return this._bulkEditService.apply(result, { editor: this.editor }).then(result => { // alert if (result.ariaSummary) { - alert(nls.localize('aria', "Successfully renamed '{0}' to '{1}'. Summary: {2}", loc.text, newNameOrFocusFlag, result.ariaSummary)); + alert(nls.localize('aria', "Successfully renamed '{0}' to '{1}'. Summary: {2}", loc!.text, newNameOrFocusFlag, result.ariaSummary)); } }); @@ -242,6 +251,9 @@ export class RenameAction extends EditorAction { if (URI.isUri(uri) && Position.isIPosition(pos)) { return editorService.openCodeEditor({ resource: uri }, editorService.getActiveCodeEditor()).then(editor => { + if (!editor) { + return; + } editor.setPosition(pos); editor.invokeWithinContext(accessor => { this.reportTelemetry(accessor, editor); @@ -258,7 +270,7 @@ export class RenameAction extends EditorAction { if (controller) { return Promise.resolve(controller.run(CancellationToken.None)); } - return undefined; + return Promise.resolve(); } } diff --git a/src/vs/monaco.d.ts b/src/vs/monaco.d.ts index 98412a6a15c..9e9a4805e99 100644 --- a/src/vs/monaco.d.ts +++ b/src/vs/monaco.d.ts @@ -5354,7 +5354,7 @@ declare namespace monaco.languages { } export interface WorkspaceEdit { - edits: Array; + edits?: Array; } export interface Rejection {