From b8a4b28235f65af6cea9ea91e07dd18797600f88 Mon Sep 17 00:00:00 2001 From: thesayyn Date: Tue, 10 May 2022 19:55:13 +0300 Subject: [PATCH] fix(typescript): backport #3441 --- packages/typescript/internal/worker/index.js | 10 +++++++--- .../typescript/internal/worker/worker_adapter.ts | 13 ++++++++----- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/packages/typescript/internal/worker/index.js b/packages/typescript/internal/worker/index.js index d1489dfc56..1c2de598ba 100644 --- a/packages/typescript/internal/worker/index.js +++ b/packages/typescript/internal/worker/index.js @@ -57,7 +57,8 @@ function emitOnce(args) { consolidateChangesCallback(); } workerRequestTimestamp = Date.now(); - const result = yield (watchProgram === null || watchProgram === void 0 ? void 0 : watchProgram.getProgram().emit(undefined, undefined, { + const program = watchProgram === null || watchProgram === void 0 ? void 0 : watchProgram.getProgram(); + const cancellationToken = { isCancellationRequested: function (timestamp) { return timestamp !== workerRequestTimestamp; }.bind(null, workerRequestTimestamp), @@ -66,8 +67,11 @@ function emitOnce(args) { throw new ts.OperationCanceledException(); } }.bind(null, workerRequestTimestamp), - })); - return Boolean(result && result.diagnostics.length === 0); + }; + const result = program.emit(undefined, undefined, cancellationToken); + const diagnostics = ts.getPreEmitDiagnostics(program, undefined, cancellationToken); + let succeded = result && result.diagnostics.length === 0 && diagnostics.length == 0; + return succeded; }); } function main() { diff --git a/packages/typescript/internal/worker/worker_adapter.ts b/packages/typescript/internal/worker/worker_adapter.ts index 8c9f5b7924..3c44686da1 100644 --- a/packages/typescript/internal/worker/worker_adapter.ts +++ b/packages/typescript/internal/worker/worker_adapter.ts @@ -99,9 +99,9 @@ async function emitOnce(args: string[]) { consolidateChangesCallback(); } - workerRequestTimestamp = Date.now(); - const result = await watchProgram ?.getProgram().emit(undefined, undefined, { + const program = watchProgram?.getProgram() + const cancellationToken: ts.CancellationToken = { isCancellationRequested: function(timestamp: number) { return timestamp !== workerRequestTimestamp; }.bind(null, workerRequestTimestamp), @@ -110,9 +110,12 @@ async function emitOnce(args: string[]) { throw new ts.OperationCanceledException(); } }.bind(null, workerRequestTimestamp), - }); - - return Boolean(result && result.diagnostics.length === 0); + } + + const result = program.emit(undefined, undefined, cancellationToken); + const diagnostics = ts.getPreEmitDiagnostics(program as unknown as ts.Program, undefined, cancellationToken) + let succeded = result && result.diagnostics.length === 0 && diagnostics.length == 0 + return succeded } function main() {