diff --git a/src/tsconfig.strictNullChecks.json b/src/tsconfig.strictNullChecks.json index 99f0207b24a..16019fedab7 100644 --- a/src/tsconfig.strictNullChecks.json +++ b/src/tsconfig.strictNullChecks.json @@ -10,6 +10,7 @@ "./vs/base/node/**/*.ts", "./vs/editor/common/**/*.ts", "./vs/editor/browser/**/*.ts", + "./vs/editor/test/**/*.ts", "./vs/editor/contrib/smartSelect/**/*.ts" ], "files": [ diff --git a/src/vs/editor/browser/controller/coreCommands.ts b/src/vs/editor/browser/controller/coreCommands.ts index 8e12e1c6ece..1fb8d7df97d 100644 --- a/src/vs/editor/browser/controller/coreCommands.ts +++ b/src/vs/editor/browser/controller/coreCommands.ts @@ -29,7 +29,7 @@ import { KeybindingWeight } from 'vs/platform/keybinding/common/keybindingsRegis const CORE_WEIGHT = KeybindingWeight.EditorCore; export abstract class CoreEditorCommand extends EditorCommand { - public runEditorCommand(accessor: ServicesAccessor, editor: ICodeEditor, args: any): void { + public runEditorCommand(accessor: ServicesAccessor | null, editor: ICodeEditor, args: any): void { const cursors = editor._getCursors(); if (!cursors) { // the editor has no view => has no cursors diff --git a/src/vs/editor/browser/editorExtensions.ts b/src/vs/editor/browser/editorExtensions.ts index 1eafc931b06..40a1ff7bbb9 100644 --- a/src/vs/editor/browser/editorExtensions.ts +++ b/src/vs/editor/browser/editorExtensions.ts @@ -166,7 +166,7 @@ export abstract class EditorCommand extends Command { }); } - public abstract runEditorCommand(accessor: ServicesAccessor, editor: ICodeEditor, args: any): void | Thenable; + public abstract runEditorCommand(accessor: ServicesAccessor | null, editor: ICodeEditor, args: any): void | Thenable; } //#endregion EditorCommand diff --git a/src/vs/editor/common/core/position.ts b/src/vs/editor/common/core/position.ts index 451b107f5f0..4c711e9142c 100644 --- a/src/vs/editor/common/core/position.ts +++ b/src/vs/editor/common/core/position.ts @@ -69,7 +69,7 @@ export class Position { /** * Test if position `a` equals position `b` */ - public static equals(a: IPosition, b: IPosition): boolean { + public static equals(a: IPosition | null, b: IPosition | null): boolean { if (!a && !b) { return true; } diff --git a/src/vs/editor/common/model/editStack.ts b/src/vs/editor/common/model/editStack.ts index 0698587692a..39ecc249c01 100644 --- a/src/vs/editor/common/model/editStack.ts +++ b/src/vs/editor/common/model/editStack.ts @@ -145,7 +145,7 @@ export class EditStack { this.pushStackElement(); } - public pushEditOperation(beforeCursorState: Selection[], editOperations: IIdentifiedSingleEditOperation[], cursorStateComputer: ICursorStateComputer): Selection[] | null { + public pushEditOperation(beforeCursorState: Selection[], editOperations: IIdentifiedSingleEditOperation[], cursorStateComputer: ICursorStateComputer | null): Selection[] | null { // No support for parallel universes :( this.future = []; @@ -174,7 +174,7 @@ export class EditStack { return stackElement!.afterCursorState; } - private static _computeCursorState(cursorStateComputer: ICursorStateComputer, inverseEditOperations: IIdentifiedSingleEditOperation[]): Selection[] | null { + private static _computeCursorState(cursorStateComputer: ICursorStateComputer | null, inverseEditOperations: IIdentifiedSingleEditOperation[]): Selection[] | null { try { return cursorStateComputer ? cursorStateComputer(inverseEditOperations) : null; } catch (e) { diff --git a/src/vs/editor/common/model/textModel.ts b/src/vs/editor/common/model/textModel.ts index 8288a98e190..449a69f35c0 100644 --- a/src/vs/editor/common/model/textModel.ts +++ b/src/vs/editor/common/model/textModel.ts @@ -1166,7 +1166,7 @@ export class TextModel extends Disposable implements model.ITextModel { } } - public pushEditOperations(beforeCursorState: Selection[], editOperations: model.IIdentifiedSingleEditOperation[], cursorStateComputer: model.ICursorStateComputer): Selection[] | null { + public pushEditOperations(beforeCursorState: Selection[], editOperations: model.IIdentifiedSingleEditOperation[], cursorStateComputer: model.ICursorStateComputer | null): Selection[] | null { try { this._onDidChangeDecorations.beginDeferredEmit(); this._eventEmitter.beginDeferredEmit(); @@ -1177,7 +1177,7 @@ export class TextModel extends Disposable implements model.ITextModel { } } - private _pushEditOperations(beforeCursorState: Selection[], editOperations: model.IIdentifiedSingleEditOperation[], cursorStateComputer: model.ICursorStateComputer): Selection[] | null { + private _pushEditOperations(beforeCursorState: Selection[], editOperations: model.IIdentifiedSingleEditOperation[], cursorStateComputer: model.ICursorStateComputer | null): Selection[] | null { if (this._options.trimAutoWhitespace && this._trimAutoWhitespaceLines) { // Go through each saved line number and insert a trim whitespace edit // if it is safe to do so (no conflicts with other edits). diff --git a/src/vs/editor/common/modes/linkComputer.ts b/src/vs/editor/common/modes/linkComputer.ts index 0510feb7267..290b424ee2d 100644 --- a/src/vs/editor/common/modes/linkComputer.ts +++ b/src/vs/editor/common/modes/linkComputer.ts @@ -301,7 +301,7 @@ export class LinkComputer { * document. *Note* that this operation is computational * expensive and should not run in the UI thread. */ -export function computeLinks(model: ILinkComputerTarget): ILink[] { +export function computeLinks(model: ILinkComputerTarget | null): ILink[] { if (!model || typeof model.getLineCount !== 'function' || typeof model.getLineContent !== 'function') { // Unknown caller! return []; diff --git a/src/vs/editor/common/modes/supports/electricCharacter.ts b/src/vs/editor/common/modes/supports/electricCharacter.ts index 1f83c639e5e..7953c6c4852 100644 --- a/src/vs/editor/common/modes/supports/electricCharacter.ts +++ b/src/vs/editor/common/modes/supports/electricCharacter.ts @@ -27,7 +27,7 @@ export class BracketElectricCharacterSupport { private readonly _richEditBrackets: RichEditBrackets | null; private readonly _complexAutoClosePairs: StandardAutoClosingPairConditional[]; - constructor(richEditBrackets: RichEditBrackets | null, autoClosePairs: IAutoClosingPairConditional[], contribution: IBracketElectricCharacterContribution | undefined) { + constructor(richEditBrackets: RichEditBrackets | null, autoClosePairs: IAutoClosingPairConditional[], contribution: IBracketElectricCharacterContribution | null | undefined) { contribution = contribution || {}; this._richEditBrackets = richEditBrackets; this._complexAutoClosePairs = autoClosePairs.filter(pair => pair.open.length > 1 && !!pair.close).map(el => new StandardAutoClosingPairConditional(el)); diff --git a/src/vs/editor/common/services/modelServiceImpl.ts b/src/vs/editor/common/services/modelServiceImpl.ts index bfb01f8a773..9f37823db53 100644 --- a/src/vs/editor/common/services/modelServiceImpl.ts +++ b/src/vs/editor/common/services/modelServiceImpl.ts @@ -256,7 +256,7 @@ const DEFAULT_EOL = (platform.isLinux || platform.isMacintosh) ? DefaultEndOfLin export class ModelServiceImpl extends Disposable implements IModelService { public _serviceBrand: any; - private _markerService: IMarkerService; + private _markerService: IMarkerService | null; private _markerServiceSubscription: IDisposable; private _configurationService: IConfigurationService; private _configurationServiceSubscription: IDisposable; @@ -281,7 +281,7 @@ export class ModelServiceImpl extends Disposable implements IModelService { private _models: { [modelId: string]: ModelData; }; constructor( - @IMarkerService markerService: IMarkerService, + @IMarkerService markerService: IMarkerService | null, @IConfigurationService configurationService: IConfigurationService, @ITextResourcePropertiesService resourcePropertiesService: ITextResourcePropertiesService, ) { @@ -351,7 +351,7 @@ export class ModelServiceImpl extends Disposable implements IModelService { }; } - public getCreationOptions(language: string, resource: URI | undefined, isForSimpleWidget: boolean): ITextModelCreationOptions { + public getCreationOptions(language: string, resource: URI | null | undefined, isForSimpleWidget: boolean): ITextModelCreationOptions { let creationOptions = this._modelCreationOptionsByLanguageAndResource[language + resource]; if (!creationOptions) { const editor = this._configurationService.getValue('editor', { overrideIdentifier: language, resource }); @@ -419,7 +419,7 @@ export class ModelServiceImpl extends Disposable implements IModelService { if (!modelData) { return; } - ModelMarkerHandler.setMarkers(modelData, this._markerService); + ModelMarkerHandler.setMarkers(modelData, this._markerService!); }); } @@ -429,7 +429,7 @@ export class ModelServiceImpl extends Disposable implements IModelService { || model.uri.scheme === network.Schemas.internal || model.uri.scheme === network.Schemas.vscode) { if (this._markerService) { - this._markerService.read({ resource: model.uri }).map(marker => marker.owner).forEach(owner => this._markerService.remove(owner, [model.uri])); + this._markerService.read({ resource: model.uri }).map(marker => marker.owner).forEach(owner => this._markerService!.remove(owner, [model.uri])); } } @@ -439,7 +439,7 @@ export class ModelServiceImpl extends Disposable implements IModelService { // --- begin IModelService - private _createModelData(value: string | ITextBufferFactory, languageIdentifier: LanguageIdentifier, resource: URI | undefined, isForSimpleWidget: boolean): ModelData { + private _createModelData(value: string | ITextBufferFactory, languageIdentifier: LanguageIdentifier, resource: URI | null | undefined, isForSimpleWidget: boolean): ModelData { // create & save the model const options = this.getCreationOptions(languageIdentifier.language, resource, isForSimpleWidget); const model: TextModel = new TextModel(value, options, languageIdentifier, resource); @@ -530,7 +530,7 @@ export class ModelServiceImpl extends Disposable implements IModelService { return [EditOperation.replaceMove(oldRange, textBuffer.getValueInRange(newRange, EndOfLinePreference.TextDefined))]; } - public createModel(value: string | ITextBufferFactory, languageSelection: ILanguageSelection | null, resource: URI | undefined, isForSimpleWidget: boolean = false): ITextModel { + public createModel(value: string | ITextBufferFactory, languageSelection: ILanguageSelection | null, resource: URI | null | undefined, isForSimpleWidget: boolean = false): ITextModel { let modelData: ModelData; if (languageSelection) { diff --git a/src/vs/editor/common/services/resourceConfiguration.ts b/src/vs/editor/common/services/resourceConfiguration.ts index a5d88921cb6..e0926ee9fda 100644 --- a/src/vs/editor/common/services/resourceConfiguration.ts +++ b/src/vs/editor/common/services/resourceConfiguration.ts @@ -43,5 +43,5 @@ export interface ITextResourcePropertiesService { /** * Returns the End of Line characters for the given resource */ - getEOL(resource: URI | undefined, language?: string): string; + getEOL(resource: URI | null | undefined, language?: string): string; } \ No newline at end of file diff --git a/src/vs/editor/test/browser/commands/shiftCommand.test.ts b/src/vs/editor/test/browser/commands/shiftCommand.test.ts index 455bab39acc..4c187481918 100644 --- a/src/vs/editor/test/browser/commands/shiftCommand.test.ts +++ b/src/vs/editor/test/browser/commands/shiftCommand.test.ts @@ -43,7 +43,7 @@ class DocBlockCommentMode extends MockMode { } } -function testShiftCommand(lines: string[], languageIdentifier: LanguageIdentifier, useTabStops: boolean, selection: Selection, expectedLines: string[], expectedSelection: Selection): void { +function testShiftCommand(lines: string[], languageIdentifier: LanguageIdentifier | null, useTabStops: boolean, selection: Selection, expectedLines: string[], expectedSelection: Selection): void { testCommand(lines, languageIdentifier, selection, (sel) => new ShiftCommand(sel, { isUnshift: false, tabSize: 4, @@ -52,7 +52,7 @@ function testShiftCommand(lines: string[], languageIdentifier: LanguageIdentifie }), expectedLines, expectedSelection); } -function testUnshiftCommand(lines: string[], languageIdentifier: LanguageIdentifier, useTabStops: boolean, selection: Selection, expectedLines: string[], expectedSelection: Selection): void { +function testUnshiftCommand(lines: string[], languageIdentifier: LanguageIdentifier | null, useTabStops: boolean, selection: Selection, expectedLines: string[], expectedSelection: Selection): void { testCommand(lines, languageIdentifier, selection, (sel) => new ShiftCommand(sel, { isUnshift: true, tabSize: 4, diff --git a/src/vs/editor/test/browser/commands/sideEditing.test.ts b/src/vs/editor/test/browser/commands/sideEditing.test.ts index 0b19c93b13b..250f2ff7960 100644 --- a/src/vs/editor/test/browser/commands/sideEditing.test.ts +++ b/src/vs/editor/test/browser/commands/sideEditing.test.ts @@ -17,7 +17,7 @@ import { TestConfiguration } from 'vs/editor/test/common/mocks/testConfiguration function testCommand(lines: string[], selections: Selection[], edits: IIdentifiedSingleEditOperation[], expectedLines: string[], expectedSelections: Selection[]): void { withTestCodeEditor(lines, {}, (editor, cursor) => { - const model = editor.getModel(); + const model = editor.getModel()!; cursor.setSelections('tests', selections); @@ -199,8 +199,8 @@ suite('SideEditing', () => { function _runTest(selection: Selection, editRange: Range, editText: string, editForceMoveMarkers: boolean, expected: Selection, msg: string): void { const model = TextModel.createFromString(LINES.join('\n')); - const config = new TestConfiguration(null); - const viewModel = new ViewModel(0, config, model, null); + const config = new TestConfiguration({}); + const viewModel = new ViewModel(0, config, model, null!); const cursor = new Cursor(config, model, viewModel); cursor.setSelections('tests', [selection]); diff --git a/src/vs/editor/test/browser/commands/trimTrailingWhitespaceCommand.test.ts b/src/vs/editor/test/browser/commands/trimTrailingWhitespaceCommand.test.ts index 11e6c56b8c0..d2282e46f14 100644 --- a/src/vs/editor/test/browser/commands/trimTrailingWhitespaceCommand.test.ts +++ b/src/vs/editor/test/browser/commands/trimTrailingWhitespaceCommand.test.ts @@ -15,7 +15,7 @@ import { withEditorModel } from 'vs/editor/test/common/editorTestUtils'; /** * Create single edit operation */ -function createInsertDeleteSingleEditOp(text: string, positionLineNumber: number, positionColumn: number, selectionLineNumber: number = positionLineNumber, selectionColumn: number = positionColumn): IIdentifiedSingleEditOperation { +function createInsertDeleteSingleEditOp(text: string | null, positionLineNumber: number, positionColumn: number, selectionLineNumber: number = positionLineNumber, selectionColumn: number = positionColumn): IIdentifiedSingleEditOperation { return { range: new Range(selectionLineNumber, selectionColumn, positionLineNumber, positionColumn), text: text @@ -25,7 +25,7 @@ function createInsertDeleteSingleEditOp(text: string, positionLineNumber: number /** * Create single edit operation */ -export function createSingleEditOp(text: string, positionLineNumber: number, positionColumn: number, selectionLineNumber: number = positionLineNumber, selectionColumn: number = positionColumn): IIdentifiedSingleEditOperation { +export function createSingleEditOp(text: string | null, positionLineNumber: number, positionColumn: number, selectionLineNumber: number = positionLineNumber, selectionColumn: number = positionColumn): IIdentifiedSingleEditOperation { return { range: new Range(selectionLineNumber, selectionColumn, positionLineNumber, positionColumn), text: text diff --git a/src/vs/editor/test/browser/controller/cursor.test.ts b/src/vs/editor/test/browser/controller/cursor.test.ts index c69813039d3..5276a15c3bd 100644 --- a/src/vs/editor/test/browser/controller/cursor.test.ts +++ b/src/vs/editor/test/browser/controller/cursor.test.ts @@ -151,8 +151,8 @@ suite('Editor Controller - Cursor', () => { LINE5; thisModel = createTextModel(text); - thisConfiguration = new TestConfiguration(null); - thisViewModel = new ViewModel(0, thisConfiguration, thisModel, null); + thisConfiguration = new TestConfiguration({}); + thisViewModel = new ViewModel(0, thisConfiguration, thisModel, null!); thisCursor = new Cursor(thisConfiguration, thisModel, thisViewModel); }); @@ -735,8 +735,8 @@ suite('Editor Controller - Cursor', () => { 'var concat = require("gulp-concat");', 'var newer = require("gulp-newer");', ].join('\n')); - const config = new TestConfiguration(null); - const viewModel = new ViewModel(0, config, model, null); + const config = new TestConfiguration({}); + const viewModel = new ViewModel(0, config, model, null!); const cursor = new Cursor(config, model, viewModel); moveTo(cursor, 1, 4, false); @@ -774,8 +774,8 @@ suite('Editor Controller - Cursor', () => { '', '', ].join('\n')); - const config = new TestConfiguration(null); - const viewModel = new ViewModel(0, config, model, null); + const config = new TestConfiguration({}); + const viewModel = new ViewModel(0, config, model, null!); const cursor = new Cursor(config, model, viewModel); moveTo(cursor, 10, 10, false); @@ -836,8 +836,8 @@ suite('Editor Controller - Cursor', () => { '', '', ].join('\n')); - const config = new TestConfiguration(null); - const viewModel = new ViewModel(0, config, model, null); + const config = new TestConfiguration({}); + const viewModel = new ViewModel(0, config, model, null!); const cursor = new Cursor(config, model, viewModel); moveTo(cursor, 10, 10, false); @@ -885,8 +885,8 @@ suite('Editor Controller - Cursor', () => { 'var concat = require("gulp-concat");', 'var newer = require("gulp-newer");', ].join('\n')); - const config = new TestConfiguration(null); - const viewModel = new ViewModel(0, config, model, null); + const config = new TestConfiguration({}); + const viewModel = new ViewModel(0, config, model, null!); const cursor = new Cursor(config, model, viewModel); moveTo(cursor, 1, 4, false); @@ -1395,7 +1395,7 @@ suite('Editor Controller - Regression tests', () => { 'asdasd', 'qwerty' ], {}, (editor, cursor) => { - const model = editor.getModel(); + const model = editor.getModel()!; moveTo(cursor, 2, 1, false); assertCursor(cursor, new Selection(2, 1, 2, 1)); @@ -1411,7 +1411,7 @@ suite('Editor Controller - Regression tests', () => { 'asdasd', '' ], {}, (editor, cursor) => { - const model = editor.getModel(); + const model = editor.getModel()!; moveTo(cursor, 2, 1, false); assertCursor(cursor, new Selection(2, 1, 2, 1)); @@ -1981,7 +1981,7 @@ suite('Editor Controller - Regression tests', () => { wordWrap: 'wordWrapColumn', wordWrapColumn: 100 }); - const viewModel = new ViewModel(0, config, model, null); + const viewModel = new ViewModel(0, config, model, null!); const cursor = new Cursor(config, model, viewModel); moveTo(cursor, 1, 43, false); @@ -2050,9 +2050,9 @@ suite('Editor Controller - Regression tests', () => { const tokenizationSupport: ITokenizationSupport = { getInitialState: () => NULL_STATE, - tokenize: undefined, + tokenize: undefined!, tokenize2: (line: string, state: IState): TokenizationResult2 => { - return new TokenizationResult2(null, state); + return new TokenizationResult2(null!, state); } }; @@ -2392,7 +2392,7 @@ suite('Editor Controller - Cursor Configuration', () => { } public computeCursorState(model: ITextModel, helper: ICursorStateComputerData): Selection { - return helper.getTrackedSelection(this._selectionId); + return helper.getTrackedSelection(this._selectionId!); } } @@ -3626,7 +3626,7 @@ suite('Editor Controller - Indentation Rules', () => { interface ICursorOpts { text: string[]; - languageIdentifier?: LanguageIdentifier; + languageIdentifier?: LanguageIdentifier | null; modelOpts?: IRelaxedTextModelCreationOptions; editorOpts?: IEditorOptions; } @@ -3634,8 +3634,8 @@ interface ICursorOpts { function usingCursor(opts: ICursorOpts, callback: (model: TextModel, cursor: Cursor) => void): void { let model = createTextModel(opts.text.join('\n'), opts.modelOpts, opts.languageIdentifier); model.forceTokenization(model.getLineCount()); - let config = new TestConfiguration(opts.editorOpts); - let viewModel = new ViewModel(0, config, model, null); + let config = new TestConfiguration(opts.editorOpts || {}); + let viewModel = new ViewModel(0, config, model, null!); let cursor = new Cursor(config, model, viewModel); callback(model, cursor); diff --git a/src/vs/editor/test/browser/controller/cursorMoveCommand.test.ts b/src/vs/editor/test/browser/controller/cursorMoveCommand.test.ts index dc70dd0240e..96bc4fc047d 100644 --- a/src/vs/editor/test/browser/controller/cursorMoveCommand.test.ts +++ b/src/vs/editor/test/browser/controller/cursorMoveCommand.test.ts @@ -31,8 +31,8 @@ suite('Cursor move command test', () => { ].join('\n'); thisModel = TextModel.createFromString(text); - thisConfiguration = new TestConfiguration(null); - thisViewModel = new ViewModel(0, thisConfiguration, thisModel, null); + thisConfiguration = new TestConfiguration({}); + thisViewModel = new ViewModel(0, thisConfiguration, thisModel, null!); thisCursor = new Cursor(thisConfiguration, thisModel, thisViewModel); }); diff --git a/src/vs/editor/test/browser/controller/textAreaState.test.ts b/src/vs/editor/test/browser/controller/textAreaState.test.ts index 1e00f28d632..2ae87eef76d 100644 --- a/src/vs/editor/test/browser/controller/textAreaState.test.ts +++ b/src/vs/editor/test/browser/controller/textAreaState.test.ts @@ -123,7 +123,7 @@ suite('TextAreaState', () => { textArea.dispose(); }); - function testDeduceInput(prevState: TextAreaState, value: string, selectionStart: number, selectionEnd: number, couldBeEmojiInput: boolean, couldBeTypingAtOffset0: boolean, expected: string, expectedCharReplaceCnt: number): void { + function testDeduceInput(prevState: TextAreaState | null, value: string, selectionStart: number, selectionEnd: number, couldBeEmojiInput: boolean, couldBeTypingAtOffset0: boolean, expected: string, expectedCharReplaceCnt: number): void { prevState = prevState || TextAreaState.EMPTY; let textArea = new MockTextAreaWrapper(); diff --git a/src/vs/editor/test/browser/core/editorState.test.ts b/src/vs/editor/test/browser/core/editorState.test.ts index fff6ae14061..1915af4f711 100644 --- a/src/vs/editor/test/browser/core/editorState.test.ts +++ b/src/vs/editor/test/browser/core/editorState.test.ts @@ -92,10 +92,10 @@ suite('Editor Core - Editor State', () => { return { getModel: (): ITextModel => mappedModel, - getPosition: (): Position => position, - getSelection: (): Selection => selection, - getScrollLeft: (): number => scroll && scroll.left, - getScrollTop: (): number => scroll && scroll.top + getPosition: (): Position | undefined => position, + getSelection: (): Selection | undefined => selection, + getScrollLeft: (): number | undefined => scroll && scroll.left, + getScrollTop: (): number | undefined => scroll && scroll.top } as ICodeEditor; } diff --git a/src/vs/editor/test/browser/services/decorationRenderOptions.test.ts b/src/vs/editor/test/browser/services/decorationRenderOptions.test.ts index feb3a465cf6..962bbe2d677 100644 --- a/src/vs/editor/test/browser/services/decorationRenderOptions.test.ts +++ b/src/vs/editor/test/browser/services/decorationRenderOptions.test.ts @@ -15,11 +15,11 @@ import { TestTheme, TestThemeService } from 'vs/platform/theme/test/common/testT const themeServiceMock = new TestThemeService(); export class TestCodeEditorServiceImpl extends CodeEditorServiceImpl { - getActiveCodeEditor(): ICodeEditor { + getActiveCodeEditor(): ICodeEditor | null { return null; } - openCodeEditor(input: IResourceInput, source: ICodeEditor | null, sideBySide?: boolean): Promise { + openCodeEditor(input: IResourceInput, source: ICodeEditor | null, sideBySide?: boolean): Promise { return Promise.resolve(null); } } @@ -48,7 +48,7 @@ suite('Decoration Render Options', () => { if ((styleSheet.sheet).rules) { return Array.prototype.map.call((styleSheet.sheet).rules, (r: { cssText: string }) => r.cssText).join('\n'); } - return styleSheet.sheet.toString(); + return styleSheet.sheet!.toString(); } test('css properties', () => { diff --git a/src/vs/editor/test/browser/services/openerService.test.ts b/src/vs/editor/test/browser/services/openerService.test.ts index 4c19449c358..9222455b70e 100644 --- a/src/vs/editor/test/browser/services/openerService.test.ts +++ b/src/vs/editor/test/browser/services/openerService.test.ts @@ -12,7 +12,7 @@ suite('OpenerService', function () { const editorService = new TestCodeEditorService(); - let lastCommand: { id: string, args: any[] }; + let lastCommand: { id: string, args: any[] } | undefined; const commandService = new class implements ICommandService { _serviceBrand: any; @@ -30,7 +30,7 @@ suite('OpenerService', function () { test('delegate to editorService, scheme:///fff', function () { const openerService = new OpenerService(editorService, NullCommandService); openerService.open(URI.parse('another:///somepath')); - assert.equal(editorService.lastInput.options.selection, undefined); + assert.equal(editorService.lastInput.options!.selection, undefined); }); test('delegate to editorService, scheme:///fff#L123', function () { @@ -38,21 +38,21 @@ suite('OpenerService', function () { const openerService = new OpenerService(editorService, NullCommandService); openerService.open(URI.parse('file:///somepath#L23')); - assert.equal(editorService.lastInput.options.selection.startLineNumber, 23); - assert.equal(editorService.lastInput.options.selection.startColumn, 1); - assert.equal(editorService.lastInput.options.selection.endLineNumber, undefined); - assert.equal(editorService.lastInput.options.selection.endColumn, undefined); + assert.equal(editorService.lastInput.options!.selection!.startLineNumber, 23); + assert.equal(editorService.lastInput.options!.selection!.startColumn, 1); + assert.equal(editorService.lastInput.options!.selection!.endLineNumber, undefined); + assert.equal(editorService.lastInput.options!.selection!.endColumn, undefined); assert.equal(editorService.lastInput.resource.fragment, ''); openerService.open(URI.parse('another:///somepath#L23')); - assert.equal(editorService.lastInput.options.selection.startLineNumber, 23); - assert.equal(editorService.lastInput.options.selection.startColumn, 1); + assert.equal(editorService.lastInput.options!.selection!.startLineNumber, 23); + assert.equal(editorService.lastInput.options!.selection!.startColumn, 1); openerService.open(URI.parse('another:///somepath#L23,45')); - assert.equal(editorService.lastInput.options.selection.startLineNumber, 23); - assert.equal(editorService.lastInput.options.selection.startColumn, 45); - assert.equal(editorService.lastInput.options.selection.endLineNumber, undefined); - assert.equal(editorService.lastInput.options.selection.endColumn, undefined); + assert.equal(editorService.lastInput.options!.selection!.startLineNumber, 23); + assert.equal(editorService.lastInput.options!.selection!.startColumn, 45); + assert.equal(editorService.lastInput.options!.selection!.endLineNumber, undefined); + assert.equal(editorService.lastInput.options!.selection!.endColumn, undefined); assert.equal(editorService.lastInput.resource.fragment, ''); }); @@ -61,17 +61,17 @@ suite('OpenerService', function () { const openerService = new OpenerService(editorService, NullCommandService); openerService.open(URI.parse('file:///somepath#23')); - assert.equal(editorService.lastInput.options.selection.startLineNumber, 23); - assert.equal(editorService.lastInput.options.selection.startColumn, 1); - assert.equal(editorService.lastInput.options.selection.endLineNumber, undefined); - assert.equal(editorService.lastInput.options.selection.endColumn, undefined); + assert.equal(editorService.lastInput.options!.selection!.startLineNumber, 23); + assert.equal(editorService.lastInput.options!.selection!.startColumn, 1); + assert.equal(editorService.lastInput.options!.selection!.endLineNumber, undefined); + assert.equal(editorService.lastInput.options!.selection!.endColumn, undefined); assert.equal(editorService.lastInput.resource.fragment, ''); openerService.open(URI.parse('file:///somepath#23,45')); - assert.equal(editorService.lastInput.options.selection.startLineNumber, 23); - assert.equal(editorService.lastInput.options.selection.startColumn, 45); - assert.equal(editorService.lastInput.options.selection.endLineNumber, undefined); - assert.equal(editorService.lastInput.options.selection.endColumn, undefined); + assert.equal(editorService.lastInput.options!.selection!.startLineNumber, 23); + assert.equal(editorService.lastInput.options!.selection!.startColumn, 45); + assert.equal(editorService.lastInput.options!.selection!.endLineNumber, undefined); + assert.equal(editorService.lastInput.options!.selection!.endColumn, undefined); assert.equal(editorService.lastInput.resource.fragment, ''); }); @@ -83,24 +83,24 @@ suite('OpenerService', function () { openerService.open(URI.parse('command:foobar')); assert.equal(lastCommand, undefined); assert.equal(editorService.lastInput.resource.toString(), 'command:foobar'); - assert.equal(editorService.lastInput.options.selection, undefined); + assert.equal(editorService.lastInput.options!.selection, undefined); const id = `aCommand${Math.random()}`; CommandsRegistry.registerCommand(id, function () { }); openerService.open(URI.parse('command:' + id)); - assert.equal(lastCommand.id, id); - assert.equal(lastCommand.args.length, 0); + assert.equal(lastCommand!.id, id); + assert.equal(lastCommand!.args.length, 0); openerService.open(URI.parse('command:' + id).with({ query: '123' })); - assert.equal(lastCommand.id, id); - assert.equal(lastCommand.args.length, 1); - assert.equal(lastCommand.args[0], '123'); + assert.equal(lastCommand!.id, id); + assert.equal(lastCommand!.args.length, 1); + assert.equal(lastCommand!.args[0], '123'); openerService.open(URI.parse('command:' + id).with({ query: JSON.stringify([12, true]) })); - assert.equal(lastCommand.id, id); - assert.equal(lastCommand.args.length, 2); - assert.equal(lastCommand.args[0], 12); - assert.equal(lastCommand.args[1], true); + assert.equal(lastCommand!.id, id); + assert.equal(lastCommand!.args.length, 2); + assert.equal(lastCommand!.args[0], 12); + assert.equal(lastCommand!.args[1], true); }); }); diff --git a/src/vs/editor/test/browser/testCodeEditor.ts b/src/vs/editor/test/browser/testCodeEditor.ts index d0996a536fc..bf7ceae25a5 100644 --- a/src/vs/editor/test/browser/testCodeEditor.ts +++ b/src/vs/editor/test/browser/testCodeEditor.ts @@ -73,18 +73,18 @@ export interface TestCodeEditorCreationOptions extends editorOptions.IEditorOpti serviceCollection?: ServiceCollection; } -export function withTestCodeEditor(text: string | string[], options: TestCodeEditorCreationOptions, callback: (editor: TestCodeEditor, cursor: Cursor | undefined) => void): void { +export function withTestCodeEditor(text: string | string[] | null, options: TestCodeEditorCreationOptions, callback: (editor: TestCodeEditor, cursor: Cursor) => void): void { // create a model if necessary and remember it in order to dispose it. if (!options.model) { if (typeof text === 'string') { options.model = TextModel.createFromString(text); - } else { + } else if (text) { options.model = TextModel.createFromString(text.join('\n')); } } let editor = createTestCodeEditor(options); - callback(editor, editor.getCursor()); + callback(editor, editor.getCursor()!); editor.dispose(); } diff --git a/src/vs/editor/test/common/diff/diffComputer.test.ts b/src/vs/editor/test/common/diff/diffComputer.test.ts index a9812a63c35..24c32a8806d 100644 --- a/src/vs/editor/test/common/diff/diffComputer.test.ts +++ b/src/vs/editor/test/common/diff/diffComputer.test.ts @@ -6,7 +6,7 @@ import * as assert from 'assert'; import { DiffComputer } from 'vs/editor/common/diff/diffComputer'; import { IChange, ICharChange, ILineChange } from 'vs/editor/common/editorCommon'; -function extractCharChangeRepresentation(change: ICharChange, expectedChange: ICharChange): ICharChange { +function extractCharChangeRepresentation(change: ICharChange, expectedChange: ICharChange | null): ICharChange { let hasOriginal = expectedChange && expectedChange.originalStartLineNumber > 0; let hasModified = expectedChange && expectedChange.modifiedStartLineNumber > 0; return { @@ -23,9 +23,8 @@ function extractCharChangeRepresentation(change: ICharChange, expectedChange: IC } function extractLineChangeRepresentation(change: ILineChange, expectedChange: ILineChange): IChange | ILineChange { - let charChanges: ICharChange[]; if (change.charChanges) { - charChanges = []; + let charChanges: ICharChange[] = []; for (let i = 0; i < change.charChanges.length; i++) { charChanges.push( extractCharChangeRepresentation( @@ -34,13 +33,20 @@ function extractLineChangeRepresentation(change: ILineChange, expectedChange: IL ) ); } + return { + originalStartLineNumber: change.originalStartLineNumber, + originalEndLineNumber: change.originalEndLineNumber, + modifiedStartLineNumber: change.modifiedStartLineNumber, + modifiedEndLineNumber: change.modifiedEndLineNumber, + charChanges: charChanges + }; } return { originalStartLineNumber: change.originalStartLineNumber, originalEndLineNumber: change.originalEndLineNumber, modifiedStartLineNumber: change.modifiedStartLineNumber, modifiedEndLineNumber: change.modifiedEndLineNumber, - charChanges: charChanges + charChanges: undefined }; } diff --git a/src/vs/editor/test/common/model/editableTextModel.test.ts b/src/vs/editor/test/common/model/editableTextModel.test.ts index 056fd47c1a8..205da857f2b 100644 --- a/src/vs/editor/test/common/model/editableTextModel.test.ts +++ b/src/vs/editor/test/common/model/editableTextModel.test.ts @@ -1044,7 +1044,7 @@ suite('EditorModel - EditableTextModel.applyEdits', () => { let model = createEditableTextModelFromString('Hello\nWorld!'); assert.equal(model.getEOL(), '\n'); - let mirrorModel2 = new MirrorTextModel(null, model.getLinesContent(), model.getEOL(), model.getVersionId()); + let mirrorModel2 = new MirrorTextModel(null!, model.getLinesContent(), model.getEOL(), model.getVersionId()); let mirrorModel2PrevVersionId = model.getVersionId(); model.onDidChangeContent((e: IModelContentChangedEvent) => { diff --git a/src/vs/editor/test/common/model/intervalTree.test.ts b/src/vs/editor/test/common/model/intervalTree.test.ts index 4f67baf706a..b68bba081a1 100644 --- a/src/vs/editor/test/common/model/intervalTree.test.ts +++ b/src/vs/editor/test/common/model/intervalTree.test.ts @@ -74,8 +74,8 @@ suite('IntervalTree', () => { private _oracle: Oracle = new Oracle(); private _tree: IntervalTree = new IntervalTree(); private _lastNodeId = -1; - private _treeNodes: IntervalNode[] = []; - private _oracleNodes: Interval[] = []; + private _treeNodes: (IntervalNode | null)[] = []; + private _oracleNodes: (Interval | null)[] = []; public acceptOp(op: IOperation): void { @@ -84,28 +84,28 @@ suite('IntervalTree', () => { console.log(`insert: {${JSON.stringify(new Interval(op.begin, op.end))}}`); } let nodeId = (++this._lastNodeId); - this._treeNodes[nodeId] = new IntervalNode(null, op.begin, op.end); - this._tree.insert(this._treeNodes[nodeId]); + this._treeNodes[nodeId] = new IntervalNode(null!, op.begin, op.end); + this._tree.insert(this._treeNodes[nodeId]!); this._oracleNodes[nodeId] = this._oracle.insert(new Interval(op.begin, op.end)); } else if (op.type === 'delete') { if (PRINT_TREE) { console.log(`delete: {${JSON.stringify(this._oracleNodes[op.id])}}`); } - this._tree.delete(this._treeNodes[op.id]); - this._oracle.delete(this._oracleNodes[op.id]); + this._tree.delete(this._treeNodes[op.id]!); + this._oracle.delete(this._oracleNodes[op.id]!); this._treeNodes[op.id] = null; this._oracleNodes[op.id] = null; } else if (op.type === 'change') { - this._tree.delete(this._treeNodes[op.id]); - this._treeNodes[op.id].reset(0, op.begin, op.end, null); - this._tree.insert(this._treeNodes[op.id]); + this._tree.delete(this._treeNodes[op.id]!); + this._treeNodes[op.id]!.reset(0, op.begin, op.end, null!); + this._tree.insert(this._treeNodes[op.id]!); - this._oracle.delete(this._oracleNodes[op.id]); - this._oracleNodes[op.id].start = op.begin; - this._oracleNodes[op.id].end = op.end; - this._oracle.insert(this._oracleNodes[op.id]); + this._oracle.delete(this._oracleNodes[op.id]!); + this._oracleNodes[op.id]!.start = op.begin; + this._oracleNodes[op.id]!.end = op.end; + this._oracle.insert(this._oracleNodes[op.id]!); } else { let actualNodes = this._tree.intervalSearch(op.begin, op.end, 0, false, 0); @@ -489,7 +489,7 @@ suite('IntervalTree', () => { [19, 20] ]; data.forEach((int) => { - let node = new IntervalNode(null, int[0], int[1]); + let node = new IntervalNode(null!, int[0], int[1]); r.insert(node); }); return r; diff --git a/src/vs/editor/test/common/model/linesTextBuffer/linesTextBuffer.test.ts b/src/vs/editor/test/common/model/linesTextBuffer/linesTextBuffer.test.ts index 83866beea5f..c69b3b95dcb 100644 --- a/src/vs/editor/test/common/model/linesTextBuffer/linesTextBuffer.test.ts +++ b/src/vs/editor/test/common/model/linesTextBuffer/linesTextBuffer.test.ts @@ -11,7 +11,7 @@ import { createTextBufferFactory } from 'vs/editor/common/model/textModel'; suite('PieceTreeTextBuffer._getInverseEdits', () => { - function editOp(startLineNumber: number, startColumn: number, endLineNumber: number, endColumn: number, text: string[]): IValidatedEditOperation { + function editOp(startLineNumber: number, startColumn: number, endLineNumber: number, endColumn: number, text: string[] | null): IValidatedEditOperation { return { sortIndex: 0, identifier: null, @@ -262,7 +262,7 @@ suite('PieceTreeTextBuffer._getInverseEdits', () => { suite('PieceTreeTextBuffer._toSingleEditOperation', () => { - function editOp(startLineNumber: number, startColumn: number, endLineNumber: number, endColumn: number, rangeOffset: number, rangeLength: number, text: string[]): IValidatedEditOperation { + function editOp(startLineNumber: number, startColumn: number, endLineNumber: number, endColumn: number, rangeOffset: number, rangeLength: number, text: string[] | null): IValidatedEditOperation { return { sortIndex: 0, identifier: null, diff --git a/src/vs/editor/test/common/model/model.line.test.ts b/src/vs/editor/test/common/model/model.line.test.ts index e1016de828d..19379cd5c2f 100644 --- a/src/vs/editor/test/common/model/model.line.test.ts +++ b/src/vs/editor/test/common/model/model.line.test.ts @@ -74,7 +74,8 @@ class TestToken { this.color = color; } - public static toTokens(tokens: TestToken[]): Uint32Array { + public static toTokens(tokens: TestToken[]): Uint32Array; + public static toTokens(tokens: TestToken[] | null): Uint32Array | null { if (tokens === null) { return null; } @@ -659,7 +660,7 @@ suite('ModelLinesTokens', () => { test('updates tokens on insertion 10', () => { testLineEditTokens( '', - null, + null!, [{ startColumn: 1, endColumn: 1, diff --git a/src/vs/editor/test/common/model/model.modes.test.ts b/src/vs/editor/test/common/model/model.modes.test.ts index ccdd2f0ba08..3f2a4044f3e 100644 --- a/src/vs/editor/test/common/model/model.modes.test.ts +++ b/src/vs/editor/test/common/model/model.modes.test.ts @@ -26,15 +26,15 @@ suite('Editor Model - Model Modes 1', () => { const tokenizationSupport: modes.ITokenizationSupport = { getInitialState: () => NULL_STATE, - tokenize: undefined, + tokenize: undefined!, tokenize2: (line: string, state: modes.IState): TokenizationResult2 => { calledFor.push(line.charAt(0)); - return new TokenizationResult2(null, state); + return new TokenizationResult2(null!, state); } }; - let thisModel: TextModel | null = null; - let languageRegistration: IDisposable | null = null; + let thisModel: TextModel; + let languageRegistration: IDisposable; setup(() => { const TEXT = @@ -51,9 +51,7 @@ suite('Editor Model - Model Modes 1', () => { teardown(() => { thisModel.dispose(); - thisModel = null; languageRegistration.dispose(); - languageRegistration = null; calledFor = []; }); @@ -174,10 +172,10 @@ suite('Editor Model - Model Modes 2', () => { const tokenizationSupport: modes.ITokenizationSupport = { getInitialState: () => new ModelState2(''), - tokenize: undefined, + tokenize: undefined!, tokenize2: (line: string, state: modes.IState): TokenizationResult2 => { (state).prevLineContent = line; - return new TokenizationResult2(null, state); + return new TokenizationResult2(null!, state); } }; @@ -198,13 +196,13 @@ suite('Editor Model - Model Modes 2', () => { function statesEqual(model: TextModel, states: string[]): void { let i, len = states.length - 1; for (i = 0; i < len; i++) { - stateEqual(model._tokens._getState(i), states[i]); + stateEqual(model._tokens._getState(i)!, states[i]); } stateEqual((model)._tokens._lastState, states[len]); } - let thisModel: TextModel | null = null; - let languageRegistration: IDisposable | null = null; + let thisModel: TextModel; + let languageRegistration: IDisposable; setup(() => { const TEXT = @@ -220,9 +218,7 @@ suite('Editor Model - Model Modes 2', () => { teardown(() => { thisModel.dispose(); - thisModel = null; languageRegistration.dispose(); - languageRegistration = null; }); test('getTokensForInvalidLines one text insert', () => { diff --git a/src/vs/editor/test/common/model/modelDecorations.test.ts b/src/vs/editor/test/common/model/modelDecorations.test.ts index 2fba0dad772..f116b01ef5d 100644 --- a/src/vs/editor/test/common/model/modelDecorations.test.ts +++ b/src/vs/editor/test/common/model/modelDecorations.test.ts @@ -14,7 +14,7 @@ import { TextModel } from 'vs/editor/common/model/textModel'; interface ILightWeightDecoration2 { range: Range; - className: string; + className: string | null | undefined; } function modelHasDecorations(model: TextModel, decorations: ILightWeightDecoration2[]) { @@ -46,11 +46,11 @@ function addDecoration(model: TextModel, startLineNumber: number, startColumn: n return changeAccessor.addDecoration(new Range(startLineNumber, startColumn, endLineNumber, endColumn), { className: className }); - }); + })!; } function lineHasDecorations(model: TextModel, lineNumber: number, decorations: { start: number; end: number; className: string; }[]) { - let lineDecorations: Array<{ start: number; end: number; className: string; }> = []; + let lineDecorations: Array<{ start: number; end: number; className: string | null | undefined; }> = []; let decs = model.getLineDecorations(lineNumber); for (let i = 0, len = decs.length; i < len; i++) { lineDecorations.push({ @@ -97,7 +97,6 @@ suite('Editor Model - Model Decorations', () => { teardown(() => { thisModel.dispose(); - thisModel = null; }); test('single character decoration', () => { @@ -1141,8 +1140,8 @@ suite('deltaDecorations', () => { function readModelDecorations(model: TextModel, ids: string[]): ILightWeightDecoration[] { return ids.map((id) => { return { - range: model.getDecorationRange(id), - id: model.getDecorationOptions(id).className + range: model.getDecorationRange(id)!, + id: model.getDecorationOptions(id)!.className! }; }); } @@ -1294,7 +1293,7 @@ suite('deltaDecorations', () => { let actualDecoration = model.getDecorationOptions(ids[0]); - assert.deepEqual(actualDecoration.hoverMessage, { value: 'hello2' }); + assert.deepEqual(actualDecoration!.hoverMessage, { value: 'hello2' }); model.dispose(); }); @@ -1318,7 +1317,7 @@ suite('deltaDecorations', () => { ); }); model.changeDecorations((changeAccessor) => { - changeAccessor.removeDecoration(trackedRangeId); + changeAccessor.removeDecoration(trackedRangeId!); }); let ids = model.deltaDecorations([], [ diff --git a/src/vs/editor/test/common/model/modelEditOperation.test.ts b/src/vs/editor/test/common/model/modelEditOperation.test.ts index ec7fe521762..4340d6bbbeb 100644 --- a/src/vs/editor/test/common/model/modelEditOperation.test.ts +++ b/src/vs/editor/test/common/model/modelEditOperation.test.ts @@ -28,7 +28,6 @@ suite('Editor Model - Model Edit Operation', () => { teardown(() => { model.dispose(); - model = null; }); function createSingleEditOp(text: string, positionLineNumber: number, positionColumn: number, selectionLineNumber: number = positionLineNumber, selectionColumn: number = positionColumn): IIdentifiedSingleEditOperation { diff --git a/src/vs/editor/test/common/model/textModel.test.ts b/src/vs/editor/test/common/model/textModel.test.ts index 2f8f8e4b161..a6e4fa93c0f 100644 --- a/src/vs/editor/test/common/model/textModel.test.ts +++ b/src/vs/editor/test/common/model/textModel.test.ts @@ -26,7 +26,7 @@ function testGuessIndentation(defaultInsertSpaces: boolean, defaultTabSize: numb assert.equal(r.tabSize, expectedTabSize, msg); } -function assertGuess(expectedInsertSpaces: boolean, expectedTabSize: number, text: string[], msg?: string): void { +function assertGuess(expectedInsertSpaces: boolean | undefined, expectedTabSize: number | undefined, text: string[], msg?: string): void { if (typeof expectedInsertSpaces === 'undefined') { // cannot guess insertSpaces if (typeof expectedTabSize === 'undefined') { diff --git a/src/vs/editor/test/common/model/textModelSearch.test.ts b/src/vs/editor/test/common/model/textModelSearch.test.ts index f1d13c181e1..bf2822d6f73 100644 --- a/src/vs/editor/test/common/model/textModelSearch.test.ts +++ b/src/vs/editor/test/common/model/textModelSearch.test.ts @@ -17,7 +17,7 @@ suite('TextModelSearch', () => { const usualWordSeparators = getMapForWordSeparators(USUAL_WORD_SEPARATORS); - function assertFindMatch(actual: FindMatch, expectedRange: Range, expectedMatches: string[] | null = null): void { + function assertFindMatch(actual: FindMatch | null, expectedRange: Range, expectedMatches: string[] | null = null): void { assert.deepEqual(actual, new FindMatch(expectedRange, expectedMatches)); } @@ -46,7 +46,7 @@ suite('TextModelSearch', () => { } } - function assertFindMatches(text: string, searchString: string, isRegex: boolean, matchCase: boolean, wordSeparators: string, _expected: [number, number, number, number][]): void { + function assertFindMatches(text: string, searchString: string, isRegex: boolean, matchCase: boolean, wordSeparators: string | null, _expected: [number, number, number, number][]): void { let expectedRanges = _expected.map(entry => new Range(entry[0], entry[1], entry[2], entry[3])); let expectedMatches = expectedRanges.map(entry => new FindMatch(entry, null)); let searchParams = new SearchParams(searchString, isRegex, matchCase, wordSeparators); @@ -387,16 +387,16 @@ suite('TextModelSearch', () => { let actual = TextModelSearch.findNextMatch(model, searchParams, new Position(1, 1), false); assertFindMatch(actual, new Range(1, 1, 1, 5)); - actual = TextModelSearch.findNextMatch(model, searchParams, actual.range.getEndPosition(), false); + actual = TextModelSearch.findNextMatch(model, searchParams, actual!.range.getEndPosition(), false); assertFindMatch(actual, new Range(1, 6, 1, 10)); actual = TextModelSearch.findNextMatch(model, searchParams, new Position(1, 3), false); assertFindMatch(actual, new Range(1, 6, 1, 10)); - actual = TextModelSearch.findNextMatch(model, searchParams, actual.range.getEndPosition(), false); + actual = TextModelSearch.findNextMatch(model, searchParams, actual!.range.getEndPosition(), false); assertFindMatch(actual, new Range(2, 1, 2, 5)); - actual = TextModelSearch.findNextMatch(model, searchParams, actual.range.getEndPosition(), false); + actual = TextModelSearch.findNextMatch(model, searchParams, actual!.range.getEndPosition(), false); assertFindMatch(actual, new Range(1, 1, 1, 5)); model.dispose(); @@ -410,13 +410,13 @@ suite('TextModelSearch', () => { let actual = TextModelSearch.findNextMatch(model, searchParams, new Position(1, 1), false); assertFindMatch(actual, new Range(1, 1, 1, 5)); - actual = TextModelSearch.findNextMatch(model, searchParams, actual.range.getEndPosition(), false); + actual = TextModelSearch.findNextMatch(model, searchParams, actual!.range.getEndPosition(), false); assertFindMatch(actual, new Range(2, 1, 2, 5)); actual = TextModelSearch.findNextMatch(model, searchParams, new Position(1, 3), false); assertFindMatch(actual, new Range(2, 1, 2, 5)); - actual = TextModelSearch.findNextMatch(model, searchParams, actual.range.getEndPosition(), false); + actual = TextModelSearch.findNextMatch(model, searchParams, actual!.range.getEndPosition(), false); assertFindMatch(actual, new Range(1, 1, 1, 5)); model.dispose(); @@ -430,13 +430,13 @@ suite('TextModelSearch', () => { let actual = TextModelSearch.findNextMatch(model, searchParams, new Position(1, 1), false); assertFindMatch(actual, new Range(1, 1, 1, 5)); - actual = TextModelSearch.findNextMatch(model, searchParams, actual.range.getEndPosition(), false); + actual = TextModelSearch.findNextMatch(model, searchParams, actual!.range.getEndPosition(), false); assertFindMatch(actual, new Range(2, 1, 2, 5)); actual = TextModelSearch.findNextMatch(model, searchParams, new Position(1, 3), false); assertFindMatch(actual, new Range(2, 1, 2, 5)); - actual = TextModelSearch.findNextMatch(model, searchParams, actual.range.getEndPosition(), false); + actual = TextModelSearch.findNextMatch(model, searchParams, actual!.range.getEndPosition(), false); assertFindMatch(actual, new Range(1, 1, 1, 5)); model.dispose(); @@ -450,7 +450,7 @@ suite('TextModelSearch', () => { let actual = TextModelSearch.findNextMatch(model, searchParams, new Position(1, 1), false); assertFindMatch(actual, new Range(1, 1, 2, 5)); - actual = TextModelSearch.findNextMatch(model, searchParams, actual.range.getEndPosition(), false); + actual = TextModelSearch.findNextMatch(model, searchParams, actual!.range.getEndPosition(), false); assertFindMatch(actual, new Range(3, 1, 4, 5)); actual = TextModelSearch.findNextMatch(model, searchParams, new Position(2, 1), false); @@ -470,10 +470,10 @@ suite('TextModelSearch', () => { actual = TextModelSearch.findNextMatch(model, searchParams, new Position(1, 4), false); assertFindMatch(actual, new Range(1, 10, 1, 14)); - actual = TextModelSearch.findNextMatch(model, searchParams, actual.range.getEndPosition(), false); + actual = TextModelSearch.findNextMatch(model, searchParams, actual!.range.getEndPosition(), false); assertFindMatch(actual, new Range(2, 5, 2, 9)); - actual = TextModelSearch.findNextMatch(model, searchParams, actual.range.getEndPosition(), false); + actual = TextModelSearch.findNextMatch(model, searchParams, actual!.range.getEndPosition(), false); assertFindMatch(actual, new Range(1, 10, 1, 14)); model.dispose(); @@ -588,26 +588,25 @@ suite('TextModelSearch', () => { model.dispose(); }); - function assertParseSearchResult(searchString: string, isRegex: boolean, matchCase: boolean, wordSeparators: string, expected: SearchData): void { + function assertParseSearchResult(searchString: string, isRegex: boolean, matchCase: boolean, wordSeparators: string | null, expected: SearchData | null): void { let searchParams = new SearchParams(searchString, isRegex, matchCase, wordSeparators); let actual = searchParams.parseSearchRequest(); if (expected === null) { assert.ok(actual === null); } else { - assert.deepEqual(actual.regex, expected.regex); - assert.deepEqual(actual.simpleSearch, expected.simpleSearch); + assert.deepEqual(actual!.regex, expected.regex); + assert.deepEqual(actual!.simpleSearch, expected.simpleSearch); if (wordSeparators) { - assert.ok(actual.wordSeparators !== null); + assert.ok(actual!.wordSeparators !== null); } else { - assert.ok(actual.wordSeparators === null); + assert.ok(actual!.wordSeparators === null); } } } test('parseSearchRequest invalid', () => { assertParseSearchResult('', true, true, USUAL_WORD_SEPARATORS, null); - assertParseSearchResult(null, true, true, USUAL_WORD_SEPARATORS, null); assertParseSearchResult('(', true, false, null, null); }); diff --git a/src/vs/editor/test/common/model/textModelWithTokens.test.ts b/src/vs/editor/test/common/model/textModelWithTokens.test.ts index a8aea6f7540..74d93190439 100644 --- a/src/vs/editor/test/common/model/textModelWithTokens.test.ts +++ b/src/vs/editor/test/common/model/textModelWithTokens.test.ts @@ -19,7 +19,7 @@ import { ViewLineToken } from 'vs/editor/test/common/core/viewLineToken'; suite('TextModelWithTokens', () => { function testBrackets(contents: string[], brackets: CharacterPair[]): void { - function toRelaxedFoundBracket(a: IFoundBracket) { + function toRelaxedFoundBracket(a: IFoundBracket | null) { if (!a) { return null; } @@ -158,7 +158,7 @@ suite('TextModelWithTokens - bracket matching', () => { } const languageIdentifier = new LanguageIdentifier('bracketMode1', LanguageId.PlainText); - let registration: IDisposable | null = null; + let registration: IDisposable; setup(() => { registration = LanguageConfigurationRegistry.register(languageIdentifier, { @@ -172,7 +172,6 @@ suite('TextModelWithTokens - bracket matching', () => { teardown(() => { registration.dispose(); - registration = null; }); test('bracket matching 1', () => { @@ -293,7 +292,7 @@ suite('TextModelWithTokens regression tests', () => { const tokenizationSupport: ITokenizationSupport = { getInitialState: () => NULL_STATE, - tokenize: undefined, + tokenize: undefined!, tokenize2: (line, state) => { let myId = ++_tokenId; let tokens = new Uint32Array(2); @@ -397,7 +396,7 @@ suite('TextModelWithTokens regression tests', () => { const tokenizationSupport: ITokenizationSupport = { getInitialState: () => NULL_STATE, - tokenize: undefined, + tokenize: undefined!, tokenize2: (line, state) => { let tokens = new Uint32Array(2); tokens[0] = 0; diff --git a/src/vs/editor/test/common/modes/languageSelector.test.ts b/src/vs/editor/test/common/modes/languageSelector.test.ts index 8d43170b22c..5ae99749ad5 100644 --- a/src/vs/editor/test/common/modes/languageSelector.test.ts +++ b/src/vs/editor/test/common/modes/languageSelector.test.ts @@ -16,8 +16,8 @@ suite('LanguageSelector', function () { test('score, invalid selector', function () { assert.equal(score({}, model.uri, model.language, true), 0); - assert.equal(score(undefined, model.uri, model.language, true), 0); - assert.equal(score(null, model.uri, model.language, true), 0); + assert.equal(score(undefined!, model.uri, model.language, true), 0); + assert.equal(score(null!, model.uri, model.language, true), 0); assert.equal(score('', model.uri, model.language, true), 0); }); diff --git a/src/vs/editor/test/common/modes/supports/electricCharacter.test.ts b/src/vs/editor/test/common/modes/supports/electricCharacter.test.ts index bdd639ff6e2..6035379e05a 100644 --- a/src/vs/editor/test/common/modes/supports/electricCharacter.test.ts +++ b/src/vs/editor/test/common/modes/supports/electricCharacter.test.ts @@ -12,7 +12,7 @@ import { TokenText, createFakeScopedLineTokens } from 'vs/editor/test/common/mod const fakeLanguageIdentifier = new LanguageIdentifier('test', 3); suite('Editor Modes - Auto Indentation', () => { - function _testOnElectricCharacter(electricCharacterSupport: BracketElectricCharacterSupport, line: TokenText[], character: string, offset: number): IElectricAction { + function _testOnElectricCharacter(electricCharacterSupport: BracketElectricCharacterSupport, line: TokenText[], character: string, offset: number): IElectricAction | null { return electricCharacterSupport.onElectricCharacter(character, createFakeScopedLineTokens(line), offset); } diff --git a/src/vs/editor/test/common/modes/supports/onEnter.test.ts b/src/vs/editor/test/common/modes/supports/onEnter.test.ts index bf54e82cc82..8e8a0474d12 100644 --- a/src/vs/editor/test/common/modes/supports/onEnter.test.ts +++ b/src/vs/editor/test/common/modes/supports/onEnter.test.ts @@ -22,7 +22,7 @@ suite('OnEnter', () => { if (expected === IndentAction.None) { assert.equal(actual, null); } else { - assert.equal(actual.indentAction, expected); + assert.equal(actual!.indentAction, expected); } }; @@ -50,18 +50,18 @@ suite('OnEnter', () => { let support = new OnEnterSupport({ regExpRules: javascriptOnEnterRules }); - let testIndentAction = (oneLineAboveText: string, beforeText: string, afterText: string, expectedIndentAction: IndentAction, expectedAppendText: string, removeText: number = 0) => { + let testIndentAction = (oneLineAboveText: string, beforeText: string, afterText: string, expectedIndentAction: IndentAction | null, expectedAppendText: string | null, removeText: number = 0) => { let actual = support.onEnter(oneLineAboveText, beforeText, afterText); if (expectedIndentAction === null) { assert.equal(actual, null, 'isNull:' + beforeText); } else { assert.equal(actual !== null, true, 'isNotNull:' + beforeText); - assert.equal(actual.indentAction, expectedIndentAction, 'indentAction:' + beforeText); + assert.equal(actual!.indentAction, expectedIndentAction, 'indentAction:' + beforeText); if (expectedAppendText !== null) { - assert.equal(actual.appendText, expectedAppendText, 'appendText:' + beforeText); + assert.equal(actual!.appendText, expectedAppendText, 'appendText:' + beforeText); } if (removeText !== 0) { - assert.equal(actual.removeText, removeText, 'removeText:' + beforeText); + assert.equal(actual!.removeText, removeText, 'removeText:' + beforeText); } } }; diff --git a/src/vs/editor/test/common/modes/supports/richEditBrackets.test.ts b/src/vs/editor/test/common/modes/supports/richEditBrackets.test.ts index a1fc97b8228..3e16436412a 100644 --- a/src/vs/editor/test/common/modes/supports/richEditBrackets.test.ts +++ b/src/vs/editor/test/common/modes/supports/richEditBrackets.test.ts @@ -9,60 +9,60 @@ import { BracketsUtils } from 'vs/editor/common/modes/supports/richEditBrackets' suite('richEditBrackets', () => { - function findPrevBracketInToken(reversedBracketRegex: RegExp, lineText: string, currentTokenStart: number, currentTokenEnd: number): Range { + function findPrevBracketInToken(reversedBracketRegex: RegExp, lineText: string, currentTokenStart: number, currentTokenEnd: number): Range | null { return BracketsUtils.findPrevBracketInToken(reversedBracketRegex, 1, lineText, currentTokenStart, currentTokenEnd); } - function findNextBracketInToken(forwardBracketRegex: RegExp, lineText: string, currentTokenStart: number, currentTokenEnd: number): Range { + function findNextBracketInToken(forwardBracketRegex: RegExp, lineText: string, currentTokenStart: number, currentTokenEnd: number): Range | null { return BracketsUtils.findNextBracketInToken(forwardBracketRegex, 1, lineText, currentTokenStart, currentTokenEnd); } test('findPrevBracketInToken one char 1', () => { let result = findPrevBracketInToken(/(\{)|(\})/i, '{', 0, 1); - assert.equal(result.startColumn, 1); - assert.equal(result.endColumn, 2); + assert.equal(result!.startColumn, 1); + assert.equal(result!.endColumn, 2); }); test('findPrevBracketInToken one char 2', () => { let result = findPrevBracketInToken(/(\{)|(\})/i, '{{', 0, 1); - assert.equal(result.startColumn, 1); - assert.equal(result.endColumn, 2); + assert.equal(result!.startColumn, 1); + assert.equal(result!.endColumn, 2); }); test('findPrevBracketInToken one char 3', () => { let result = findPrevBracketInToken(/(\{)|(\})/i, '{hello world!', 0, 13); - assert.equal(result.startColumn, 1); - assert.equal(result.endColumn, 2); + assert.equal(result!.startColumn, 1); + assert.equal(result!.endColumn, 2); }); test('findPrevBracketInToken more chars 1', () => { let result = findPrevBracketInToken(/(olleh)/i, 'hello world!', 0, 12); - assert.equal(result.startColumn, 1); - assert.equal(result.endColumn, 6); + assert.equal(result!.startColumn, 1); + assert.equal(result!.endColumn, 6); }); test('findPrevBracketInToken more chars 2', () => { let result = findPrevBracketInToken(/(olleh)/i, 'hello world!', 0, 5); - assert.equal(result.startColumn, 1); - assert.equal(result.endColumn, 6); + assert.equal(result!.startColumn, 1); + assert.equal(result!.endColumn, 6); }); test('findPrevBracketInToken more chars 3', () => { let result = findPrevBracketInToken(/(olleh)/i, ' hello world!', 0, 6); - assert.equal(result.startColumn, 2); - assert.equal(result.endColumn, 7); + assert.equal(result!.startColumn, 2); + assert.equal(result!.endColumn, 7); }); test('findNextBracketInToken one char', () => { let result = findNextBracketInToken(/(\{)|(\})/i, '{', 0, 1); - assert.equal(result.startColumn, 1); - assert.equal(result.endColumn, 2); + assert.equal(result!.startColumn, 1); + assert.equal(result!.endColumn, 2); }); test('findNextBracketInToken more chars', () => { let result = findNextBracketInToken(/(world)/i, 'hello world!', 0, 12); - assert.equal(result.startColumn, 7); - assert.equal(result.endColumn, 12); + assert.equal(result!.startColumn, 7); + assert.equal(result!.endColumn, 12); }); test('findNextBracketInToken with emoty result', () => { @@ -72,8 +72,8 @@ suite('richEditBrackets', () => { test('issue #3894: [Handlebars] Curly braces edit issues', () => { let result = findPrevBracketInToken(/(\-\-!<)|(>\-\-)|(\{\{)|(\}\})/i, '{{asd}}', 0, 2); - assert.equal(result.startColumn, 1); - assert.equal(result.endColumn, 3); + assert.equal(result!.startColumn, 1); + assert.equal(result!.endColumn, 3); }); }); \ No newline at end of file diff --git a/src/vs/editor/test/common/modes/textToHtmlTokenizer.test.ts b/src/vs/editor/test/common/modes/textToHtmlTokenizer.test.ts index 21e04e6d703..d7efc51bf89 100644 --- a/src/vs/editor/test/common/modes/textToHtmlTokenizer.test.ts +++ b/src/vs/editor/test/common/modes/textToHtmlTokenizer.test.ts @@ -102,7 +102,7 @@ suite('Editor Modes - textToHtmlTokenizer', () => { ) >>> 0 ) ]); - const colorMap = [null, '#000000', '#ffffff', '#ff0000', '#00ff00', '#0000ff']; + const colorMap = [null!, '#000000', '#ffffff', '#ff0000', '#00ff00', '#0000ff']; assert.equal( tokenizeLineToHTML(text, lineTokens, colorMap, 0, 17, 4), @@ -203,8 +203,8 @@ class Mode extends MockMode { constructor() { super(Mode._id); this._register(TokenizationRegistry.register(this.getId(), { - getInitialState: (): IState => null, - tokenize: undefined, + getInitialState: (): IState => null!, + tokenize: undefined!, tokenize2: (line: string, state: IState): TokenizationResult2 => { let tokensArr: number[] = []; let prevColor: ColorId = -1; @@ -223,7 +223,7 @@ class Mode extends MockMode { for (let i = 0; i < tokens.length; i++) { tokens[i] = tokensArr[i]; } - return new TokenizationResult2(tokens, null); + return new TokenizationResult2(tokens, null!); } })); } diff --git a/src/vs/editor/test/common/services/editorSimpleWorker.test.ts b/src/vs/editor/test/common/services/editorSimpleWorker.test.ts index 0d7ef7e4f86..43726f59e04 100644 --- a/src/vs/editor/test/common/services/editorSimpleWorker.test.ts +++ b/src/vs/editor/test/common/services/editorSimpleWorker.test.ts @@ -162,6 +162,10 @@ suite('EditorSimpleWorker', () => { ]); return worker.textualSuggest(model.uri.toString(), { lineNumber: 2, column: 2 }, '[a-z]+', 'img').then((result) => { + if (!result) { + assert.ok(false); + return; + } const { suggestions } = result; assert.equal(suggestions.length, 1); assert.equal(suggestions[0].label, 'foobar'); diff --git a/src/vs/editor/test/common/services/modelService.test.ts b/src/vs/editor/test/common/services/modelService.test.ts index 56a7575d4fb..3ccecd4f59a 100644 --- a/src/vs/editor/test/common/services/modelService.test.ts +++ b/src/vs/editor/test/common/services/modelService.test.ts @@ -313,7 +313,7 @@ function assertComputeEdits(lines1: string[], lines2: string[]): void { // console.log(`took ${Date.now() - start} ms.`); // apply edits - model.pushEditOperations(null, edits, null); + model.pushEditOperations([], edits, null); assert.equal(model.getValue(), lines2.join('\n')); } diff --git a/src/vs/editor/test/common/view/minimapCharRenderer.test.ts b/src/vs/editor/test/common/view/minimapCharRenderer.test.ts index f13b962a4d3..b59c2bf415d 100644 --- a/src/vs/editor/test/common/view/minimapCharRenderer.test.ts +++ b/src/vs/editor/test/common/view/minimapCharRenderer.test.ts @@ -11,7 +11,7 @@ import { MinimapCharRendererFactory } from 'vs/editor/test/common/view/minimapCh suite('MinimapCharRenderer', () => { - let sampleData: Uint8ClampedArray = null; + let sampleData: Uint8ClampedArray | null = null; suiteSetup(() => { sampleData = new Uint8ClampedArray(Constants.SAMPLED_CHAR_HEIGHT * Constants.SAMPLED_CHAR_WIDTH * Constants.RGBA_CHANNELS_CNT * Constants.CHAR_COUNT); @@ -22,10 +22,9 @@ suite('MinimapCharRenderer', () => { }); setup(() => { - for (let i = 0; i < sampleData.length; i++) { - sampleData[i] = 0; + for (let i = 0; i < sampleData!.length; i++) { + sampleData![i] = 0; } - }); const sampleD = [ @@ -57,7 +56,7 @@ suite('MinimapCharRenderer', () => { let outputOffset = globalOutputOffset; for (let j = 0; j < Constants.SAMPLED_CHAR_WIDTH; j++) { for (let channel = 0; channel < Constants.RGBA_CHANNELS_CNT; channel++) { - sampleData[outputOffset] = data[inputOffset]; + sampleData![outputOffset] = data[inputOffset]; inputOffset++; outputOffset++; } @@ -76,7 +75,7 @@ suite('MinimapCharRenderer', () => { test('letter d @ 2x', () => { setSampleData('d'.charCodeAt(0), sampleD); - let renderer = MinimapCharRendererFactory.create(sampleData); + let renderer = MinimapCharRendererFactory.create(sampleData!); let background = new RGBA8(0, 0, 0, 255); let color = new RGBA8(255, 255, 255, 255); @@ -132,7 +131,7 @@ suite('MinimapCharRenderer', () => { test('letter d @ 1x', () => { setSampleData('d'.charCodeAt(0), sampleD); - let renderer = MinimapCharRendererFactory.create(sampleData); + let renderer = MinimapCharRendererFactory.create(sampleData!); let background = new RGBA8(0, 0, 0, 255); let color = new RGBA8(255, 255, 255, 255); diff --git a/src/vs/editor/test/common/viewLayout/linesLayout.test.ts b/src/vs/editor/test/common/viewLayout/linesLayout.test.ts index 412eca8a151..dceeaab37b0 100644 --- a/src/vs/editor/test/common/viewLayout/linesLayout.test.ts +++ b/src/vs/editor/test/common/viewLayout/linesLayout.test.ts @@ -563,13 +563,13 @@ suite('Editor ViewLayout - LinesLayout', () => { assert.equal(whitespace, null); whitespace = linesLayout.getWhitespaceAtVerticalOffset(60); - assert.equal(whitespace.id, a); + assert.equal(whitespace!.id, a); whitespace = linesLayout.getWhitespaceAtVerticalOffset(61); - assert.equal(whitespace.id, a); + assert.equal(whitespace!.id, a); whitespace = linesLayout.getWhitespaceAtVerticalOffset(159); - assert.equal(whitespace.id, a); + assert.equal(whitespace!.id, a); whitespace = linesLayout.getWhitespaceAtVerticalOffset(160); assert.equal(whitespace, null); @@ -581,13 +581,13 @@ suite('Editor ViewLayout - LinesLayout', () => { assert.equal(whitespace, null); whitespace = linesLayout.getWhitespaceAtVerticalOffset(170); - assert.equal(whitespace.id, b); + assert.equal(whitespace!.id, b); whitespace = linesLayout.getWhitespaceAtVerticalOffset(171); - assert.equal(whitespace.id, b); + assert.equal(whitespace!.id, b); whitespace = linesLayout.getWhitespaceAtVerticalOffset(219); - assert.equal(whitespace.id, b); + assert.equal(whitespace!.id, b); whitespace = linesLayout.getWhitespaceAtVerticalOffset(220); assert.equal(whitespace, null); diff --git a/src/vs/editor/test/common/viewModel/splitLinesCollection.test.ts b/src/vs/editor/test/common/viewModel/splitLinesCollection.test.ts index 7e581361cfb..2c194c473f1 100644 --- a/src/vs/editor/test/common/viewModel/splitLinesCollection.test.ts +++ b/src/vs/editor/test/common/viewModel/splitLinesCollection.test.ts @@ -329,7 +329,7 @@ suite('SplitLinesCollection', () => { let _lineIndex = 0; const tokenizationSupport: modes.ITokenizationSupport = { getInitialState: () => NULL_STATE, - tokenize: undefined, + tokenize: undefined!, tokenize2: (line: string, state: modes.IState): TokenizationResult2 => { let tokens = _tokens[_lineIndex++]; @@ -351,9 +351,9 @@ suite('SplitLinesCollection', () => { }); teardown(() => { - model.dispose(); + model!.dispose(); model = null; - languageRegistration.dispose(); + languageRegistration!.dispose(); languageRegistration = null; }); @@ -381,18 +381,22 @@ suite('SplitLinesCollection', () => { tokens: ITestViewLineToken[]; } - function assertMinimapLineRenderingData(actual: ViewLineData, expected: ITestMinimapLineRenderingData): void { + function assertMinimapLineRenderingData(actual: ViewLineData, expected: ITestMinimapLineRenderingData | null): void { if (actual === null && expected === null) { assert.ok(true); return; } + if (expected === null) { + assert.ok(false); + return; + } assert.equal(actual.content, expected.content); assert.equal(actual.minColumn, expected.minColumn); assert.equal(actual.maxColumn, expected.maxColumn); assertViewLineTokens(actual.tokens, expected.tokens); } - function assertMinimapLinesRenderingData(actual: ViewLineData[], expected: ITestMinimapLineRenderingData[]): void { + function assertMinimapLinesRenderingData(actual: ViewLineData[], expected: (ITestMinimapLineRenderingData | null)[]): void { assert.equal(actual.length, expected.length); for (let i = 0; i < expected.length; i++) { assertMinimapLineRenderingData(actual[i], expected[i]); @@ -406,7 +410,7 @@ suite('SplitLinesCollection', () => { let count = end - start + 1; for (let desired = Math.pow(2, count) - 1; desired >= 0; desired--) { let needed: boolean[] = []; - let expected: ITestMinimapLineRenderingData[] = []; + let expected: (ITestMinimapLineRenderingData | null)[] = []; for (let i = 0; i < count; i++) { needed[i] = (desired & (1 << i)) ? true : false; expected[i] = (needed[i] ? all[start - 1 + i] : null); @@ -421,7 +425,7 @@ suite('SplitLinesCollection', () => { } test('getViewLinesData - no wrapping', () => { - withSplitLinesCollection(model, 'off', 0, (splitLinesCollection) => { + withSplitLinesCollection(model!, 'off', 0, (splitLinesCollection) => { assert.equal(splitLinesCollection.getViewLineCount(), 8); assert.equal(splitLinesCollection.modelPositionIsVisible(1, 1), true); assert.equal(splitLinesCollection.modelPositionIsVisible(2, 1), true); @@ -555,7 +559,7 @@ suite('SplitLinesCollection', () => { }); test('getViewLinesData - with wrapping', () => { - withSplitLinesCollection(model, 'wordWrapColumn', 30, (splitLinesCollection) => { + withSplitLinesCollection(model!, 'wordWrapColumn', 30, (splitLinesCollection) => { assert.equal(splitLinesCollection.getViewLineCount(), 12); assert.equal(splitLinesCollection.modelPositionIsVisible(1, 1), true); assert.equal(splitLinesCollection.modelPositionIsVisible(2, 1), true); @@ -774,7 +778,7 @@ function createLineMapping(breakingLengths: number[], wrappedLinesPrefix: string function createModel(text: string): ISimpleModel { return { getLineTokens: (lineNumber: number) => { - return null; + return null!; }, getLineContent: (lineNumber: number) => { return text; diff --git a/src/vs/monaco.d.ts b/src/vs/monaco.d.ts index 44b859b748a..086d5a9c0ed 100644 --- a/src/vs/monaco.d.ts +++ b/src/vs/monaco.d.ts @@ -490,7 +490,7 @@ declare namespace monaco { /** * Test if position `a` equals position `b` */ - static equals(a: IPosition, b: IPosition): boolean; + static equals(a: IPosition | null, b: IPosition | null): boolean; /** * Test if this position is before other position. * If the two positions are equal, the result will be false. diff --git a/src/vs/platform/configuration/common/configuration.ts b/src/vs/platform/configuration/common/configuration.ts index 340fbea2a9a..8cc65abc4f7 100644 --- a/src/vs/platform/configuration/common/configuration.ts +++ b/src/vs/platform/configuration/common/configuration.ts @@ -24,7 +24,7 @@ export function isConfigurationOverrides(thing: any): thing is IConfigurationOve export interface IConfigurationOverrides { overrideIdentifier?: string | null; - resource?: URI; + resource?: URI | null; } export const enum ConfigurationTarget { diff --git a/src/vs/platform/configuration/common/configurationModels.ts b/src/vs/platform/configuration/common/configurationModels.ts index e22cf70f63b..82b620eb781 100644 --- a/src/vs/platform/configuration/common/configurationModels.ts +++ b/src/vs/platform/configuration/common/configurationModels.ts @@ -447,7 +447,7 @@ export class Configuration { return folderConsolidatedConfiguration; } - private getFolderConfigurationModelForResource(resource: URI | undefined, workspace: Workspace | null): ConfigurationModel | null { + private getFolderConfigurationModelForResource(resource: URI | null | undefined, workspace: Workspace | null): ConfigurationModel | null { if (workspace && resource) { const root = workspace.getFolder(resource); if (root) {