a352f28785
All of our static evaluation & dead-code elimination transforms need to happen in post-order, transforming inner nodes first. This is so that in complex nested cases all transforms see the simplified version of their inner nodes. For example: async getNimbusExperimentData() { if (!PDFJSDev.test("GECKOVIEW")) { return null; } // other code } -> [evaluation of PDFJSDev.*] async getNimbusExperimentData() { if (!false) { return null; } // other code } -> [!false -> true] async getNimbusExperimentData() { if (true) { return null; } // other code } -> [if (true) -> replace with the if branch] async getNimbusExperimentData() { return null; // other code } -> [early return -> remove dead code] async getNimbusExperimentData() { return null; // other code } This was done correctly in all cases except for our `UnaryExpression` transform, which was happening in pre-order. |
||
---|---|---|
.. | ||
blocks-expected.js | ||
blocks.js | ||
comments-expected.js | ||
comments.js | ||
constants-expected.js | ||
constants.js | ||
deadcode-expected.js | ||
deadcode.js | ||
evals-expected.js | ||
evals.js | ||
evals.json | ||
ifs-expected.js | ||
ifs.js | ||
importalias-expected.js | ||
importalias.js |