• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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