mirror of
https://github.com/microsoft/vscode.git
synced 2026-09-25 17:27:26 +01:00
files - always use createFileSystemProviderError (#173106)
This commit is contained in:
@@ -304,10 +304,10 @@ export class IndexedDBFileSystemProvider extends Disposable implements IFileSyst
|
||||
const toEntry = fileTree.read(to.path);
|
||||
if (toEntry) {
|
||||
if (!opts.overwrite) {
|
||||
throw new FileSystemProviderError('file exists already', FileSystemProviderErrorCode.FileExists);
|
||||
throw createFileSystemProviderError('file exists already', FileSystemProviderErrorCode.FileExists);
|
||||
}
|
||||
if (toEntry.type !== fromEntry.type) {
|
||||
throw new FileSystemProviderError('Cannot rename files with different types', FileSystemProviderErrorCode.Unknown);
|
||||
throw createFileSystemProviderError('Cannot rename files with different types', FileSystemProviderErrorCode.Unknown);
|
||||
}
|
||||
// delete the target file if exists
|
||||
await this.delete(to, { recursive: true, useTrash: false });
|
||||
|
||||
@@ -625,16 +625,20 @@ export interface IFileSystemProviderError extends Error {
|
||||
|
||||
export class FileSystemProviderError extends Error implements IFileSystemProviderError {
|
||||
|
||||
constructor(message: string, readonly code: FileSystemProviderErrorCode) {
|
||||
static create(error: Error | string, code: FileSystemProviderErrorCode): FileSystemProviderError {
|
||||
const providerError = new FileSystemProviderError(error.toString(), code);
|
||||
markAsFileSystemProviderError(providerError, code);
|
||||
|
||||
return providerError;
|
||||
}
|
||||
|
||||
private constructor(message: string, readonly code: FileSystemProviderErrorCode) {
|
||||
super(message);
|
||||
}
|
||||
}
|
||||
|
||||
export function createFileSystemProviderError(error: Error | string, code: FileSystemProviderErrorCode): FileSystemProviderError {
|
||||
const providerError = new FileSystemProviderError(error.toString(), code);
|
||||
markAsFileSystemProviderError(providerError, code);
|
||||
|
||||
return providerError;
|
||||
return FileSystemProviderError.create(error, code);
|
||||
}
|
||||
|
||||
export function ensureFileSystemProviderError(error?: Error): Error {
|
||||
|
||||
@@ -7,7 +7,7 @@ import { Emitter, Event } from 'vs/base/common/event';
|
||||
import { Disposable, IDisposable } from 'vs/base/common/lifecycle';
|
||||
import * as resources from 'vs/base/common/resources';
|
||||
import { URI } from 'vs/base/common/uri';
|
||||
import { FileChangeType, IFileDeleteOptions, IFileOverwriteOptions, FileSystemProviderCapabilities, FileSystemProviderError, FileSystemProviderErrorCode, FileType, IFileWriteOptions, IFileChange, IFileSystemProviderWithFileReadWriteCapability, IStat, IWatchOptions } from 'vs/platform/files/common/files';
|
||||
import { FileChangeType, IFileDeleteOptions, IFileOverwriteOptions, FileSystemProviderCapabilities, FileSystemProviderErrorCode, FileType, IFileWriteOptions, IFileChange, IFileSystemProviderWithFileReadWriteCapability, IStat, IWatchOptions, createFileSystemProviderError } from 'vs/platform/files/common/files';
|
||||
|
||||
class File implements IStat {
|
||||
|
||||
@@ -89,7 +89,7 @@ export class InMemoryFileSystemProvider extends Disposable implements IFileSyste
|
||||
if (data) {
|
||||
return data;
|
||||
}
|
||||
throw new FileSystemProviderError('file not found', FileSystemProviderErrorCode.FileNotFound);
|
||||
throw createFileSystemProviderError('file not found', FileSystemProviderErrorCode.FileNotFound);
|
||||
}
|
||||
|
||||
async writeFile(resource: URI, content: Uint8Array, opts: IFileWriteOptions): Promise<void> {
|
||||
@@ -97,13 +97,13 @@ export class InMemoryFileSystemProvider extends Disposable implements IFileSyste
|
||||
const parent = this._lookupParentDirectory(resource);
|
||||
let entry = parent.entries.get(basename);
|
||||
if (entry instanceof Directory) {
|
||||
throw new FileSystemProviderError('file is directory', FileSystemProviderErrorCode.FileIsADirectory);
|
||||
throw createFileSystemProviderError('file is directory', FileSystemProviderErrorCode.FileIsADirectory);
|
||||
}
|
||||
if (!entry && !opts.create) {
|
||||
throw new FileSystemProviderError('file not found', FileSystemProviderErrorCode.FileNotFound);
|
||||
throw createFileSystemProviderError('file not found', FileSystemProviderErrorCode.FileNotFound);
|
||||
}
|
||||
if (entry && opts.create && !opts.overwrite) {
|
||||
throw new FileSystemProviderError('file exists already', FileSystemProviderErrorCode.FileExists);
|
||||
throw createFileSystemProviderError('file exists already', FileSystemProviderErrorCode.FileExists);
|
||||
}
|
||||
if (!entry) {
|
||||
entry = new File(basename);
|
||||
@@ -121,7 +121,7 @@ export class InMemoryFileSystemProvider extends Disposable implements IFileSyste
|
||||
|
||||
async rename(from: URI, to: URI, opts: IFileOverwriteOptions): Promise<void> {
|
||||
if (!opts.overwrite && this._lookup(to, true)) {
|
||||
throw new FileSystemProviderError('file exists already', FileSystemProviderErrorCode.FileExists);
|
||||
throw createFileSystemProviderError('file exists already', FileSystemProviderErrorCode.FileExists);
|
||||
}
|
||||
|
||||
const entry = this._lookup(from, false);
|
||||
@@ -154,7 +154,7 @@ export class InMemoryFileSystemProvider extends Disposable implements IFileSyste
|
||||
|
||||
async mkdir(resource: URI): Promise<void> {
|
||||
if (this._lookup(resource, true)) {
|
||||
throw new FileSystemProviderError('file exists already', FileSystemProviderErrorCode.FileExists);
|
||||
throw createFileSystemProviderError('file exists already', FileSystemProviderErrorCode.FileExists);
|
||||
}
|
||||
|
||||
const basename = resources.basename(resource);
|
||||
@@ -185,7 +185,7 @@ export class InMemoryFileSystemProvider extends Disposable implements IFileSyste
|
||||
}
|
||||
if (!child) {
|
||||
if (!silent) {
|
||||
throw new FileSystemProviderError('file not found', FileSystemProviderErrorCode.FileNotFound);
|
||||
throw createFileSystemProviderError('file not found', FileSystemProviderErrorCode.FileNotFound);
|
||||
} else {
|
||||
return undefined;
|
||||
}
|
||||
@@ -200,7 +200,7 @@ export class InMemoryFileSystemProvider extends Disposable implements IFileSyste
|
||||
if (entry instanceof Directory) {
|
||||
return entry;
|
||||
}
|
||||
throw new FileSystemProviderError('file not a directory', FileSystemProviderErrorCode.FileNotADirectory);
|
||||
throw createFileSystemProviderError('file not a directory', FileSystemProviderErrorCode.FileNotADirectory);
|
||||
}
|
||||
|
||||
private _lookupAsFile(uri: URI, silent: boolean): File {
|
||||
@@ -208,7 +208,7 @@ export class InMemoryFileSystemProvider extends Disposable implements IFileSyste
|
||||
if (entry instanceof File) {
|
||||
return entry;
|
||||
}
|
||||
throw new FileSystemProviderError('file is a directory', FileSystemProviderErrorCode.FileIsADirectory);
|
||||
throw createFileSystemProviderError('file is a directory', FileSystemProviderErrorCode.FileIsADirectory);
|
||||
}
|
||||
|
||||
private _lookupParentDirectory(uri: URI): Directory {
|
||||
|
||||
@@ -9,7 +9,7 @@ import { Disposable, DisposableStore, toDisposable } from 'vs/base/common/lifecy
|
||||
import { clamp } from 'vs/base/common/numbers';
|
||||
import { assertNever } from 'vs/base/common/assert';
|
||||
import { URI } from 'vs/base/common/uri';
|
||||
import { FileChangeType, IFileOpenOptions, FilePermission, FileSystemProviderCapabilities, FileSystemProviderError, FileSystemProviderErrorCode, FileType, IFileChange, IFileSystemProvider, IStat, IWatchOptions } from 'vs/platform/files/common/files';
|
||||
import { FileChangeType, IFileOpenOptions, FilePermission, FileSystemProviderCapabilities, FileSystemProviderErrorCode, FileType, IFileChange, IFileSystemProvider, IStat, IWatchOptions, createFileSystemProviderError } from 'vs/platform/files/common/files';
|
||||
import { DEBUG_MEMORY_SCHEME, IDebugService, IDebugSession, IMemoryInvalidationEvent, IMemoryRegion, MemoryRange, MemoryRangeType, State } from 'vs/workbench/contrib/debug/common/debug';
|
||||
|
||||
const rangeRe = /range=([0-9]+):([0-9]+)/;
|
||||
@@ -83,22 +83,22 @@ export class DebugMemoryFileSystemProvider implements IFileSystemProvider {
|
||||
|
||||
/** @inheritdoc */
|
||||
public mkdir(): never {
|
||||
throw new FileSystemProviderError(`Not allowed`, FileSystemProviderErrorCode.NoPermissions);
|
||||
throw createFileSystemProviderError(`Not allowed`, FileSystemProviderErrorCode.NoPermissions);
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public readdir(): never {
|
||||
throw new FileSystemProviderError(`Not allowed`, FileSystemProviderErrorCode.NoPermissions);
|
||||
throw createFileSystemProviderError(`Not allowed`, FileSystemProviderErrorCode.NoPermissions);
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public delete(): never {
|
||||
throw new FileSystemProviderError(`Not allowed`, FileSystemProviderErrorCode.NoPermissions);
|
||||
throw createFileSystemProviderError(`Not allowed`, FileSystemProviderErrorCode.NoPermissions);
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public rename(): never {
|
||||
throw new FileSystemProviderError(`Not allowed`, FileSystemProviderErrorCode.NoPermissions);
|
||||
throw createFileSystemProviderError(`Not allowed`, FileSystemProviderErrorCode.NoPermissions);
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
@@ -125,7 +125,7 @@ export class DebugMemoryFileSystemProvider implements IFileSystemProvider {
|
||||
public async writeFile(resource: URI, content: Uint8Array) {
|
||||
const { offset } = this.parseUri(resource);
|
||||
if (!offset) {
|
||||
throw new FileSystemProviderError(`Range must be present to read a file`, FileSystemProviderErrorCode.FileNotFound);
|
||||
throw createFileSystemProviderError(`Range must be present to read a file`, FileSystemProviderErrorCode.FileNotFound);
|
||||
}
|
||||
|
||||
const fd = await this.open(resource, { create: false });
|
||||
@@ -141,7 +141,7 @@ export class DebugMemoryFileSystemProvider implements IFileSystemProvider {
|
||||
public async readFile(resource: URI) {
|
||||
const { offset } = this.parseUri(resource);
|
||||
if (!offset) {
|
||||
throw new FileSystemProviderError(`Range must be present to read a file`, FileSystemProviderErrorCode.FileNotFound);
|
||||
throw createFileSystemProviderError(`Range must be present to read a file`, FileSystemProviderErrorCode.FileNotFound);
|
||||
}
|
||||
|
||||
const data = new Uint8Array(offset.toOffset - offset.fromOffset);
|
||||
@@ -159,7 +159,7 @@ export class DebugMemoryFileSystemProvider implements IFileSystemProvider {
|
||||
public async read(fd: number, pos: number, data: Uint8Array, offset: number, length: number): Promise<number> {
|
||||
const memory = this.fdMemory.get(fd);
|
||||
if (!memory) {
|
||||
throw new FileSystemProviderError(`No file with that descriptor open`, FileSystemProviderErrorCode.Unavailable);
|
||||
throw createFileSystemProviderError(`No file with that descriptor open`, FileSystemProviderErrorCode.Unavailable);
|
||||
}
|
||||
|
||||
const ranges = await memory.region.read(pos, length);
|
||||
@@ -172,7 +172,7 @@ export class DebugMemoryFileSystemProvider implements IFileSystemProvider {
|
||||
if (readSoFar > 0) {
|
||||
return readSoFar;
|
||||
} else {
|
||||
throw new FileSystemProviderError(range.error, FileSystemProviderErrorCode.Unknown);
|
||||
throw createFileSystemProviderError(range.error, FileSystemProviderErrorCode.Unknown);
|
||||
}
|
||||
case MemoryRangeType.Valid: {
|
||||
const start = Math.max(0, pos - range.offset);
|
||||
@@ -193,7 +193,7 @@ export class DebugMemoryFileSystemProvider implements IFileSystemProvider {
|
||||
public write(fd: number, pos: number, data: Uint8Array, offset: number, length: number): Promise<number> {
|
||||
const memory = this.fdMemory.get(fd);
|
||||
if (!memory) {
|
||||
throw new FileSystemProviderError(`No file with that descriptor open`, FileSystemProviderErrorCode.Unavailable);
|
||||
throw createFileSystemProviderError(`No file with that descriptor open`, FileSystemProviderErrorCode.Unavailable);
|
||||
}
|
||||
|
||||
return memory.region.write(pos, VSBuffer.wrap(data).slice(offset, offset + length));
|
||||
@@ -201,12 +201,12 @@ export class DebugMemoryFileSystemProvider implements IFileSystemProvider {
|
||||
|
||||
protected parseUri(uri: URI) {
|
||||
if (uri.scheme !== DEBUG_MEMORY_SCHEME) {
|
||||
throw new FileSystemProviderError(`Cannot open file with scheme ${uri.scheme}`, FileSystemProviderErrorCode.FileNotFound);
|
||||
throw createFileSystemProviderError(`Cannot open file with scheme ${uri.scheme}`, FileSystemProviderErrorCode.FileNotFound);
|
||||
}
|
||||
|
||||
const session = this.debugService.getModel().getSession(uri.authority);
|
||||
if (!session) {
|
||||
throw new FileSystemProviderError(`Debug session not found`, FileSystemProviderErrorCode.FileNotFound);
|
||||
throw createFileSystemProviderError(`Debug session not found`, FileSystemProviderErrorCode.FileNotFound);
|
||||
}
|
||||
|
||||
let offset: { fromOffset: number; toOffset: number } | undefined;
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { FileSystemProviderCapabilities, IStat, FileType, IFileDeleteOptions, IFileOverwriteOptions, IFileWriteOptions, FileSystemProviderError, FileSystemProviderErrorCode, IFileSystemProviderWithFileReadWriteCapability } from 'vs/platform/files/common/files';
|
||||
import { FileSystemProviderCapabilities, IStat, FileType, IFileDeleteOptions, IFileOverwriteOptions, IFileWriteOptions, FileSystemProviderErrorCode, IFileSystemProviderWithFileReadWriteCapability, createFileSystemProviderError } from 'vs/platform/files/common/files';
|
||||
import { Event } from 'vs/base/common/event';
|
||||
import { IDisposable, Disposable } from 'vs/base/common/lifecycle';
|
||||
import { URI } from 'vs/base/common/uri';
|
||||
@@ -22,9 +22,9 @@ export class FetchFileSystemProvider implements IFileSystemProviderWithFileReadW
|
||||
if (res.status === 200) {
|
||||
return new Uint8Array(await res.arrayBuffer());
|
||||
}
|
||||
throw new FileSystemProviderError(res.statusText, FileSystemProviderErrorCode.Unknown);
|
||||
throw createFileSystemProviderError(res.statusText, FileSystemProviderErrorCode.Unknown);
|
||||
} catch (err) {
|
||||
throw new FileSystemProviderError(err, FileSystemProviderErrorCode.Unknown);
|
||||
throw createFileSystemProviderError(err, FileSystemProviderErrorCode.Unknown);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user