Skip to content

Commit e4842c1

Browse files
authored
fix(typescript): correctly process diagnostics in worker mode (#3441)
1 parent 55a84d1 commit e4842c1

2 files changed

Lines changed: 15 additions & 8 deletions

File tree

‎packages/typescript/internal/worker/index.js‎

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,8 @@ function emitOnce(args) {
5757
consolidateChangesCallback();
5858
}
5959
workerRequestTimestamp=Date.now();
60-
constresult=yield(watchProgram===null||watchProgram===void0 ? void0 : watchProgram.getProgram().emit(undefined,undefined,{
60+
constprogram=watchProgram===null||watchProgram===void0 ? void0 : watchProgram.getProgram();
61+
constcancellationToken={
6162
isCancellationRequested: function(timestamp){
6263
returntimestamp!==workerRequestTimestamp;
6364
}.bind(null,workerRequestTimestamp),
@@ -66,8 +67,11 @@ function emitOnce(args) {
6667
thrownewts.OperationCanceledException();
6768
}
6869
}.bind(null,workerRequestTimestamp),
69-
}));
70-
returnBoolean(result&&result.diagnostics.length===0);
70+
};
71+
constresult=program.emit(undefined,undefined,cancellationToken);
72+
constdiagnostics=ts.getPreEmitDiagnostics(program,undefined,cancellationToken);
73+
letsucceded=result&&result.diagnostics.length===0&&diagnostics.length==0;
74+
returnsucceded;
7175
});
7276
}
7377
functionmain(){

‎packages/typescript/internal/worker/worker_adapter.ts‎

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -99,9 +99,9 @@ async function emitOnce(args: string[]) {
9999
consolidateChangesCallback();
100100
}
101101

102-
103102
workerRequestTimestamp=Date.now();
104-
constresult=awaitwatchProgram?.getProgram().emit(undefined,undefined,{
103+
constprogram=watchProgram?.getProgram()
104+
constcancellationToken: ts.CancellationToken={
105105
isCancellationRequested: function(timestamp: number){
106106
returntimestamp!==workerRequestTimestamp;
107107
}.bind(null,workerRequestTimestamp),
@@ -110,9 +110,12 @@ async function emitOnce(args: string[]) {
110110
thrownewts.OperationCanceledException();
111111
}
112112
}.bind(null,workerRequestTimestamp),
113-
});
114-
115-
returnBoolean(result&&result.diagnostics.length===0);
113+
}
114+
115+
constresult=program.emit(undefined,undefined,cancellationToken);
116+
constdiagnostics=ts.getPreEmitDiagnostics(programasunknownasts.Program,undefined,cancellationToken)
117+
letsucceded=result&&result.diagnostics.length===0&&diagnostics.length==0
118+
returnsucceded
116119
}
117120

118121
functionmain(){

0 commit comments

Comments
 (0)