1const fs = require("fs"); 2const async = require("async"); 3const glob = require("glob"); 4 5fs.readFile("src/compiler/diagnosticMessages.json", "utf-8", (err, data) => { 6 if (err) { 7 throw err; 8 } 9 10 const messages = JSON.parse(data); 11 const keys = Object.keys(messages); 12 console.log("Loaded " + keys.length + " errors"); 13 14 for (const k of keys) { 15 messages[k].seen = false; 16 } 17 18 const errRegex = /\(\d+,\d+\): error TS([^:]+):/g; 19 const baseDir = "tests/baselines/reference/"; 20 21 fs.readdir(baseDir, (err, files) => { 22 files = files.filter(f => f.indexOf(".errors.txt") > 0); 23 const tasks: ((callback: () => void) => void)[] = []; 24 files.forEach(f => tasks.push(done => { 25 fs.readFile(baseDir + f, "utf-8", (err, baseline) => { 26 if (err) throw err; 27 28 let g: string[]; 29 while (g = errRegex.exec(baseline)) { 30 const errCode = +g[1]; 31 const msg = keys.filter(k => messages[k].code === errCode)[0]; 32 messages[msg].seen = true; 33 } 34 35 done(); 36 }); 37 })); 38 39 async.parallelLimit(tasks, 25, done => { 40 console.log("== List of errors not present in baselines =="); 41 let count = 0; 42 for (const k of keys) { 43 if (messages[k].seen !== true) { 44 console.log(k); 45 count++; 46 } 47 } 48 console.log(count + " of " + keys.length + " errors are not in baselines"); 49 }); 50 }); 51}); 52 53fs.readFile("src/compiler/diagnosticInformationMap.generated.ts", "utf-8", (err, data) => { 54 const errorRegexp = /\s(\w+): \{ code/g; 55 const errorNames: string[] = []; 56 let errMatch: string[]; 57 while (errMatch = errorRegexp.exec(data)) { 58 errorNames.push(errMatch[1]); 59 } 60 61 let allSrc = ""; 62 glob("./src/**/*.ts", {}, (err, files) => { 63 console.log("Reading " + files.length + " source files"); 64 for (const file of files) { 65 if (file.indexOf("diagnosticInformationMap.generated.ts") > 0) { 66 continue; 67 } 68 69 const src = fs.readFileSync(file, "utf-8"); 70 allSrc = allSrc + src; 71 } 72 73 console.log("Consumed " + allSrc.length + " characters of source"); 74 75 let count = 0; 76 console.log("== List of errors not used in source =="); 77 for (const errName of errorNames) { 78 if (allSrc.indexOf(errName) < 0) { 79 console.log(errName); 80 count++; 81 } 82 } 83 console.log(count + " of " + errorNames.length + " errors are not used in source"); 84 }); 85}); 86