From c25e7e90f0daa52659ae79fc29f63b8e18b508bc Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Wed, 25 Sep 2019 18:30:03 -0700 Subject: [PATCH] Making IFileChange readonly --- src/vs/platform/files/common/files.ts | 6 +++--- src/vs/platform/files/node/diskFileSystemProvider.ts | 4 ++-- .../platform/files/test/common/nullFileSystemProvider.ts | 4 ++-- .../remote/common/remoteAgentFileSystemChannel.ts | 4 ++-- src/vs/workbench/api/browser/mainThreadFileSystem.ts | 4 ++-- .../workbench/services/log/common/keyValueLogProvider.ts | 4 ++-- .../services/userData/common/fileUserDataProvider.ts | 8 ++++---- .../services/userData/common/inMemoryUserDataProvider.ts | 4 ++-- .../test/electron-browser/fileUserDataProvider.test.ts | 4 ++-- src/vs/workbench/test/workbenchTestServices.ts | 7 ++++++- 10 files changed, 27 insertions(+), 22 deletions(-) diff --git a/src/vs/platform/files/common/files.ts b/src/vs/platform/files/common/files.ts index c625aad7a66..48dc8339fc4 100644 --- a/src/vs/platform/files/common/files.ts +++ b/src/vs/platform/files/common/files.ts @@ -209,7 +209,7 @@ export interface IFileSystemProvider { readonly onDidErrorOccur?: Event; // TODO@ben remove once file watchers are solid - readonly onDidChangeFile: Event; + readonly onDidChangeFile: Event; watch(resource: URI, opts: IWatchOptions): IDisposable; stat(resource: URI): Promise; @@ -389,12 +389,12 @@ export interface IFileChange { /** * The type of change that occurred to the file. */ - type: FileChangeType; + readonly type: FileChangeType; /** * The unified resource identifier of the file that changed. */ - resource: URI; + readonly resource: URI; } export class FileChangesEvent { diff --git a/src/vs/platform/files/node/diskFileSystemProvider.ts b/src/vs/platform/files/node/diskFileSystemProvider.ts index d66ef03839c..a7d483ffda2 100644 --- a/src/vs/platform/files/node/diskFileSystemProvider.ts +++ b/src/vs/platform/files/node/diskFileSystemProvider.ts @@ -449,8 +449,8 @@ export class DiskFileSystemProvider extends Disposable implements IFileSystemPro private _onDidWatchErrorOccur: Emitter = this._register(new Emitter()); readonly onDidErrorOccur: Event = this._onDidWatchErrorOccur.event; - private _onDidChangeFile: Emitter = this._register(new Emitter()); - get onDidChangeFile(): Event { return this._onDidChangeFile.event; } + private _onDidChangeFile = this._register(new Emitter()); + get onDidChangeFile(): Event { return this._onDidChangeFile.event; } private recursiveWatcher: WindowsWatcherService | UnixWatcherService | NsfwWatcherService | undefined; private recursiveFoldersToWatch: { path: string, excludes: string[] }[] = []; diff --git a/src/vs/platform/files/test/common/nullFileSystemProvider.ts b/src/vs/platform/files/test/common/nullFileSystemProvider.ts index b4b1c3af6fe..59ba8e873cd 100644 --- a/src/vs/platform/files/test/common/nullFileSystemProvider.ts +++ b/src/vs/platform/files/test/common/nullFileSystemProvider.ts @@ -13,7 +13,7 @@ export class NullFileSystemProvider implements IFileSystemProvider { capabilities: FileSystemProviderCapabilities = FileSystemProviderCapabilities.Readonly; onDidChangeCapabilities: Event = Event.None; - onDidChangeFile: Event = Event.None; + onDidChangeFile: Event = Event.None; constructor(private disposableFactory: () => IDisposable = () => Disposable.None) { } @@ -30,4 +30,4 @@ export class NullFileSystemProvider implements IFileSystemProvider { close?(fd: number): Promise { return Promise.resolve(undefined!); } read?(fd: number, pos: number, data: Uint8Array, offset: number, length: number): Promise { return Promise.resolve(undefined!); } write?(fd: number, pos: number, data: Uint8Array, offset: number, length: number): Promise { return Promise.resolve(undefined!); } -} \ No newline at end of file +} diff --git a/src/vs/platform/remote/common/remoteAgentFileSystemChannel.ts b/src/vs/platform/remote/common/remoteAgentFileSystemChannel.ts index 1f8b5fee33c..7d0ac33af9f 100644 --- a/src/vs/platform/remote/common/remoteAgentFileSystemChannel.ts +++ b/src/vs/platform/remote/common/remoteAgentFileSystemChannel.ts @@ -24,8 +24,8 @@ export class RemoteExtensionsFileSystemProvider extends Disposable implements IF private readonly session: string = generateUuid(); - private readonly _onDidChange = this._register(new Emitter()); - readonly onDidChangeFile: Event = this._onDidChange.event; + private readonly _onDidChange = this._register(new Emitter()); + readonly onDidChangeFile: Event = this._onDidChange.event; private _onDidWatchErrorOccur: Emitter = this._register(new Emitter()); readonly onDidErrorOccur: Event = this._onDidWatchErrorOccur.event; diff --git a/src/vs/workbench/api/browser/mainThreadFileSystem.ts b/src/vs/workbench/api/browser/mainThreadFileSystem.ts index 0d232f2870d..b8c0cb9dfdc 100644 --- a/src/vs/workbench/api/browser/mainThreadFileSystem.ts +++ b/src/vs/workbench/api/browser/mainThreadFileSystem.ts @@ -123,10 +123,10 @@ export class MainThreadFileSystem implements MainThreadFileSystemShape { class RemoteFileSystemProvider implements IFileSystemProvider { - private readonly _onDidChange = new Emitter(); + private readonly _onDidChange = new Emitter(); private readonly _registration: IDisposable; - readonly onDidChangeFile: Event = this._onDidChange.event; + readonly onDidChangeFile: Event = this._onDidChange.event; readonly capabilities: FileSystemProviderCapabilities; readonly onDidChangeCapabilities: Event = Event.None; diff --git a/src/vs/workbench/services/log/common/keyValueLogProvider.ts b/src/vs/workbench/services/log/common/keyValueLogProvider.ts index 8bcdb579c75..0db6b00da32 100644 --- a/src/vs/workbench/services/log/common/keyValueLogProvider.ts +++ b/src/vs/workbench/services/log/common/keyValueLogProvider.ts @@ -17,8 +17,8 @@ export abstract class KeyValueLogProvider extends Disposable implements IFileSys readonly capabilities: FileSystemProviderCapabilities = FileSystemProviderCapabilities.FileReadWrite; readonly onDidChangeCapabilities: Event = Event.None; - private readonly _onDidChangeFile: Emitter = this._register(new Emitter()); - readonly onDidChangeFile: Event = this._onDidChangeFile.event; + private readonly _onDidChangeFile = this._register(new Emitter()); + readonly onDidChangeFile: Event = this._onDidChangeFile.event; private readonly versions: Map = new Map(); diff --git a/src/vs/workbench/services/userData/common/fileUserDataProvider.ts b/src/vs/workbench/services/userData/common/fileUserDataProvider.ts index 4bf98510ac4..cef3768ec96 100644 --- a/src/vs/workbench/services/userData/common/fileUserDataProvider.ts +++ b/src/vs/workbench/services/userData/common/fileUserDataProvider.ts @@ -17,8 +17,8 @@ export class FileUserDataProvider extends Disposable implements IFileSystemProvi readonly capabilities: FileSystemProviderCapabilities = this.fileSystemProvider.capabilities; readonly onDidChangeCapabilities: Event = Event.None; - private readonly _onDidChangeFile: Emitter = this._register(new Emitter()); - readonly onDidChangeFile: Event = this._onDidChangeFile.event; + private readonly _onDidChangeFile = this._register(new Emitter()); + readonly onDidChangeFile: Event = this._onDidChangeFile.event; private readonly userDataHome: URI; @@ -103,7 +103,7 @@ export class FileUserDataProvider extends Disposable implements IFileSystemProvi return this.fileSystemProvider.delete(this.toFileSystemResource(resource), opts); } - private handleFileChanges(changes: IFileChange[]): void { + private handleFileChanges(changes: readonly IFileChange[]): void { const userDataChanges: IFileChange[] = []; for (const change of changes) { const userDataResource = this.toUserDataResource(change.resource); @@ -139,4 +139,4 @@ export class FileUserDataProvider extends Disposable implements IFileSystemProvi return null; } -} \ No newline at end of file +} diff --git a/src/vs/workbench/services/userData/common/inMemoryUserDataProvider.ts b/src/vs/workbench/services/userData/common/inMemoryUserDataProvider.ts index 3fbd91518a6..99f3f826f3b 100644 --- a/src/vs/workbench/services/userData/common/inMemoryUserDataProvider.ts +++ b/src/vs/workbench/services/userData/common/inMemoryUserDataProvider.ts @@ -205,8 +205,8 @@ export class InMemoryFileSystemProvider extends Disposable implements IFileSyste // --- manage file events - private readonly _onDidChangeFile: Emitter = this._register(new Emitter()); - readonly onDidChangeFile: Event = this._onDidChangeFile.event; + private readonly _onDidChangeFile = this._register(new Emitter()); + readonly onDidChangeFile: Event = this._onDidChangeFile.event; private _bufferedChanges: IFileChange[] = []; private _fireSoonHandle?: any; diff --git a/src/vs/workbench/services/userData/test/electron-browser/fileUserDataProvider.test.ts b/src/vs/workbench/services/userData/test/electron-browser/fileUserDataProvider.test.ts index e927331f93b..d93f23bdbe1 100644 --- a/src/vs/workbench/services/userData/test/electron-browser/fileUserDataProvider.test.ts +++ b/src/vs/workbench/services/userData/test/electron-browser/fileUserDataProvider.test.ts @@ -277,7 +277,7 @@ suite('FileUserDataProvider', () => { class TestFileSystemProvider implements IFileSystemProviderWithFileReadWriteCapability { - constructor(readonly onDidChangeFile: Event) { } + constructor(readonly onDidChangeFile: Event) { } readonly capabilities: FileSystemProviderCapabilities = FileSystemProviderCapabilities.FileReadWrite; @@ -309,7 +309,7 @@ suite('FileUserDataProvider - Watching', () => { let userDataResource: URI; const disposables = new DisposableStore(); - const fileEventEmitter: Emitter = new Emitter(); + const fileEventEmitter: Emitter = new Emitter(); disposables.add(fileEventEmitter); setup(() => { diff --git a/src/vs/workbench/test/workbenchTestServices.ts b/src/vs/workbench/test/workbenchTestServices.ts index d585c154e16..024a5701627 100644 --- a/src/vs/workbench/test/workbenchTestServices.ts +++ b/src/vs/workbench/test/workbenchTestServices.ts @@ -1346,7 +1346,12 @@ export class RemoteFileSystemProvider implements IFileSystemProvider { readonly capabilities: FileSystemProviderCapabilities = this.diskFileSystemProvider.capabilities; readonly onDidChangeCapabilities: Event = this.diskFileSystemProvider.onDidChangeCapabilities; - readonly onDidChangeFile: Event = Event.map(this.diskFileSystemProvider.onDidChangeFile, changes => changes.map(c => { c.resource = c.resource.with({ scheme: Schemas.vscodeRemote, authority: this.remoteAuthority }); return c; })); + readonly onDidChangeFile: Event = Event.map(this.diskFileSystemProvider.onDidChangeFile, changes => changes.map((c): IFileChange => { + return { + type: c.type, + resource: c.resource.with({ scheme: Schemas.vscodeRemote, authority: this.remoteAuthority }), + }; + })); watch(resource: URI, opts: IWatchOptions): IDisposable { return this.diskFileSystemProvider.watch(this.toFileResource(resource), opts); } stat(resource: URI): Promise { return this.diskFileSystemProvider.stat(this.toFileResource(resource)); } -- GitLab