diff --git a/src/vs/base/common/types.ts b/src/vs/base/common/types.ts index 08063ae38d1..c35da047d1f 100644 --- a/src/vs/base/common/types.ts +++ b/src/vs/base/common/types.ts @@ -224,3 +224,11 @@ export type AddFirstParameterToFunctions; */ export type AtLeastOne }> = Partial & U[keyof U]; + + +/** + * A type that removed readonly-less from all properties of `T` + */ +export type Mutable = { + -readonly [P in keyof T]: T[P] +}; diff --git a/src/vs/editor/common/core/wordHelper.ts b/src/vs/editor/common/core/wordHelper.ts index cdb2d4b8bfb..862d94ccb06 100644 --- a/src/vs/editor/common/core/wordHelper.ts +++ b/src/vs/editor/common/core/wordHelper.ts @@ -61,7 +61,7 @@ export function ensureValidWordDefinition(wordDefinition?: RegExp | null): RegEx if (wordDefinition.multiline) { flags += 'm'; } - if ((wordDefinition as any).unicode) { + if (wordDefinition.unicode) { flags += 'u'; } result = new RegExp(wordDefinition.source, flags); diff --git a/src/vs/platform/remote/common/remoteAuthorityResolver.ts b/src/vs/platform/remote/common/remoteAuthorityResolver.ts index 87ec7fead5e..607f53c8c9e 100644 --- a/src/vs/platform/remote/common/remoteAuthorityResolver.ts +++ b/src/vs/platform/remote/common/remoteAuthorityResolver.ts @@ -97,9 +97,7 @@ export class RemoteAuthorityResolverError extends ErrorNoTelemetry { // workaround when extending builtin objects and when compiling to ES5, see: // https://github.com/microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work - if (typeof (Object).setPrototypeOf === 'function') { - (Object).setPrototypeOf(this, RemoteAuthorityResolverError.prototype); - } + Object.setPrototypeOf(this, RemoteAuthorityResolverError.prototype); } } diff --git a/src/vs/workbench/api/common/extHostTypes.ts b/src/vs/workbench/api/common/extHostTypes.ts index 858a37b9a8e..66286db4e95 100644 --- a/src/vs/workbench/api/common/extHostTypes.ts +++ b/src/vs/workbench/api/common/extHostTypes.ts @@ -515,9 +515,7 @@ export class RemoteAuthorityResolverError extends Error { // workaround when extending builtin objects and when compiling to ES5, see: // https://github.com/microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work - if (typeof (Object).setPrototypeOf === 'function') { - (Object).setPrototypeOf(this, RemoteAuthorityResolverError.prototype); - } + Object.setPrototypeOf(this, RemoteAuthorityResolverError.prototype); } } @@ -2954,9 +2952,7 @@ export class FileSystemError extends Error { // workaround when extending builtin objects and when compiling to ES5, see: // https://github.com/microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work - if (typeof (Object).setPrototypeOf === 'function') { - (Object).setPrototypeOf(this, FileSystemError.prototype); - } + Object.setPrototypeOf(this, FileSystemError.prototype); if (typeof Error.captureStackTrace === 'function' && typeof terminator === 'function') { // nice stack traces diff --git a/src/vs/workbench/api/common/extensionHostMain.ts b/src/vs/workbench/api/common/extensionHostMain.ts index 88bc7909828..623777165ba 100644 --- a/src/vs/workbench/api/common/extensionHostMain.ts +++ b/src/vs/workbench/api/common/extensionHostMain.ts @@ -11,7 +11,7 @@ import { IMessagePassingProtocol } from 'vs/base/parts/ipc/common/ipc'; import { MainContext, MainThreadConsoleShape } from 'vs/workbench/api/common/extHost.protocol'; import { IExtensionHostInitData } from 'vs/workbench/services/extensions/common/extensionHostProtocol'; import { RPCProtocol } from 'vs/workbench/services/extensions/common/rpcProtocol'; -import { ExtensionIdentifier, IExtensionDescription } from 'vs/platform/extensions/common/extensions'; +import { ExtensionIdentifier, IExtensionDescription, IRelaxedExtensionDescription } from 'vs/platform/extensions/common/extensions'; import { ILogService } from 'vs/platform/log/common/log'; import { getSingletonServiceDescriptors } from 'vs/platform/instantiation/common/extensions'; import { ServiceCollection } from 'vs/platform/instantiation/common/serviceCollection'; @@ -22,6 +22,7 @@ import { IExtHostRpcService, ExtHostRpcService } from 'vs/workbench/api/common/e import { IURITransformerService, URITransformerService } from 'vs/workbench/api/common/extHostUriTransformerService'; import { IExtHostExtensionService, IHostUtils } from 'vs/workbench/api/common/extHostExtensionService'; import { IExtHostTelemetry } from 'vs/workbench/api/common/extHostTelemetry'; +import { Mutable } from 'vs/base/common/types'; export interface IExitFn { (code?: number): any; @@ -163,11 +164,11 @@ export class ExtensionHostMain { private static _transform(initData: IExtensionHostInitData, rpcProtocol: RPCProtocol): IExtensionHostInitData { initData.allExtensions.forEach((ext) => { - (ext).extensionLocation = URI.revive(rpcProtocol.transformIncomingURIs(ext.extensionLocation)); + (>ext).extensionLocation = URI.revive(rpcProtocol.transformIncomingURIs(ext.extensionLocation)); const browserNlsBundleUris: { [language: string]: URI } = {}; if (ext.browserNlsBundleUris) { Object.keys(ext.browserNlsBundleUris).forEach(lang => browserNlsBundleUris[lang] = URI.revive(rpcProtocol.transformIncomingURIs(ext.browserNlsBundleUris![lang]))); - (ext).browserNlsBundleUris = browserNlsBundleUris; + (>ext).browserNlsBundleUris = browserNlsBundleUris; } }); initData.environment.appRoot = URI.revive(rpcProtocol.transformIncomingURIs(initData.environment.appRoot)); diff --git a/src/vs/workbench/contrib/bulkEdit/browser/preview/bulkEditPane.ts b/src/vs/workbench/contrib/bulkEdit/browser/preview/bulkEditPane.ts index 8e0108c20df..ac7a2b01767 100644 --- a/src/vs/workbench/contrib/bulkEdit/browser/preview/bulkEditPane.ts +++ b/src/vs/workbench/contrib/bulkEdit/browser/preview/bulkEditPane.ts @@ -38,6 +38,7 @@ import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { ResourceEdit } from 'vs/editor/browser/services/bulkEditService'; import { ButtonBar } from 'vs/base/browser/ui/button/button'; import { defaultButtonStyles } from 'vs/platform/theme/browser/defaultStyles'; +import { Mutable } from 'vs/base/common/types'; const enum State { Data = 'data', @@ -314,9 +315,6 @@ export class BulkEditPane extends ViewPane { } private async _openElementAsEditor(e: IOpenEvent): Promise { - type Mutable = { - -readonly [P in keyof T]: T[P] - }; const options: Mutable = { ...e.editorOptions }; let fileElement: FileElement; diff --git a/src/vs/workbench/contrib/comments/browser/commentsEditorContribution.ts b/src/vs/workbench/contrib/comments/browser/commentsEditorContribution.ts index da5c81f2b62..021e56c0edb 100644 --- a/src/vs/workbench/contrib/comments/browser/commentsEditorContribution.ts +++ b/src/vs/workbench/contrib/comments/browser/commentsEditorContribution.ts @@ -698,7 +698,7 @@ export class CommentController implements IEditorContribution { return; } - const matchedNewCommentThreadZones = this._commentWidgets.filter(zoneWidget => zoneWidget.owner === e.owner && (zoneWidget.commentThread as any).commentThreadHandle === -1 && Range.equalsRange(zoneWidget.commentThread.range, thread.range)); + const matchedNewCommentThreadZones = this._commentWidgets.filter(zoneWidget => zoneWidget.owner === e.owner && zoneWidget.commentThread.commentThreadHandle === -1 && Range.equalsRange(zoneWidget.commentThread.range, thread.range)); if (matchedNewCommentThreadZones.length) { matchedNewCommentThreadZones[0].update(thread); diff --git a/src/vs/workbench/services/remote/common/remoteAgentEnvironmentChannel.ts b/src/vs/workbench/services/remote/common/remoteAgentEnvironmentChannel.ts index 35bfae00a4d..a50a0bdab19 100644 --- a/src/vs/workbench/services/remote/common/remoteAgentEnvironmentChannel.ts +++ b/src/vs/workbench/services/remote/common/remoteAgentEnvironmentChannel.ts @@ -12,6 +12,7 @@ import { IRemoteAgentEnvironment } from 'vs/platform/remote/common/remoteAgentEn import { IDiagnosticInfoOptions, IDiagnosticInfo } from 'vs/platform/diagnostics/common/diagnostics'; import { ITelemetryData, TelemetryLevel } from 'vs/platform/telemetry/common/telemetry'; import { IExtensionHostExitInfo } from 'vs/workbench/services/remote/common/remoteAgentService'; +import { Mutable } from 'vs/base/common/types'; export interface IGetEnvironmentDataArguments { remoteAuthority: string; @@ -118,7 +119,7 @@ export class RemoteExtensionEnvironmentChannelClient { const extension = await channel.call('scanSingleExtension', args); if (extension) { - (extension).extensionLocation = URI.revive(extension.extensionLocation); + (>extension).extensionLocation = URI.revive(extension.extensionLocation); } return extension; } diff --git a/src/vs/workbench/services/themes/common/plistParser.ts b/src/vs/workbench/services/themes/common/plistParser.ts index d51ce513f66..a9c83450b0e 100644 --- a/src/vs/workbench/services/themes/common/plistParser.ts +++ b/src/vs/workbench/services/themes/common/plistParser.ts @@ -326,9 +326,9 @@ function _parse(content: string, filename: string | null, locationKeyName: strin function escapeVal(str: string): string { return str.replace(/&#([0-9]+);/g, function (_: string, m0: string) { - return (String).fromCodePoint(parseInt(m0, 10)); + return String.fromCodePoint(parseInt(m0, 10)); }).replace(/&#x([0-9a-f]+);/g, function (_: string, m0: string) { - return (String).fromCodePoint(parseInt(m0, 16)); + return String.fromCodePoint(parseInt(m0, 16)); }).replace(/&|<|>|"|'/g, function (_: string) { switch (_) { case '&': return '&';