diff --git a/src/tsconfig.base.json b/src/tsconfig.base.json index 2235d2eefa5..cebdfa90b3c 100644 --- a/src/tsconfig.base.json +++ b/src/tsconfig.base.json @@ -9,6 +9,7 @@ "noUnusedLocals": true, "noImplicitThis": true, "alwaysStrict": true, + "strictBindCallApply": true, "baseUrl": ".", "paths": { "vs/*": [ diff --git a/src/vs/base/test/common/winjs.promise.test.ts b/src/vs/base/test/common/winjs.promise.test.ts index 6296496c304..15c9aa68112 100644 --- a/src/vs/base/test/common/winjs.promise.test.ts +++ b/src/vs/base/test/common/winjs.promise.test.ts @@ -52,7 +52,7 @@ suite('WinJS and ES6 Promises', function () { let p1 = winjs.Promise.wrap(new Promise(function (c, e) { c(1); })); let thenFunc = p1.then.bind(p1); setTimeout(() => { - thenFunc(() => { }); + thenFunc(() => 0); }, 0); }); @@ -62,7 +62,7 @@ suite('WinJS and ES6 Promises', function () { let thenFunc = p1.then.bind(p1); setTimeout(() => { c(1); - thenFunc(() => { }); + thenFunc(() => 0); }, 0); }); }); diff --git a/src/vs/editor/standalone/browser/simpleServices.ts b/src/vs/editor/standalone/browser/simpleServices.ts index d37e49b266e..b0818279377 100644 --- a/src/vs/editor/standalone/browser/simpleServices.ts +++ b/src/vs/editor/standalone/browser/simpleServices.ts @@ -242,7 +242,7 @@ export class StandaloneCommandService implements ICommandService { try { this._onWillExecuteCommand.fire({ commandId: id }); - const result = this._instantiationService.invokeFunction.apply(this._instantiationService, [command.handler].concat(args)); + const result = this._instantiationService.invokeFunction.apply(this._instantiationService, [command.handler, ...args]) as T; return Promise.resolve(result); } catch (err) { return Promise.reject(err); diff --git a/src/vs/editor/test/browser/editorTestServices.ts b/src/vs/editor/test/browser/editorTestServices.ts index 0dcd664e89b..4f27495b5ab 100644 --- a/src/vs/editor/test/browser/editorTestServices.ts +++ b/src/vs/editor/test/browser/editorTestServices.ts @@ -44,7 +44,7 @@ export class TestCommandService implements ICommandService { try { this._onWillExecuteCommand.fire({ commandId: id }); - const result = this._instantiationService.invokeFunction.apply(this._instantiationService, [command.handler].concat(args)); + const result = this._instantiationService.invokeFunction.apply(this._instantiationService, [command.handler, ...args]) as T; return Promise.resolve(result); } catch (err) { return Promise.reject(err); diff --git a/src/vs/platform/instantiation/common/instantiationService.ts b/src/vs/platform/instantiation/common/instantiationService.ts index b1b28925e47..62cf3155487 100644 --- a/src/vs/platform/instantiation/common/instantiationService.ts +++ b/src/vs/platform/instantiation/common/instantiationService.ts @@ -37,7 +37,7 @@ export class InstantiationService implements IInstantiationService { let _trace = Trace.traceInvocation(fn); let _done = false; try { - let accessor = { + const accessor: ServicesAccessor = { get: (id: ServiceIdentifier, isOptional?: typeof optional) => { if (_done) { @@ -51,7 +51,7 @@ export class InstantiationService implements IInstantiationService { return result; } }; - return fn.apply(undefined, [accessor].concat(args)); + return fn.apply(undefined, [accessor, ...args]); } finally { _done = true; _trace.stop(); diff --git a/src/vs/workbench/api/node/extHost.api.impl.ts b/src/vs/workbench/api/node/extHost.api.impl.ts index a6ba7257639..353a2dedce7 100644 --- a/src/vs/workbench/api/node/extHost.api.impl.ts +++ b/src/vs/workbench/api/node/extHost.api.impl.ts @@ -72,7 +72,7 @@ function proposedApiFunction(extension: IExtensionDescription, fn: T): T { if (extension.enableProposedApi) { return fn; } else { - return throwProposedApiError.bind(null, extension); + return throwProposedApiError.bind(null, extension) as any as T; } } diff --git a/src/vs/workbench/api/node/extHostFileSystemEventService.ts b/src/vs/workbench/api/node/extHostFileSystemEventService.ts index de9d856f866..2a44937ed2c 100644 --- a/src/vs/workbench/api/node/extHostFileSystemEventService.ts +++ b/src/vs/workbench/api/node/extHostFileSystemEventService.ts @@ -131,9 +131,9 @@ export class ExtHostFileSystemEventService implements ExtHostFileSystemEventServ getOnWillRenameFileEvent(extension: IExtensionDescription): Event { return (listener, thisArg, disposables) => { - let wrappedListener = function () { - listener.apply(thisArg, arguments); - }; + const wrappedListener: WillRenameListener = ((e: vscode.FileWillRenameEvent) => { + listener.call(thisArg, e); + }); wrappedListener.extension = extension; return this._onWillRenameFile.event(wrappedListener, undefined, disposables); }; diff --git a/src/vs/workbench/browser/parts/views/customView.ts b/src/vs/workbench/browser/parts/views/customView.ts index 812d654460a..649836e5be7 100644 --- a/src/vs/workbench/browser/parts/views/customView.ts +++ b/src/vs/workbench/browser/parts/views/customView.ts @@ -451,7 +451,7 @@ export class CustomTreeView extends Disposable implements ITreeView { getOptimalWidth(): number { if (this.tree) { const parentNode = this.tree.getHTMLElement(); - const childNodes = ([] as Element[]).slice.call(parentNode.querySelectorAll('.outline-item-label > a')); + const childNodes = ([] as HTMLElement[]).slice.call(parentNode.querySelectorAll('.outline-item-label > a')); return DOM.getLargestChildWidth(parentNode, childNodes); } return 0; diff --git a/src/vs/workbench/node/proxyResolver.ts b/src/vs/workbench/node/proxyResolver.ts index fc6cd318bd2..72534ea9ad5 100644 --- a/src/vs/workbench/node/proxyResolver.ts +++ b/src/vs/workbench/node/proxyResolver.ts @@ -227,7 +227,7 @@ function patches(originals: typeof http | typeof https, agent: http.Agent, setti const config = onRequest && ((options)._vscodeProxySupport || /* LS */ (options)._vscodeSystemProxy) || setting.config; if (config === 'off') { - return original.apply(null, arguments); + return original.apply(null, arguments as unknown as any[]); } if (!options.socketPath && (config === 'override' || config === 'on' && !options.agent) && options.agent !== agent) { @@ -247,7 +247,7 @@ function patches(originals: typeof http | typeof https, agent: http.Agent, setti return original(options, callback); } - return original.apply(null, arguments); + return original.apply(null, arguments as unknown as any[]); } return patched; } diff --git a/src/vs/workbench/parts/files/electron-browser/views/explorerView.ts b/src/vs/workbench/parts/files/electron-browser/views/explorerView.ts index 0bf4c3e7f24..fe75b09dabe 100644 --- a/src/vs/workbench/parts/files/electron-browser/views/explorerView.ts +++ b/src/vs/workbench/parts/files/electron-browser/views/explorerView.ts @@ -472,7 +472,7 @@ export class ExplorerView extends TreeViewsViewletPanel implements IExplorerView public getOptimalWidth(): number { const parentNode = this.explorerViewer.getHTMLElement(); - const childNodes = ([] as Element[]).slice.call(parentNode.querySelectorAll('.explorer-item .label-name')); // select all file labels + const childNodes = ([] as HTMLElement[]).slice.call(parentNode.querySelectorAll('.explorer-item .label-name')); // select all file labels return DOM.getLargestChildWidth(parentNode, childNodes); } diff --git a/src/vs/workbench/services/commands/common/commandService.ts b/src/vs/workbench/services/commands/common/commandService.ts index c1b71485ed6..7de13edb749 100644 --- a/src/vs/workbench/services/commands/common/commandService.ts +++ b/src/vs/workbench/services/commands/common/commandService.ts @@ -60,7 +60,7 @@ export class CommandService extends Disposable implements ICommandService { } try { this._onWillExecuteCommand.fire({ commandId: id }); - const result = this._instantiationService.invokeFunction.apply(this._instantiationService, [command.handler].concat(args)); + const result = this._instantiationService.invokeFunction.apply(this._instantiationService, [command.handler, ...args]); return Promise.resolve(result); } catch (err) { return Promise.reject(err); diff --git a/src/vs/workbench/services/extensions/electron-browser/extensionHostProcessManager.ts b/src/vs/workbench/services/extensions/electron-browser/extensionHostProcessManager.ts index 28da54a0eb7..188a2894f35 100644 --- a/src/vs/workbench/services/extensions/electron-browser/extensionHostProcessManager.ts +++ b/src/vs/workbench/services/extensions/electron-browser/extensionHostProcessManager.ts @@ -224,7 +224,7 @@ class RPCLogger implements IRPCProtocolLogger { } else { args.push(data); } - console.log.apply(console, args); + console.log.apply(console, args as [string, ...string[]]); } logIncoming(msgLength: number, req: number, initiator: RequestInitiator, str: string, data?: any): void {