Skip to content

Commit 4d49354

Browse files
authored
Get preEmit diagnostics from TypeScript before transforming (#1301)
1 parent 157c35b commit 4d49354

File tree

4 files changed

+29
-16
lines changed

4 files changed

+29
-16
lines changed

src/transpilation/index.ts

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,9 @@ export function transpileFiles(
1919
writeFile?: ts.WriteFileCallback
2020
): EmitResult {
2121
const program = ts.createProgram(rootNames, options);
22+
const preEmitDiagnostics = ts.getPreEmitDiagnostics(program);
2223
const { diagnostics: transpileDiagnostics, emitSkipped } = new Transpiler().emit({ program, writeFile });
23-
const diagnostics = ts.sortAndDeduplicateDiagnostics([
24-
...ts.getPreEmitDiagnostics(program),
25-
...transpileDiagnostics,
26-
]);
24+
const diagnostics = ts.sortAndDeduplicateDiagnostics([...preEmitDiagnostics, ...transpileDiagnostics]);
2725

2826
return { diagnostics: [...diagnostics], emitSkipped };
2927
}
@@ -98,12 +96,10 @@ export function transpileVirtualProject(
9896
options: CompilerOptions = {}
9997
): TranspileVirtualProjectResult {
10098
const program = createVirtualProgram(files, options);
99+
const preEmitDiagnostics = ts.getPreEmitDiagnostics(program);
101100
const collector = createEmitOutputCollector();
102101
const { diagnostics: transpileDiagnostics } = new Transpiler().emit({ program, writeFile: collector.writeFile });
103-
const diagnostics = ts.sortAndDeduplicateDiagnostics([
104-
...ts.getPreEmitDiagnostics(program),
105-
...transpileDiagnostics,
106-
]);
102+
const diagnostics = ts.sortAndDeduplicateDiagnostics([...preEmitDiagnostics, ...transpileDiagnostics]);
107103

108104
return { diagnostics: [...diagnostics], transpiledFiles: collector.files };
109105
}

src/tstl.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -102,12 +102,11 @@ function performCompilation(
102102
configFileParsingDiagnostics,
103103
});
104104

105+
const preEmitDiagnostics = ts.getPreEmitDiagnostics(program);
106+
105107
const { diagnostics: transpileDiagnostics, emitSkipped } = new tstl.Transpiler().emit({ program });
106108

107-
const diagnostics = ts.sortAndDeduplicateDiagnostics([
108-
...ts.getPreEmitDiagnostics(program),
109-
...transpileDiagnostics,
110-
]);
109+
const diagnostics = ts.sortAndDeduplicateDiagnostics([...preEmitDiagnostics, ...transpileDiagnostics]);
111110

112111
diagnostics.forEach(reportDiagnostic);
113112
const exitCode =

test/unit/comments.spec.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,3 +93,23 @@ test("JSDoc is copied on a variable", () => {
9393
expect(lua).toBeDefined();
9494
expect(lua).toContain("This is a variable comment.");
9595
});
96+
97+
// https://github.com/TypeScriptToLua/TypeScriptToLua/issues/1299
98+
test("tsdoc comment does not cause a diagnostic (#1299)", () => {
99+
util.testModule`
100+
interface LuaBootstrap {
101+
/**
102+
* @remarks
103+
*
104+
* Links can point to a URL: {@link https://github.com/microsoft/tsdoc}
105+
*/
106+
on_init(f: (() => void) ): void
107+
}
108+
109+
const script : LuaBootstrap = {
110+
on_init: (x) => x()
111+
}
112+
113+
script.on_init(() => {})
114+
`.expectToHaveNoDiagnostics();
115+
});

test/util.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -223,17 +223,15 @@ export abstract class TestBuilder {
223223
@memoize
224224
public getLuaResult(): tstl.TranspileVirtualProjectResult {
225225
const program = this.getProgram();
226+
const preEmitDiagnostics = ts.getPreEmitDiagnostics(program);
226227
const collector = createEmitOutputCollector();
227228
const { diagnostics: transpileDiagnostics } = new tstl.Transpiler({ emitHost: this.getEmitHost() }).emit({
228229
program,
229230
customTransformers: this.customTransformers,
230231
writeFile: collector.writeFile,
231232
});
232233

233-
const diagnostics = ts.sortAndDeduplicateDiagnostics([
234-
...ts.getPreEmitDiagnostics(program),
235-
...transpileDiagnostics,
236-
]);
234+
const diagnostics = ts.sortAndDeduplicateDiagnostics([...preEmitDiagnostics, ...transpileDiagnostics]);
237235

238236
return { diagnostics: [...diagnostics], transpiledFiles: collector.files };
239237
}

0 commit comments

Comments
 (0)