diff --git a/src/tsconfig.strictNullChecks.json b/src/tsconfig.strictNullChecks.json index ce1825fd1fb..536810fdfc9 100644 --- a/src/tsconfig.strictNullChecks.json +++ b/src/tsconfig.strictNullChecks.json @@ -72,6 +72,7 @@ "./vs/base/parts/contextmenu/electron-browser/contextmenu.ts", "./vs/base/parts/contextmenu/electron-main/contextmenu.ts", "./vs/base/parts/ipc/node/ipc.cp.ts", + "./vs/base/parts/ipc/node/ipc.net.ts", "./vs/base/parts/ipc/node/ipc.ts", "./vs/base/parts/ipc/test/node/testApp.ts", "./vs/base/parts/ipc/test/node/testService.ts", @@ -405,6 +406,7 @@ "./vs/platform/log/common/bufferLog.ts", "./vs/platform/log/common/log.ts", "./vs/platform/log/node/spdlogService.ts", + "./vs/platform/markers/common/markerService.ts", "./vs/platform/markers/common/markers.ts", "./vs/platform/menubar/common/menubar.ts", "./vs/platform/node/minimalTranslations.ts", @@ -489,6 +491,7 @@ "./vs/workbench/parts/logs/common/logConstants.ts", "./vs/workbench/parts/markers/electron-browser/constants.ts", "./vs/workbench/parts/markers/electron-browser/markers.ts", + "./vs/workbench/parts/markers/electron-browser/markersFileDecorations.ts", "./vs/workbench/parts/markers/electron-browser/markersFilterOptions.ts", "./vs/workbench/parts/markers/electron-browser/markersModel.ts", "./vs/workbench/parts/markers/electron-browser/messages.ts", diff --git a/src/vs/base/parts/ipc/node/ipc.net.ts b/src/vs/base/parts/ipc/node/ipc.net.ts index 8a3d10a51c3..675e155162c 100644 --- a/src/vs/base/parts/ipc/node/ipc.net.ts +++ b/src/vs/base/parts/ipc/node/ipc.net.ts @@ -215,14 +215,19 @@ export class Server extends IPCServer { })); } - constructor(private server: NetServer) { + private server: NetServer | null; + + constructor(server: NetServer) { super(Server.toClientConnectionEvent(server)); + this.server = server; } dispose(): void { super.dispose(); - this.server.close(); - this.server = null; + if (this.server) { + this.server.close(); + this.server = null; + } } } diff --git a/src/vs/platform/markers/common/markerService.ts b/src/vs/platform/markers/common/markerService.ts index 0453c12fde7..a3fd07f7719 100644 --- a/src/vs/platform/markers/common/markerService.ts +++ b/src/vs/platform/markers/common/markerService.ts @@ -50,7 +50,7 @@ class MarkerStats implements MarkerStatistics { warnings: number = 0; unknowns: number = 0; - private _data: { [resource: string]: MarkerStatistics } = Object.create(null); + private _data?: { [resource: string]: MarkerStatistics } = Object.create(null); private _service: IMarkerService; private _subscription: IDisposable; @@ -65,6 +65,10 @@ class MarkerStats implements MarkerStatistics { } private _update(resources: URI[]): void { + if (!this._data) { + return; + } + for (const resource of resources) { const key = resource.toString(); const oldStats = this._data[key]; @@ -191,7 +195,6 @@ export class MarkerService implements IMarkerService { } // santize data - code = code || null; startLineNumber = startLineNumber > 0 ? startLineNumber : 1; startColumn = startColumn > 0 ? startColumn : 1; endLineNumber = endLineNumber >= startLineNumber ? endLineNumber : startLineNumber; @@ -200,7 +203,7 @@ export class MarkerService implements IMarkerService { return { resource, owner, - code, + code: code || undefined, severity, message, source, @@ -221,13 +224,16 @@ export class MarkerService implements IMarkerService { if (map) { delete this._byOwner[owner]; for (const resource in map) { - // remeber what we remove - const [first] = MapMap.get(this._byResource, resource, owner); - if (first) { - changes.push(first.resource); + const entry = MapMap.get(this._byResource, resource, owner); + if (entry) { + // remeber what we remove + const [first] = entry; + if (first) { + changes.push(first.resource); + } + // actual remove + MapMap.remove(this._byResource, resource, owner); } - // actual remove - MapMap.remove(this._byResource, resource, owner); } } @@ -308,9 +314,9 @@ export class MarkerService implements IMarkerService { } else { // of one resource OR owner - const map: { [key: string]: IMarker[] } = owner + const map: { [key: string]: IMarker[] } | undefined = owner ? this._byOwner[owner] - : this._byResource[resource.toString()]; + : resource ? this._byResource[resource.toString()] : undefined; if (!map) { return []; diff --git a/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.ts b/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.ts index 62d121cab32..13b739e57b7 100644 --- a/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.ts +++ b/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.ts @@ -27,12 +27,12 @@ class MarkersDecorationsProvider implements IDecorationsProvider { this.onDidChange = _markerService.onMarkerChanged; } - provideDecorations(resource: URI): IDecorationData { + provideDecorations(resource: URI): IDecorationData | undefined { let markers = this._markerService.read({ resource, severities: MarkerSeverity.Error | MarkerSeverity.Warning }); - let first: IMarker; + let first: IMarker | undefined; for (const marker of markers) { if (!first || marker.severity > first.severity) { first = marker; diff --git a/src/vs/workbench/services/decorations/browser/decorations.ts b/src/vs/workbench/services/decorations/browser/decorations.ts index 5a24b725c08..ff98b24c992 100644 --- a/src/vs/workbench/services/decorations/browser/decorations.ts +++ b/src/vs/workbench/services/decorations/browser/decorations.ts @@ -31,7 +31,7 @@ export interface IDecoration { export interface IDecorationsProvider { readonly label: string; readonly onDidChange: Event; - provideDecorations(uri: URI, token: CancellationToken): IDecorationData | Thenable; + provideDecorations(uri: URI, token: CancellationToken): IDecorationData | Thenable | undefined; } export interface IResourceDecorationChangeEvent {