Skip to content

Commit 626c88b

Browse files
committed
Make processDiagnosticMessages generate a module
1 parent 7519997 commit 626c88b

File tree

1 file changed

+18
-17
lines changed

1 file changed

+18
-17
lines changed

Diff for: scripts/processDiagnosticMessages.ts

+18-17
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,7 @@ function main(): void {
3838
}
3939
}
4040

41-
const outputFilesDir = path.dirname(inputFilePath);
42-
const thisFilePathRel = path.relative(process.cwd(), outputFilesDir);
43-
44-
const infoFileOutput = buildInfoFileOutput(diagnosticMessages, `./${path.basename(inputFilePath)}`, thisFilePathRel);
41+
const infoFileOutput = buildInfoFileOutput(diagnosticMessages, inputFilePath);
4542
checkForUniqueCodes(diagnosticMessages);
4643
writeFile("diagnosticInformationMap.generated.ts", infoFileOutput);
4744

@@ -59,28 +56,32 @@ function checkForUniqueCodes(diagnosticTable: InputDiagnosticMessageTable) {
5956
});
6057
}
6158

62-
function buildInfoFileOutput(messageTable: InputDiagnosticMessageTable, inputFilePathRel: string, thisFilePathRel: string): string {
63-
let result =
64-
"// <auto-generated />\r\n" +
65-
"// generated from '" + inputFilePathRel + "' in '" + thisFilePathRel.replace(/\\/g, "/") + "'\r\n" +
66-
"/* @internal */\r\n" +
67-
"namespace ts {\r\n" +
68-
" function diag(code: number, category: DiagnosticCategory, key: string, message: string, reportsUnnecessary?: {}, elidedInCompatabilityPyramid?: boolean, reportsDeprecated?: {}): DiagnosticMessage {\r\n" +
69-
" return { code, category, key, message, reportsUnnecessary, elidedInCompatabilityPyramid, reportsDeprecated };\r\n" +
70-
" }\r\n" +
71-
" export const Diagnostics = {\r\n";
59+
function buildInfoFileOutput(messageTable: InputDiagnosticMessageTable, inputFilePathRel: string): string {
60+
const result = [
61+
"// <auto-generated />",
62+
`// generated from '${inputFilePathRel}'`,
63+
"",
64+
"import { DiagnosticCategory, DiagnosticMessage } from \"./types\";",
65+
"",
66+
"function diag(code: number, category: DiagnosticCategory, key: string, message: string, reportsUnnecessary?: {}, elidedInCompatabilityPyramid?: boolean, reportsDeprecated?: {}): DiagnosticMessage {",
67+
" return { code, category, key, message, reportsUnnecessary, elidedInCompatabilityPyramid, reportsDeprecated };",
68+
"}",
69+
"",
70+
"/** @internal */",
71+
"export const Diagnostics = {",
72+
];
7273
messageTable.forEach(({ code, category, reportsUnnecessary, elidedInCompatabilityPyramid, reportsDeprecated }, name) => {
7374
const propName = convertPropertyName(name);
7475
const argReportsUnnecessary = reportsUnnecessary ? `, /*reportsUnnecessary*/ ${reportsUnnecessary}` : "";
7576
const argElidedInCompatabilityPyramid = elidedInCompatabilityPyramid ? `${!reportsUnnecessary ? ", /*reportsUnnecessary*/ undefined" : ""}, /*elidedInCompatabilityPyramid*/ ${elidedInCompatabilityPyramid}` : "";
7677
const argReportsDeprecated = reportsDeprecated ? `${!argElidedInCompatabilityPyramid ? ", /*reportsUnnecessary*/ undefined, /*elidedInCompatabilityPyramid*/ undefined" : ""}, /*reportsDeprecated*/ ${reportsDeprecated}` : "";
7778

78-
result += ` ${propName}: diag(${code}, DiagnosticCategory.${category}, "${createKey(propName, code)}", ${JSON.stringify(name)}${argReportsUnnecessary}${argElidedInCompatabilityPyramid}${argReportsDeprecated}),\r\n`;
79+
result.push(` ${propName}: diag(${code}, DiagnosticCategory.${category}, "${createKey(propName, code)}", ${JSON.stringify(name)}${argReportsUnnecessary}${argElidedInCompatabilityPyramid}${argReportsDeprecated}),`);
7980
});
8081

81-
result += " };\r\n}";
82+
result.push("};");
8283

83-
return result;
84+
return result.join("\r\n");
8485
}
8586

8687
function buildDiagnosticMessageOutput(messageTable: InputDiagnosticMessageTable): string {

0 commit comments

Comments
 (0)