diff --git a/.eslintrc b/.eslintrc index 8e1f6d2486c..edd1712fc98 100644 --- a/.eslintrc +++ b/.eslintrc @@ -92,7 +92,13 @@ "no-new-wrappers": "error", "no-redeclare": "off", "no-return-await": "error", - "no-restricted-globals": "off", + "no-restricted-globals": ["error", + { "name": "setTimeout" }, + { "name": "setInterval" }, + { "name": "clearTimeout" }, + { "name": "setImmediate" }, + { "name": "clearImmediate" } + ], "no-sequences": "off", "no-shadow": "off", "no-sparse-arrays": "error", diff --git a/src/harness/harnessLanguageService.ts b/src/harness/harnessLanguageService.ts index 03ccbb5d6de..897cbddbf3e 100644 --- a/src/harness/harnessLanguageService.ts +++ b/src/harness/harnessLanguageService.ts @@ -769,19 +769,22 @@ namespace Harness.LanguageService { } setTimeout(callback: (...args: any[]) => void, ms: number, ...args: any[]): any { - // tslint:disable-next-line:ban + // eslint-disable-next-line no-restricted-globals return setTimeout(callback, ms, args); } clearTimeout(timeoutId: any): void { + // eslint-disable-next-line no-restricted-globals clearTimeout(timeoutId); } setImmediate(callback: (...args: any[]) => void, _ms: number, ...args: any[]): any { + // eslint-disable-next-line no-restricted-globals return setImmediate(callback, args); } clearImmediate(timeoutId: any): void { + // eslint-disable-next-line no-restricted-globals clearImmediate(timeoutId); } diff --git a/src/testRunner/parallel/host.ts b/src/testRunner/parallel/host.ts index 3e531561e58..1f0205e2b5b 100644 --- a/src/testRunner/parallel/host.ts +++ b/src/testRunner/parallel/host.ts @@ -297,12 +297,15 @@ namespace Harness.Parallel.Host { return process.exit(2); } case "timeout": { - if (worker.timer) clearTimeout(worker.timer); + if (worker.timer) { + // eslint-disable-next-line no-restricted-globals + clearTimeout(worker.timer); + } if (data.payload.duration === "reset") { worker.timer = undefined; } else { - // tslint:disable-next-line:ban + // eslint-disable-next-line no-restricted-globals worker.timer = setTimeout(killChild, data.payload.duration, data.payload); } break; @@ -624,7 +627,7 @@ namespace Harness.Parallel.Host { shimNoopTestInterface(global); } - // tslint:disable-next-line:ban + // eslint-disable-next-line no-restricted-globals setTimeout(() => startDelayed(perfData, totalCost), 0); // Do real startup on next tick, so all unit tests have been collected } } diff --git a/src/tsserver/server.ts b/src/tsserver/server.ts index 43dc4638418..ad999091919 100644 --- a/src/tsserver/server.ts +++ b/src/tsserver/server.ts @@ -482,6 +482,7 @@ namespace ts.server { // so we defer until the next tick. // // Construction should finish before the next tick fires, so we do not need to do this recursively. + // eslint-disable-next-line no-restricted-globals setImmediate(() => this.event(body, eventName)); } }; @@ -698,7 +699,7 @@ namespace ts.server { // stat due to inconsistencies of fs.watch // and efficiency of stat on modern filesystems function startWatchTimer() { - // tslint:disable-next-line:ban + // eslint-disable-next-line no-restricted-globals setInterval(() => { let count = 0; let nextToCheck = nextFileToCheck; @@ -881,10 +882,13 @@ namespace ts.server { }; }; + /* eslint-disable no-restricted-globals */ sys.setTimeout = setTimeout; sys.clearTimeout = clearTimeout; sys.setImmediate = setImmediate; sys.clearImmediate = clearImmediate; + /* eslint-enable no-restricted-globals */ + if (typeof global !== "undefined" && global.gc) { sys.gc = () => global.gc(); }