From 952faa486a3d1ac95e54031eb70e8df7ce93cffd Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Wed, 12 Dec 2018 16:17:11 -0800 Subject: [PATCH] Strict null checks --- src/tsconfig.strictNullChecks.json | 6 ++++ src/vs/editor/common/modes.ts | 2 +- src/vs/editor/contrib/rename/rename.ts | 2 +- src/vs/monaco.d.ts | 2 +- .../parts/backup/common/backupRestorer.ts | 4 +-- .../electron-browser/localizationsActions.ts | 4 +-- .../node/walkThroughContentProvider.ts | 2 +- .../walkThrough/node/walkThroughInput.ts | 2 +- .../electron-browser/bulkEditService.ts | 32 +++++++++++-------- 9 files changed, 33 insertions(+), 23 deletions(-) diff --git a/src/tsconfig.strictNullChecks.json b/src/tsconfig.strictNullChecks.json index 5e231e0e695..e35d2ba002f 100644 --- a/src/tsconfig.strictNullChecks.json +++ b/src/tsconfig.strictNullChecks.json @@ -549,6 +549,7 @@ "./vs/workbench/common/viewlet.ts", "./vs/workbench/common/views.ts", "./vs/workbench/electron-browser/resources.ts", + "./vs/workbench/parts/backup/common/backupRestorer.ts", "./vs/workbench/parts/cli/electron-browser/cli.contribution.ts", "./vs/workbench/parts/codeEditor/browser/menuPreventer.ts", "./vs/workbench/parts/codeEditor/browser/simpleEditorOptions.ts", @@ -582,6 +583,7 @@ "./vs/workbench/parts/extensions/electron-browser/extensionsActivationProgress.ts", "./vs/workbench/parts/extensions/electron-browser/extensionsUtils.ts", "./vs/workbench/parts/extensions/test/common/extensionQuery.test.ts", + "./vs/workbench/parts/localizations/electron-browser/localizationsActions.ts", "./vs/workbench/parts/logs/common/logConstants.ts", "./vs/workbench/parts/logs/electron-browser/logs.contribution.ts", "./vs/workbench/parts/logs/electron-browser/logsActions.ts", @@ -647,11 +649,15 @@ "./vs/workbench/parts/welcome/gettingStarted/electron-browser/gettingStarted.ts", "./vs/workbench/parts/welcome/gettingStarted/test/common/gettingStarted.test.ts", "./vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.ts", + "./vs/workbench/parts/welcome/walkThrough/electron-browser/editor/editorWalkThrough.ts", + "./vs/workbench/parts/welcome/walkThrough/node/walkThroughContentProvider.ts", + "./vs/workbench/parts/welcome/walkThrough/node/walkThroughInput.ts", "./vs/workbench/parts/welcome/walkThrough/node/walkThroughUtils.ts", "./vs/workbench/services/actions/electron-browser/menusExtensionPoint.ts", "./vs/workbench/services/activity/common/activity.ts", "./vs/workbench/services/backup/common/backup.ts", "./vs/workbench/services/backup/node/backupFileService.ts", + "./vs/workbench/services/bulkEdit/electron-browser/bulkEditService.ts", "./vs/workbench/services/commands/common/commandService.ts", "./vs/workbench/services/configuration/common/configuration.ts", "./vs/workbench/services/configuration/common/configurationExtensionPoint.ts", diff --git a/src/vs/editor/common/modes.ts b/src/vs/editor/common/modes.ts index 5a0fbe81c03..010cc950d8e 100644 --- a/src/vs/editor/common/modes.ts +++ b/src/vs/editor/common/modes.ts @@ -1115,7 +1115,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 2fa6143d301..293a0676232 100644 --- a/src/vs/editor/contrib/rename/rename.ts +++ b/src/vs/editor/contrib/rename/rename.ts @@ -69,7 +69,7 @@ class RenameSkeleton { if (i >= this._provider.length) { return { - edits: undefined, + edits: [], rejectReason: rejects.join('\n') }; } diff --git a/src/vs/monaco.d.ts b/src/vs/monaco.d.ts index 15bb107fb17..0a0edec247e 100644 --- a/src/vs/monaco.d.ts +++ b/src/vs/monaco.d.ts @@ -5355,7 +5355,7 @@ declare namespace monaco.languages { } export interface WorkspaceEdit { - edits?: Array; + edits: Array; } export interface Rejection { diff --git a/src/vs/workbench/parts/backup/common/backupRestorer.ts b/src/vs/workbench/parts/backup/common/backupRestorer.ts index 8096b2e77b9..3aa54ae8fdb 100644 --- a/src/vs/workbench/parts/backup/common/backupRestorer.ts +++ b/src/vs/workbench/parts/backup/common/backupRestorer.ts @@ -28,13 +28,13 @@ export class BackupRestorer implements IWorkbenchContribution { this.lifecycleService.when(LifecyclePhase.Restored).then(() => this.doRestoreBackups()); } - private doRestoreBackups(): Thenable { + private doRestoreBackups(): Thenable { // Find all files and untitled with backups return this.backupFileService.getWorkspaceFileBackups().then(backups => { // Resolve backups that are opened - return this.doResolveOpenedBackups(backups).then(unresolved => { + return this.doResolveOpenedBackups(backups).then((unresolved): Thenable | undefined => { // Some failed to restore or were not opened at all so we open and resolve them manually if (unresolved.length > 0) { diff --git a/src/vs/workbench/parts/localizations/electron-browser/localizationsActions.ts b/src/vs/workbench/parts/localizations/electron-browser/localizationsActions.ts index c1d39185fae..2f3bad9d854 100644 --- a/src/vs/workbench/parts/localizations/electron-browser/localizationsActions.ts +++ b/src/vs/workbench/parts/localizations/electron-browser/localizationsActions.ts @@ -36,11 +36,11 @@ export class ConfigureLocaleAction extends Action { super(id, label); } - public run(event?: any): Thenable { + public run(event?: any): Thenable { const file = URI.file(join(this.environmentService.appSettingsHome, 'locale.json')); return this.fileService.resolveFile(file).then(void 0, (error) => { return this.fileService.createFile(file, ConfigureLocaleAction.DEFAULT_CONTENT); - }).then((stat) => { + }).then((stat): Thenable | undefined => { if (!stat) { return undefined; } diff --git a/src/vs/workbench/parts/welcome/walkThrough/node/walkThroughContentProvider.ts b/src/vs/workbench/parts/welcome/walkThrough/node/walkThroughContentProvider.ts index 7b4e8721ac6..37d2c37008d 100644 --- a/src/vs/workbench/parts/welcome/walkThrough/node/walkThroughContentProvider.ts +++ b/src/vs/workbench/parts/welcome/walkThrough/node/walkThroughContentProvider.ts @@ -84,7 +84,7 @@ export class WalkThroughSnippetContentProvider implements ITextModelContentProvi const markdown = textBuffer.getValueInRange(range, EndOfLinePreference.TextDefined); marked(markdown, { renderer }); - const languageId = this.modeService.getModeIdForLanguageName(languageName); + const languageId = this.modeService.getModeIdForLanguageName(languageName) || ''; const languageSelection = this.modeService.create(languageId); codeEditorModel = this.modelService.createModel(codeSnippet, languageSelection, resource); } else { diff --git a/src/vs/workbench/parts/welcome/walkThrough/node/walkThroughInput.ts b/src/vs/workbench/parts/welcome/walkThrough/node/walkThroughInput.ts index c0074350cdb..78b0275ca9b 100644 --- a/src/vs/workbench/parts/welcome/walkThrough/node/walkThroughInput.ts +++ b/src/vs/workbench/parts/welcome/walkThrough/node/walkThroughInput.ts @@ -50,7 +50,7 @@ export class WalkThroughInput extends EditorInput { private disposables: IDisposable[] = []; - private promise: Thenable; + private promise: Thenable | null; private maxTopScroll = 0; private maxBottomScroll = 0; diff --git a/src/vs/workbench/services/bulkEdit/electron-browser/bulkEditService.ts b/src/vs/workbench/services/bulkEdit/electron-browser/bulkEditService.ts index 212ccb5194f..1774512d1e8 100644 --- a/src/vs/workbench/services/bulkEdit/electron-browser/bulkEditService.ts +++ b/src/vs/workbench/services/bulkEdit/electron-browser/bulkEditService.ts @@ -121,9 +121,11 @@ class EditorEditTask extends ModelEditTask { this._editor.pushUndoStop(); } if (this._newEol !== undefined) { - this._editor.pushUndoStop(); - this._editor.getModel().pushEOL(this._newEol); - this._editor.pushUndoStop(); + if (this._editor.hasModel()) { + this._editor.pushUndoStop(); + this._editor.getModel().pushEOL(this._newEol); + this._editor.pushUndoStop(); + } } } } @@ -132,13 +134,13 @@ class BulkEditModel implements IDisposable { private _textModelResolverService: ITextModelService; private _edits = new Map(); - private _editor: ICodeEditor; + private _editor: ICodeEditor | undefined; private _tasks: ModelEditTask[]; private _progress: IProgress; constructor( textModelResolverService: ITextModelService, - editor: ICodeEditor, + editor: ICodeEditor | undefined, edits: ResourceTextEdit[], progress: IProgress ) { @@ -180,7 +182,7 @@ class BulkEditModel implements IDisposable { } let task: ModelEditTask; - if (this._editor && this._editor.getModel().uri.toString() === model.textEditorModel.uri.toString()) { + if (this._editor && this._editor.hasModel() && this._editor.getModel().uri.toString() === model.textEditorModel.uri.toString()) { task = new EditorEditTask(ref, this._editor); } else { task = new ModelEditTask(ref); @@ -221,12 +223,12 @@ export type Edit = ResourceFileEdit | ResourceTextEdit; export class BulkEdit { private _edits: Edit[] = []; - private _editor: ICodeEditor; - private _progress: IProgressRunner; + private _editor: ICodeEditor | undefined; + private _progress?: IProgressRunner; constructor( - editor: ICodeEditor, - progress: IProgressRunner, + editor: ICodeEditor | undefined, + progress: IProgressRunner | undefined, @ILogService private readonly _logService: ILogService, @ITextModelService private readonly _textModelService: ITextModelService, @IFileService private readonly _fileService: IFileService, @@ -264,7 +266,7 @@ export class BulkEdit { let total = 0; const groups: Edit[][] = []; - let group: Edit[]; + let group: Edit[] | undefined; for (const edit of this._edits) { if (!group || (isResourceFileEdit(group[0]) && !isResourceFileEdit(edit)) @@ -285,8 +287,10 @@ export class BulkEdit { // define total work and progress callback // for child operations - this._progress.total(total); - let progress: IProgress = { report: _ => this._progress.worked(1) }; + if (this._progress) { + this._progress.total(total); + } + let progress: IProgress = { report: _ => this._progress && this._progress.worked(1) }; // do it. for (const group of groups) { @@ -400,7 +404,7 @@ export class BulkEditService implements IBulkEditService { } } - const bulkEdit = new BulkEdit(options.editor, options.progress, this._logService, this._textModelService, this._fileService, this._textFileService, this._labelService, this._configurationService); + const bulkEdit = new BulkEdit(codeEditor, options.progress, this._logService, this._textModelService, this._fileService, this._textFileService, this._labelService, this._configurationService); bulkEdit.add(edits); return bulkEdit.perform().then(() => { -- GitLab