// This file requires a modern version of node 14+, and grep to be available. // node scripts/find-unused-diagnostic-messages.mjs import { readFileSync } from "fs"; import { EOL } from "os"; import { execSync } from "child_process"; const diags = readFileSync("src/compiler/diagnosticInformationMap.generated.ts", "utf8"); const startOfDiags = diags.split("export const Diagnostics")[1]; /** @type {string[]} */ const missingNames = []; startOfDiags.split(EOL).forEach(line => { if (!line.includes(":")) return; const diagName = line.split(":")[0].trim(); try { execSync(`grep -rnw 'src' -e 'Diagnostics.${diagName}'`).toString(); process.stdout.write("."); } catch (error) { missingNames.push(diagName); process.stdout.write("x"); } }); if (missingNames.length) { process.exitCode = 1; console.log("Could not find usage of these diagnostics in the codebase:"); console.log(missingNames); }