From b72fede474acb65694bf352afc73cb106168fc96 Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Mon, 15 Oct 2018 17:24:54 +0200 Subject: [PATCH] strict null checks (#60565) --- src/tsconfig.strictNullChecks.json | 9 +++++++++ src/vs/editor/browser/editorBrowser.ts | 8 ++++++-- src/vs/editor/browser/view/viewController.ts | 6 +++--- .../editor/browser/view/viewOutgoingEvents.ts | 14 ++++++++------ .../editor/browser/widget/codeEditorWidget.ts | 8 ++++---- src/vs/editor/contrib/codeAction/codeAction.ts | 2 +- .../contrib/goToDefinition/clickLinkGesture.ts | 2 +- .../contrib/goToDefinition/goToDefinition.ts | 4 ++-- src/vs/editor/contrib/links/links.ts | 6 +++--- .../contrib/message/messageController.ts | 4 +++- .../parameterHints/provideSignatureHelp.ts | 2 +- .../test/browser/controller/imeTester.ts | 2 +- .../editor/test/browser/editorTestServices.ts | 6 +++--- .../test/browser/view/minimapFontCreator.ts | 2 +- .../common/model/editableTextModelTestUtils.ts | 4 ++-- .../test/common/viewModel/testViewModel.ts | 2 +- src/vs/monaco.d.ts | 9 +++++++-- .../platform/contextkey/common/contextkey.ts | 2 +- .../test/common/mockKeybindingService.ts | 18 +++++++++--------- src/vs/workbench/common/resources.ts | 4 ++-- .../electron-browser/selectionClipboard.ts | 4 ++-- .../textMate/inspectTMScopes.ts | 14 +++++++------- .../mode/common/workbenchModeService.ts | 2 +- 23 files changed, 78 insertions(+), 56 deletions(-) diff --git a/src/tsconfig.strictNullChecks.json b/src/tsconfig.strictNullChecks.json index bc56ceaf099..6a2ff5c0531 100644 --- a/src/tsconfig.strictNullChecks.json +++ b/src/tsconfig.strictNullChecks.json @@ -271,6 +271,7 @@ "./vs/editor/contrib/caretOperations/moveCaretCommand.ts", "./vs/editor/contrib/caretOperations/transpose.ts", "./vs/editor/contrib/clipboard/clipboard.ts", + "./vs/editor/contrib/codeAction/codeAction.ts", "./vs/editor/contrib/codeAction/codeActionTrigger.ts", "./vs/editor/contrib/colorPicker/color.ts", "./vs/editor/contrib/colorPicker/colorPickerModel.ts", @@ -300,6 +301,7 @@ "./vs/editor/contrib/folding/test/foldingModel.test.ts", "./vs/editor/contrib/fontZoom/fontZoom.ts", "./vs/editor/contrib/goToDefinition/clickLinkGesture.ts", + "./vs/editor/contrib/goToDefinition/goToDefinition.ts", "./vs/editor/contrib/hover/getHover.ts", "./vs/editor/contrib/hover/hoverOperation.ts", "./vs/editor/contrib/hover/hoverWidgets.ts", @@ -310,6 +312,8 @@ "./vs/editor/contrib/linesOperations/sortLinesCommand.ts", "./vs/editor/contrib/links/getLinks.ts", "./vs/editor/contrib/links/links.ts", + "./vs/editor/contrib/message/messageController.ts", + "./vs/editor/contrib/parameterHints/provideSignatureHelp.ts", "./vs/editor/contrib/quickOpen/quickOpen.ts", "./vs/editor/contrib/toggleTabFocusMode/toggleTabFocusMode.ts", "./vs/editor/contrib/wordHighlighter/wordHighlighter.ts", @@ -327,12 +331,16 @@ "./vs/editor/standalone/common/monarch/monarchTypes.ts", "./vs/editor/standalone/common/standaloneThemeService.ts", "./vs/editor/standalone/common/themes.ts", + "./vs/editor/test/browser/controller/imeTester.ts", + "./vs/editor/test/browser/editorTestServices.ts", + "./vs/editor/test/browser/view/minimapFontCreator.ts", "./vs/editor/test/common/commentMode.ts", "./vs/editor/test/common/core/viewLineToken.ts", "./vs/editor/test/common/editorTestUtils.ts", "./vs/editor/test/common/mocks/mockMode.ts", "./vs/editor/test/common/mocks/testConfiguration.ts", "./vs/editor/test/common/model/benchmark/benchmarkUtils.ts", + "./vs/editor/test/common/model/editableTextModelTestUtils.ts", "./vs/editor/test/common/modes/supports/javascriptOnEnterRules.ts", "./vs/editor/test/common/modesTestUtils.ts", "./vs/editor/test/common/view/minimapCharRendererFactory.ts", @@ -465,6 +473,7 @@ "./vs/workbench/services/keybinding/common/macLinuxFallbackKeyboardMapper.ts", "./vs/workbench/services/keybinding/common/macLinuxKeyboardMapper.ts", "./vs/workbench/services/keybinding/common/windowsKeyboardMapper.ts", + "./vs/workbench/services/mode/common/workbenchModeService.ts", "./vs/workbench/services/panel/common/panelService.ts", "./vs/workbench/services/scm/common/scm.ts", "./vs/workbench/services/scm/common/scmService.ts", diff --git a/src/vs/editor/browser/editorBrowser.ts b/src/vs/editor/browser/editorBrowser.ts index 2e9686334da..2d919f84ff8 100644 --- a/src/vs/editor/browser/editorBrowser.ts +++ b/src/vs/editor/browser/editorBrowser.ts @@ -299,6 +299,10 @@ export interface IMouseTarget { * A mouse event originating from the editor. */ export interface IEditorMouseEvent { + readonly event: IMouseEvent; + readonly target: IMouseTarget; +} +export interface IPartialEditorMouseEvent { readonly event: IMouseEvent; readonly target: IMouseTarget | null; } @@ -441,7 +445,7 @@ export interface ICodeEditor extends editorCommon.IEditor { * @internal * @event */ - onMouseDrop(listener: (e: IEditorMouseEvent) => void): IDisposable; + onMouseDrop(listener: (e: IPartialEditorMouseEvent) => void): IDisposable; /** * An event emitted on a "contextmenu". * @event @@ -456,7 +460,7 @@ export interface ICodeEditor extends editorCommon.IEditor { * An event emitted on a "mouseleave". * @event */ - onMouseLeave(listener: (e: IEditorMouseEvent) => void): IDisposable; + onMouseLeave(listener: (e: IPartialEditorMouseEvent) => void): IDisposable; /** * An event emitted on a "keyup". * @event diff --git a/src/vs/editor/browser/view/viewController.ts b/src/vs/editor/browser/view/viewController.ts index aa36de6fc23..d8b16bb91ac 100644 --- a/src/vs/editor/browser/view/viewController.ts +++ b/src/vs/editor/browser/view/viewController.ts @@ -6,7 +6,7 @@ import { IKeyboardEvent } from 'vs/base/browser/keyboardEvent'; import { Position } from 'vs/editor/common/core/position'; import { Selection } from 'vs/editor/common/core/selection'; -import { IEditorMouseEvent } from 'vs/editor/browser/editorBrowser'; +import { IEditorMouseEvent, IPartialEditorMouseEvent } from 'vs/editor/browser/editorBrowser'; import { IViewModel } from 'vs/editor/common/viewModel/viewModel'; import { ViewOutgoingEvents } from 'vs/editor/browser/view/viewOutgoingEvents'; import { CoreNavigationCommands, CoreEditorCommand } from 'vs/editor/browser/controller/coreCommands'; @@ -293,7 +293,7 @@ export class ViewController { this.outgoingEvents.emitMouseMove(e); } - public emitMouseLeave(e: IEditorMouseEvent): void { + public emitMouseLeave(e: IPartialEditorMouseEvent): void { this.outgoingEvents.emitMouseLeave(e); } @@ -309,7 +309,7 @@ export class ViewController { this.outgoingEvents.emitMouseDrag(e); } - public emitMouseDrop(e: IEditorMouseEvent): void { + public emitMouseDrop(e: IPartialEditorMouseEvent): void { this.outgoingEvents.emitMouseDrop(e); } } diff --git a/src/vs/editor/browser/view/viewOutgoingEvents.ts b/src/vs/editor/browser/view/viewOutgoingEvents.ts index deded230319..a50db4b9029 100644 --- a/src/vs/editor/browser/view/viewOutgoingEvents.ts +++ b/src/vs/editor/browser/view/viewOutgoingEvents.ts @@ -9,7 +9,7 @@ import { Position } from 'vs/editor/common/core/position'; import { Range } from 'vs/editor/common/core/range'; import { IViewModel } from 'vs/editor/common/viewModel/viewModel'; import { IScrollEvent } from 'vs/editor/common/editorCommon'; -import { IEditorMouseEvent, IMouseTarget, MouseTargetType } from 'vs/editor/browser/editorBrowser'; +import { IEditorMouseEvent, IMouseTarget, MouseTargetType, IPartialEditorMouseEvent } from 'vs/editor/browser/editorBrowser'; import { MouseTarget } from 'vs/editor/browser/controller/mouseTarget'; import * as viewEvents from 'vs/editor/common/view/viewEvents'; @@ -26,11 +26,11 @@ export class ViewOutgoingEvents extends Disposable { public onKeyUp: EventCallback | null = null; public onContextMenu: EventCallback | null = null; public onMouseMove: EventCallback | null = null; - public onMouseLeave: EventCallback | null = null; + public onMouseLeave: EventCallback | null = null; public onMouseUp: EventCallback | null = null; public onMouseDown: EventCallback | null = null; public onMouseDrag: EventCallback | null = null; - public onMouseDrop: EventCallback | null = null; + public onMouseDrop: EventCallback | null = null; private _viewModel: IViewModel; @@ -81,7 +81,7 @@ export class ViewOutgoingEvents extends Disposable { } } - public emitMouseLeave(e: IEditorMouseEvent): void { + public emitMouseLeave(e: IPartialEditorMouseEvent): void { if (this.onMouseLeave) { this.onMouseLeave(this._convertViewToModelMouseEvent(e)); } @@ -105,13 +105,15 @@ export class ViewOutgoingEvents extends Disposable { } } - public emitMouseDrop(e: IEditorMouseEvent): void { + public emitMouseDrop(e: IPartialEditorMouseEvent): void { if (this.onMouseDrop) { this.onMouseDrop(this._convertViewToModelMouseEvent(e)); } } - private _convertViewToModelMouseEvent(e: IEditorMouseEvent): IEditorMouseEvent { + private _convertViewToModelMouseEvent(e: IEditorMouseEvent): IEditorMouseEvent; + private _convertViewToModelMouseEvent(e: IPartialEditorMouseEvent): IPartialEditorMouseEvent; + private _convertViewToModelMouseEvent(e: IEditorMouseEvent | IPartialEditorMouseEvent): IEditorMouseEvent | IPartialEditorMouseEvent { if (e.target) { return { event: e.event, diff --git a/src/vs/editor/browser/widget/codeEditorWidget.ts b/src/vs/editor/browser/widget/codeEditorWidget.ts index 22842cb2cdf..80199bd7d64 100644 --- a/src/vs/editor/browser/widget/codeEditorWidget.ts +++ b/src/vs/editor/browser/widget/codeEditorWidget.ts @@ -173,8 +173,8 @@ export class CodeEditorWidget extends Disposable implements editorBrowser.ICodeE private readonly _onMouseDrag: Emitter = this._register(new Emitter()); public readonly onMouseDrag: Event = this._onMouseDrag.event; - private readonly _onMouseDrop: Emitter = this._register(new Emitter()); - public readonly onMouseDrop: Event = this._onMouseDrop.event; + private readonly _onMouseDrop: Emitter = this._register(new Emitter()); + public readonly onMouseDrop: Event = this._onMouseDrop.event; private readonly _onContextMenu: Emitter = this._register(new Emitter()); public readonly onContextMenu: Event = this._onContextMenu.event; @@ -182,8 +182,8 @@ export class CodeEditorWidget extends Disposable implements editorBrowser.ICodeE private readonly _onMouseMove: Emitter = this._register(new Emitter()); public readonly onMouseMove: Event = this._onMouseMove.event; - private readonly _onMouseLeave: Emitter = this._register(new Emitter()); - public readonly onMouseLeave: Event = this._onMouseLeave.event; + private readonly _onMouseLeave: Emitter = this._register(new Emitter()); + public readonly onMouseLeave: Event = this._onMouseLeave.event; private readonly _onKeyUp: Emitter = this._register(new Emitter()); public readonly onKeyUp: Event = this._onKeyUp.event; diff --git a/src/vs/editor/contrib/codeAction/codeAction.ts b/src/vs/editor/contrib/codeAction/codeAction.ts index e301f1ee621..98d34507027 100644 --- a/src/vs/editor/contrib/codeAction/codeAction.ts +++ b/src/vs/editor/contrib/codeAction/codeAction.ts @@ -70,7 +70,7 @@ function codeActionsComparator(a: CodeAction, b: CodeAction): number { const bHasDiags = !isFalsyOrEmpty(b.diagnostics); if (aHasDiags) { if (bHasDiags) { - return a.diagnostics[0].message.localeCompare(b.diagnostics[0].message); + return a.diagnostics![0].message.localeCompare(b.diagnostics![0].message); } else { return -1; } diff --git a/src/vs/editor/contrib/goToDefinition/clickLinkGesture.ts b/src/vs/editor/contrib/goToDefinition/clickLinkGesture.ts index 4ac197ccb87..3b72a01a35c 100644 --- a/src/vs/editor/contrib/goToDefinition/clickLinkGesture.ts +++ b/src/vs/editor/contrib/goToDefinition/clickLinkGesture.ts @@ -22,7 +22,7 @@ function hasModifier(e: { ctrlKey: boolean; shiftKey: boolean; altKey: boolean; */ export class ClickLinkMouseEvent { - public readonly target: IMouseTarget | null; + public readonly target: IMouseTarget; public readonly hasTriggerModifier: boolean; public readonly hasSideBySideModifier: boolean; public readonly isNoneOrSingleMouseDown: boolean; diff --git a/src/vs/editor/contrib/goToDefinition/goToDefinition.ts b/src/vs/editor/contrib/goToDefinition/goToDefinition.ts index e5fc9e10930..6df077d607c 100644 --- a/src/vs/editor/contrib/goToDefinition/goToDefinition.ts +++ b/src/vs/editor/contrib/goToDefinition/goToDefinition.ts @@ -17,12 +17,12 @@ function getDefinitions( model: ITextModel, position: Position, registry: LanguageFeatureRegistry, - provide: (provider: T, model: ITextModel, position: Position) => DefinitionLink | DefinitionLink[] | Thenable + provide: (provider: T, model: ITextModel, position: Position) => DefinitionLink | DefinitionLink[] | null | undefined | Thenable ): Thenable { const provider = registry.ordered(model); // get results - const promises = provider.map((provider): Thenable => { + const promises = provider.map((provider): Thenable => { return Promise.resolve(provide(provider, model, position)).then(undefined, err => { onUnexpectedExternalError(err); return null; diff --git a/src/vs/editor/contrib/links/links.ts b/src/vs/editor/contrib/links/links.ts index 17ffc1ed5b2..44536558099 100644 --- a/src/vs/editor/contrib/links/links.ts +++ b/src/vs/editor/contrib/links/links.ts @@ -289,7 +289,7 @@ class LinkDetector implements editorCommon.IEditorContribution { const useMetaKey = (this.editor.getConfiguration().multiCursorModifier === 'altKey'); if (this.isEnabled(mouseEvent, withKey)) { this.cleanUpActiveLinkDecoration(); // always remove previous link decoration as their can only be one - const occurrence = this.getLinkOccurrence(mouseEvent.target!.position); + const occurrence = this.getLinkOccurrence(mouseEvent.target.position); if (occurrence) { this.editor.changeDecorations((changeAccessor) => { occurrence.activate(changeAccessor, useMetaKey); @@ -319,7 +319,7 @@ class LinkDetector implements editorCommon.IEditorContribution { if (!this.isEnabled(mouseEvent)) { return; } - const occurrence = this.getLinkOccurrence(mouseEvent.target!.position); + const occurrence = this.getLinkOccurrence(mouseEvent.target.position); if (!occurrence) { return; } @@ -374,7 +374,7 @@ class LinkDetector implements editorCommon.IEditorContribution { private isEnabled(mouseEvent: ClickLinkMouseEvent, withKey?: ClickLinkKeyboardEvent | null): boolean { return Boolean( - (mouseEvent.target && mouseEvent.target.type === MouseTargetType.CONTENT_TEXT) + (mouseEvent.target.type === MouseTargetType.CONTENT_TEXT) && (mouseEvent.hasTriggerModifier || (withKey && withKey.keyCodeIsTriggerKey)) ); } diff --git a/src/vs/editor/contrib/message/messageController.ts b/src/vs/editor/contrib/message/messageController.ts index 33e6ff3ea5e..9ec3dfaad90 100644 --- a/src/vs/editor/contrib/message/messageController.ts +++ b/src/vs/editor/contrib/message/messageController.ts @@ -100,7 +100,9 @@ export class MessageController extends Disposable implements editorCommon.IEdito } private _onDidAttemptReadOnlyEdit(): void { - this.showMessage(nls.localize('editor.readonly', "Cannot edit in read-only editor"), this._editor.getPosition()); + if (this._editor.hasModel()) { + this.showMessage(nls.localize('editor.readonly', "Cannot edit in read-only editor"), this._editor.getPosition()); + } } } diff --git a/src/vs/editor/contrib/parameterHints/provideSignatureHelp.ts b/src/vs/editor/contrib/parameterHints/provideSignatureHelp.ts index 586746f07ee..99290fb5fe1 100644 --- a/src/vs/editor/contrib/parameterHints/provideSignatureHelp.ts +++ b/src/vs/editor/contrib/parameterHints/provideSignatureHelp.ts @@ -17,7 +17,7 @@ export const Context = { MultipleSignatures: new RawContextKey('parameterHintsMultipleSignatures', false), }; -export function provideSignatureHelp(model: ITextModel, position: Position, context: modes.SignatureHelpContext, token: CancellationToken): Promise { +export function provideSignatureHelp(model: ITextModel, position: Position, context: modes.SignatureHelpContext, token: CancellationToken): Promise { const supports = modes.SignatureHelpProviderRegistry.ordered(model); diff --git a/src/vs/editor/test/browser/controller/imeTester.ts b/src/vs/editor/test/browser/controller/imeTester.ts index ca0ba6339f8..a535ed336d1 100644 --- a/src/vs/editor/test/browser/controller/imeTester.ts +++ b/src/vs/editor/test/browser/controller/imeTester.ts @@ -100,7 +100,7 @@ function doCreateTest(description: string, inputStr: string, expectedStr: string return PagedScreenReaderStrategy.fromEditorSelection(currentState, model, selection, true); }, deduceModelPosition: (viewAnchorPosition: Position, deltaOffset: number, lineFeedCnt: number): Position => { - return null; + return null!; } }; diff --git a/src/vs/editor/test/browser/editorTestServices.ts b/src/vs/editor/test/browser/editorTestServices.ts index 5f2f3890626..2796c7a6924 100644 --- a/src/vs/editor/test/browser/editorTestServices.ts +++ b/src/vs/editor/test/browser/editorTestServices.ts @@ -15,14 +15,14 @@ import { IResourceInput } from 'vs/platform/editor/common/editor'; export class TestCodeEditorService extends AbstractCodeEditorService { public lastInput: IResourceInput; - public getActiveCodeEditor(): ICodeEditor { return null; } - public openCodeEditor(input: IResourceInput, source: ICodeEditor | null, sideBySide?: boolean): TPromise { + public getActiveCodeEditor(): ICodeEditor | null { return null; } + public openCodeEditor(input: IResourceInput, source: ICodeEditor | null, sideBySide?: boolean): TPromise { this.lastInput = input; return TPromise.as(null); } public registerDecorationType(key: string, options: IDecorationRenderOptions, parentTypeKey?: string): void { } public removeDecorationType(key: string): void { } - public resolveDecorationOptions(decorationTypeKey: string, writable: boolean): IModelDecorationOptions { return null; } + public resolveDecorationOptions(decorationTypeKey: string, writable: boolean): IModelDecorationOptions { return {}; } } export class TestCommandService implements ICommandService { diff --git a/src/vs/editor/test/browser/view/minimapFontCreator.ts b/src/vs/editor/test/browser/view/minimapFontCreator.ts index 17fca1baf56..4a2d0c489b8 100644 --- a/src/vs/editor/test/browser/view/minimapFontCreator.ts +++ b/src/vs/editor/test/browser/view/minimapFontCreator.ts @@ -9,7 +9,7 @@ import { getOrCreateMinimapCharRenderer } from 'vs/editor/common/view/runtimeMin import { RGBA8 } from 'vs/editor/common/core/rgba'; let canvas = document.getElementById('my-canvas'); -let ctx = canvas.getContext('2d'); +let ctx = canvas.getContext('2d')!; canvas.style.height = 100 + 'px'; canvas.height = 100; diff --git a/src/vs/editor/test/common/model/editableTextModelTestUtils.ts b/src/vs/editor/test/common/model/editableTextModelTestUtils.ts index 546ea869a2b..c4345047f37 100644 --- a/src/vs/editor/test/common/model/editableTextModelTestUtils.ts +++ b/src/vs/editor/test/common/model/editableTextModelTestUtils.ts @@ -87,7 +87,7 @@ function assertLineMapping(model: TextModel, msg: string): void { } -export function assertSyncedModels(text: string, callback: (model: TextModel, assertMirrorModels: () => void) => void, setup: (model: TextModel) => void = null): void { +export function assertSyncedModels(text: string, callback: (model: TextModel, assertMirrorModels: () => void) => void, setup: ((model: TextModel) => void) | null = null): void { let model = new TextModel(text, TextModel.DEFAULT_CREATION_OPTIONS, null); model.setEOL(EndOfLineSequence.LF); assertLineMapping(model, 'model'); @@ -97,7 +97,7 @@ export function assertSyncedModels(text: string, callback: (model: TextModel, as assertLineMapping(model, 'model'); } - 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/viewModel/testViewModel.ts b/src/vs/editor/test/common/viewModel/testViewModel.ts index 550451fcc2b..d76e87a33c4 100644 --- a/src/vs/editor/test/common/viewModel/testViewModel.ts +++ b/src/vs/editor/test/common/viewModel/testViewModel.ts @@ -15,7 +15,7 @@ export function testViewModel(text: string[], options: IEditorOptions, callback: let model = TextModel.createFromString(text.join('\n')); - let viewModel = new ViewModel(EDITOR_ID, configuration, model, null); + let viewModel = new ViewModel(EDITOR_ID, configuration, model, null!); callback(viewModel, model); diff --git a/src/vs/monaco.d.ts b/src/vs/monaco.d.ts index d0d8c3a88e5..831c192c679 100644 --- a/src/vs/monaco.d.ts +++ b/src/vs/monaco.d.ts @@ -1111,7 +1111,7 @@ declare namespace monaco.editor { export interface IContextKey { set(value: T): void; reset(): void; - get(): T; + get(): T | undefined; } export interface IEditorOverrideServices { @@ -3741,6 +3741,11 @@ declare namespace monaco.editor { * A mouse event originating from the editor. */ export interface IEditorMouseEvent { + readonly event: IMouseEvent; + readonly target: IMouseTarget; + } + + export interface IPartialEditorMouseEvent { readonly event: IMouseEvent; readonly target: IMouseTarget | null; } @@ -3846,7 +3851,7 @@ declare namespace monaco.editor { * An event emitted on a "mouseleave". * @event */ - onMouseLeave(listener: (e: IEditorMouseEvent) => void): IDisposable; + onMouseLeave(listener: (e: IPartialEditorMouseEvent) => void): IDisposable; /** * An event emitted on a "keyup". * @event diff --git a/src/vs/platform/contextkey/common/contextkey.ts b/src/vs/platform/contextkey/common/contextkey.ts index dc7b5f0116a..d46d11fd6cd 100644 --- a/src/vs/platform/contextkey/common/contextkey.ts +++ b/src/vs/platform/contextkey/common/contextkey.ts @@ -549,7 +549,7 @@ export interface IContext { export interface IContextKey { set(value: T): void; reset(): void; - get(): T; + get(): T | undefined; } export interface IContextKeyServiceTarget { diff --git a/src/vs/platform/keybinding/test/common/mockKeybindingService.ts b/src/vs/platform/keybinding/test/common/mockKeybindingService.ts index 12ef0825dbb..05678445f22 100644 --- a/src/vs/platform/keybinding/test/common/mockKeybindingService.ts +++ b/src/vs/platform/keybinding/test/common/mockKeybindingService.ts @@ -13,15 +13,15 @@ import { OS } from 'vs/base/common/platform'; import { ResolvedKeybindingItem } from 'vs/platform/keybinding/common/resolvedKeybindingItem'; class MockKeybindingContextKey implements IContextKey { - private _defaultValue: T; - private _value: T; + private _defaultValue: T | undefined; + private _value: T | undefined; - constructor(defaultValue: T) { + constructor(defaultValue: T | undefined) { this._defaultValue = defaultValue; this._value = this._defaultValue; } - public set(value: T): void { + public set(value: T | undefined): void { this._value = value; } @@ -29,7 +29,7 @@ class MockKeybindingContextKey implements IContextKey { this._value = this._defaultValue; } - public get(): T { + public get(): T | undefined { return this._value; } } @@ -42,7 +42,7 @@ export class MockContextKeyService implements IContextKeyService { public dispose(): void { // } - public createKey(key: string, defaultValue: T): IContextKey { + public createKey(key: string, defaultValue: T | undefined): IContextKey { let ret = new MockKeybindingContextKey(defaultValue); this._keys.set(key, ret); return ret; @@ -74,7 +74,7 @@ export class MockKeybindingService implements IKeybindingService { } public getDefaultKeybindingsContent(): string { - return null; + return ''; } public getDefaultKeybindings(): ResolvedKeybindingItem[] { @@ -108,7 +108,7 @@ export class MockKeybindingService implements IKeybindingService { return []; } - public lookupKeybinding(commandId: string): ResolvedKeybinding { + public lookupKeybinding(commandId: string): ResolvedKeybinding | null { return null; } @@ -116,7 +116,7 @@ export class MockKeybindingService implements IKeybindingService { return 0; } - public softDispatch(keybinding: IKeyboardEvent, target: IContextKeyServiceTarget): IResolveResult { + public softDispatch(keybinding: IKeyboardEvent, target: IContextKeyServiceTarget): IResolveResult | null { return null; } diff --git a/src/vs/workbench/common/resources.ts b/src/vs/workbench/common/resources.ts index 25f8df24468..e4225842851 100644 --- a/src/vs/workbench/common/resources.ts +++ b/src/vs/workbench/common/resources.ts @@ -49,7 +49,7 @@ export class ResourceContextKey extends Disposable implements IContextKey { this._register(_fileService.onDidChangeFileSystemProviderRegistrations(() => { const resource = this._resourceKey.get(); - this._isfileSystemResource.set(resource && _fileService.canHandleResource(resource)); + this._isfileSystemResource.set(Boolean(resource && _fileService.canHandleResource(resource))); this._isFileSystemResourceOrUntitled.set(this._isfileSystemResource.get() || this._schemeKey.get() === Schemas.untitled); })); } @@ -74,7 +74,7 @@ export class ResourceContextKey extends Disposable implements IContextKey { this._hasResource.reset(); } - get(): URI { + get(): URI | undefined { return this._resourceKey.get(); } } diff --git a/src/vs/workbench/parts/codeEditor/electron-browser/selectionClipboard.ts b/src/vs/workbench/parts/codeEditor/electron-browser/selectionClipboard.ts index 98ddaef21a5..55a77ea03f0 100644 --- a/src/vs/workbench/parts/codeEditor/electron-browser/selectionClipboard.ts +++ b/src/vs/workbench/parts/codeEditor/electron-browser/selectionClipboard.ts @@ -43,11 +43,11 @@ export class SelectionClipboard extends Disposable implements IEditorContributio e.event.preventDefault(); editor.focus(); - if (e.target && e.target.position) { + if (e.target.position) { editor.setPosition(e.target.position); } - if (e.target && e.target.type === MouseTargetType.SCROLLBAR) { + if (e.target.type === MouseTargetType.SCROLLBAR) { return; } diff --git a/src/vs/workbench/parts/codeEditor/electron-browser/textMate/inspectTMScopes.ts b/src/vs/workbench/parts/codeEditor/electron-browser/textMate/inspectTMScopes.ts index 73ecf12bb06..945c584e6c1 100644 --- a/src/vs/workbench/parts/codeEditor/electron-browser/textMate/inspectTMScopes.ts +++ b/src/vs/workbench/parts/codeEditor/electron-browser/textMate/inspectTMScopes.ts @@ -13,7 +13,7 @@ import { Position } from 'vs/editor/common/core/position'; import { IEditorContribution } from 'vs/editor/common/editorCommon'; import { ITextModel } from 'vs/editor/common/model'; import { registerEditorAction, registerEditorContribution, EditorAction, ServicesAccessor } from 'vs/editor/browser/editorExtensions'; -import { ICodeEditor, ContentWidgetPositionPreference, IContentWidget, IContentWidgetPosition } from 'vs/editor/browser/editorBrowser'; +import { ICodeEditor, ContentWidgetPositionPreference, IContentWidget, IContentWidgetPosition, IActiveCodeEditor } from 'vs/editor/browser/editorBrowser'; import { TPromise } from 'vs/base/common/winjs.base'; import { IGrammar, StackElement, IToken } from 'vscode-textmate'; import { ITextMateService } from 'vs/workbench/services/textMate/electron-browser/textMateService'; @@ -40,7 +40,7 @@ class InspectTMScopesController extends Disposable implements IEditorContributio private _themeService: IWorkbenchThemeService; private _modeService: IModeService; private _notificationService: INotificationService; - private _widget: InspectTMScopesWidget; + private _widget: InspectTMScopesWidget | null; constructor( editor: ICodeEditor, @@ -75,7 +75,7 @@ class InspectTMScopesController extends Disposable implements IEditorContributio if (this._widget) { return; } - if (!this._editor.getModel()) { + if (!this._editor.hasModel()) { return; } this._widget = new InspectTMScopesWidget(this._editor, this._textMateService, this._modeService, this._themeService, this._notificationService); @@ -174,7 +174,7 @@ class InspectTMScopesWidget extends Disposable implements IContentWidget { public readonly allowEditorOverflow = true; private _isDisposed: boolean; - private readonly _editor: ICodeEditor; + private readonly _editor: IActiveCodeEditor; private readonly _modeService: IModeService; private readonly _themeService: IWorkbenchThemeService; private readonly _notificationService: INotificationService; @@ -183,7 +183,7 @@ class InspectTMScopesWidget extends Disposable implements IContentWidget { private readonly _grammar: TPromise; constructor( - editor: ICodeEditor, + editor: IActiveCodeEditor, textMateService: ITextMateService, modeService: IModeService, themeService: IWorkbenchThemeService, @@ -292,14 +292,14 @@ class InspectTMScopesWidget extends Disposable implements IContentWidget { } private _decodeMetadata(metadata: number): IDecodedMetadata { - let colorMap = TokenizationRegistry.getColorMap(); + let colorMap = TokenizationRegistry.getColorMap()!; let languageId = TokenMetadata.getLanguageId(metadata); let tokenType = TokenMetadata.getTokenType(metadata); let fontStyle = TokenMetadata.getFontStyle(metadata); let foreground = TokenMetadata.getForeground(metadata); let background = TokenMetadata.getBackground(metadata); return { - languageIdentifier: this._modeService.getLanguageIdentifier(languageId), + languageIdentifier: this._modeService.getLanguageIdentifier(languageId)!, tokenType: tokenType, fontStyle: fontStyle, foreground: colorMap[foreground], diff --git a/src/vs/workbench/services/mode/common/workbenchModeService.ts b/src/vs/workbench/services/mode/common/workbenchModeService.ts index f0f732ddef1..7eb32726bad 100644 --- a/src/vs/workbench/services/mode/common/workbenchModeService.ts +++ b/src/vs/workbench/services/mode/common/workbenchModeService.ts @@ -115,7 +115,7 @@ export class WorkbenchModeServiceImpl extends ModeServiceImpl { for (let j = 0, lenJ = extension.value.length; j < lenJ; j++) { let ext = extension.value[j]; if (isValidLanguageExtensionPoint(ext, extension.collector)) { - let configuration: URI; + let configuration: URI | undefined = undefined; if (ext.configuration) { configuration = resources.joinPath(extension.description.extensionLocation, ext.configuration); } -- GitLab