Skip to content

Commit d461689

Browse files
authored
fix: compiler crashes are not handled (#806)
1 parent d3b462e commit d461689

File tree

1 file changed

+25
-13
lines changed

1 file changed

+25
-13
lines changed

src/typescript/worker/lib/diagnostics.ts

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -30,20 +30,32 @@ export function invalidateDiagnostics(): void {
3030

3131
export function getDiagnosticsOfProgram(program: ts.Program | ts.BuilderProgram): ts.Diagnostic[] {
3232
const programDiagnostics: ts.Diagnostic[] = [];
33-
34-
if (config.diagnosticOptions.syntactic) {
35-
programDiagnostics.push(...program.getSyntacticDiagnostics());
36-
}
37-
if (config.diagnosticOptions.global) {
38-
programDiagnostics.push(...program.getGlobalDiagnostics());
39-
}
40-
if (config.diagnosticOptions.semantic) {
41-
programDiagnostics.push(...program.getSemanticDiagnostics());
42-
}
43-
if (config.diagnosticOptions.declaration) {
44-
programDiagnostics.push(...program.getDeclarationDiagnostics());
33+
try {
34+
if (config.diagnosticOptions.syntactic) {
35+
programDiagnostics.push(...program.getSyntacticDiagnostics());
36+
}
37+
if (config.diagnosticOptions.global) {
38+
programDiagnostics.push(...program.getGlobalDiagnostics());
39+
}
40+
if (config.diagnosticOptions.semantic) {
41+
programDiagnostics.push(...program.getSemanticDiagnostics());
42+
}
43+
if (config.diagnosticOptions.declaration) {
44+
programDiagnostics.push(...program.getDeclarationDiagnostics());
45+
}
46+
} catch (e) {
47+
if (e instanceof Error) {
48+
programDiagnostics.push({
49+
code: 1,
50+
category: 1,
51+
messageText: `TSC compiler crashed: ${e.message}
52+
${e.stack}`,
53+
file: undefined,
54+
start: undefined,
55+
length: undefined,
56+
});
57+
}
4558
}
46-
4759
return programDiagnostics;
4860
}
4961

0 commit comments

Comments
 (0)