提交 4a27ac84 编写于 作者: J Johannes Rieken

inline`FileType2` as booleans into IStat, #47475

上级 9bcb7a0c
......@@ -180,9 +180,11 @@ export interface FileOptions {
}
export interface IStat {
isFile: boolean;
isDirectory: boolean;
isSymbolicLink: boolean;
mtime: number;
size: number;
type: FileType2;
}
export interface IWatchOptions {
......
......@@ -123,14 +123,10 @@ declare module 'vscode' {
uri: Uri;
}
export enum FileType2 {
File = 0b001,
Directory = 0b010,
SymbolicLink = 0b100,
}
export interface FileStat2 {
type: FileType2;
isFile: boolean;
isDirectory: boolean;
isSymbolicLink: boolean;
mtime: number;
size: number;
}
......
......@@ -700,7 +700,6 @@ export function createApiFactory(
DeprecatedFileChangeType: extHostTypes.FileChangeType,
DeprecatedFileType: extHostTypes.FileType,
FileChangeType2: extHostTypes.FileChangeType2,
FileType2: extHostTypes.FileType2,
FileSystemError: extHostTypes.FileSystemError,
FoldingRange: extHostTypes.FoldingRange,
FoldingRangeKind: extHostTypes.FoldingRangeKind
......
......@@ -14,7 +14,7 @@ import * as path from 'path';
import { IDisposable } from 'vs/base/common/lifecycle';
import { asWinJsPromise } from 'vs/base/common/async';
import { values } from 'vs/base/common/map';
import { Range, FileType, FileChangeType, FileChangeType2, FileType2 } from 'vs/workbench/api/node/extHostTypes';
import { Range, FileType, FileChangeType, FileChangeType2 } from 'vs/workbench/api/node/extHostTypes';
import { ExtHostLanguageFeatures } from 'vs/workbench/api/node/extHostLanguageFeatures';
import { Schemas } from 'vs/base/common/network';
......@@ -91,21 +91,23 @@ class FileSystemProviderShim implements vscode.FileSystemProvider2 {
private static _modernizeFileStat(stat: vscode.DeprecatedFileStat): vscode.FileStat2 {
let { mtime, size, type } = stat;
let newType: vscode.FileType2;
let isFile = false;
let isDirectory = false;
let isSymbolicLink = false;
// no support for bitmask, effectively no support for symlinks
switch (type) {
case FileType.Dir:
newType = FileType2.Directory;
isDirectory = true;
break;
case FileType.File:
newType = FileType2.File;
isFile = true;
break;
case FileType.Symlink:
newType = FileType2.SymbolicLink;
isSymbolicLink = true;
break;
}
return { mtime, size, type: newType };
return { mtime, size, isFile, isDirectory, isSymbolicLink };
}
private static _modernizeFileChange(e: vscode.DeprecatedFileChange): vscode.FileChange2 {
......
......@@ -1832,12 +1832,6 @@ export enum FileType {
Symlink = 2
}
export enum FileType2 {
File = 1,
Directory = 2,
SymbolicLink = 4,
}
export class FileSystemError extends Error {
static EntryExists(message?: string): FileSystemError {
......
......@@ -16,7 +16,7 @@ import { ITextResourceConfigurationService } from 'vs/editor/common/services/res
import { localize } from 'vs/nls';
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
import { FileChangesEvent, FileOperation, FileOperationError, FileOperationEvent, FileOperationResult, FileType2, IContent, ICreateFileOptions, IFileStat, IFileSystemProvider, IFilesConfiguration, IResolveContentOptions, IResolveFileOptions, IResolveFileResult, IStat, IStreamContent, ITextSnapshot, IUpdateContentOptions, StringSnapshot, FileSystemProviderCapabilities, FileOptions } from 'vs/platform/files/common/files';
import { FileChangesEvent, FileOperation, FileOperationError, FileOperationEvent, FileOperationResult, IContent, ICreateFileOptions, IFileStat, IFileSystemProvider, IFilesConfiguration, IResolveContentOptions, IResolveFileOptions, IResolveFileResult, IStat, IStreamContent, ITextSnapshot, IUpdateContentOptions, StringSnapshot, FileSystemProviderCapabilities, FileOptions } from 'vs/platform/files/common/files';
import { ILifecycleService } from 'vs/platform/lifecycle/common/lifecycle';
import { INotificationService } from 'vs/platform/notification/common/notification';
import { IStorageService } from 'vs/platform/storage/common/storage';
......@@ -28,10 +28,10 @@ import { createReadableOfProvider, createReadableOfSnapshot, createWritableOfPro
function toIFileStat(provider: IFileSystemProvider, tuple: [URI, IStat], recurse?: (tuple: [URI, IStat]) => boolean): TPromise<IFileStat> {
const [resource, stat] = tuple;
const fileStat: IFileStat = {
isDirectory: (stat.type & FileType2.Directory) !== 0,
isSymbolicLink: (stat.type & FileType2.SymbolicLink) !== 0,
resource: resource,
resource,
name: posix.basename(resource.path),
isDirectory: stat.isDirectory,
isSymbolicLink: stat.isSymbolicLink,
mtime: stat.mtime,
size: stat.size,
etag: stat.mtime.toString(29) + stat.size.toString(31),
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册