From d0f5ffa8e3f76a4c819059418e2d5f9f6d35e901 Mon Sep 17 00:00:00 2001 From: Vignesh Shanmugam Date: Tue, 8 May 2018 21:38:25 +0200 Subject: [PATCH 1/2] fix(deadcode): account for impure paths inside for statements --- .../__tests__/fixtures/loops/actual.js | 4 ++++ .../__tests__/fixtures/loops/expected.js | 2 ++ .../babel-plugin-minify-dead-code-elimination/src/index.js | 7 ++++++- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/babel-plugin-minify-dead-code-elimination/__tests__/fixtures/loops/actual.js b/packages/babel-plugin-minify-dead-code-elimination/__tests__/fixtures/loops/actual.js index 89d57fdd2..bcf4a24eb 100644 --- a/packages/babel-plugin-minify-dead-code-elimination/__tests__/fixtures/loops/actual.js +++ b/packages/babel-plugin-minify-dead-code-elimination/__tests__/fixtures/loops/actual.js @@ -19,6 +19,10 @@ for (; true; ) { for (; false; ) { baz(); } +for (var j; false; ) { + blah(); +} +for (0; false; ) {} // do_while do { diff --git a/packages/babel-plugin-minify-dead-code-elimination/__tests__/fixtures/loops/expected.js b/packages/babel-plugin-minify-dead-code-elimination/__tests__/fixtures/loops/expected.js index 4e95ee2bf..421553525 100644 --- a/packages/babel-plugin-minify-dead-code-elimination/__tests__/fixtures/loops/expected.js +++ b/packages/babel-plugin-minify-dead-code-elimination/__tests__/fixtures/loops/expected.js @@ -16,6 +16,8 @@ for (;;) { bar(); } +var j; + // do_while do { foo(); diff --git a/packages/babel-plugin-minify-dead-code-elimination/src/index.js b/packages/babel-plugin-minify-dead-code-elimination/src/index.js index 448fa7d18..7f2f6f673 100644 --- a/packages/babel-plugin-minify-dead-code-elimination/src/index.js +++ b/packages/babel-plugin-minify-dead-code-elimination/src/index.js @@ -678,7 +678,12 @@ module.exports = ({ types: t, traverse }) => { if (result.value) { test.remove(); } else { - path.remove(); + const init = path.get("init"); + if (init.node && !init.isPure()) { + path.replaceWith(init); + } else { + path.remove(); + } } } }, From f6b1a9a20e81662122dde70f3e131099542b207a Mon Sep 17 00:00:00 2001 From: Vignesh Shanmugam Date: Tue, 8 May 2018 21:44:09 +0200 Subject: [PATCH 2/2] add env test --- .../__tests__/minify-env-tests.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/packages/babel-preset-minify/__tests__/minify-env-tests.js b/packages/babel-preset-minify/__tests__/minify-env-tests.js index 55f7d1ce7..b175e8b61 100644 --- a/packages/babel-preset-minify/__tests__/minify-env-tests.js +++ b/packages/babel-preset-minify/__tests__/minify-env-tests.js @@ -183,4 +183,17 @@ describe("preset along with env", () => { })(); ` ); + + thePlugin( + "should fix issue#824 simplify + deadcode", + ` + let foo; + while (0) {} + console.log(foo); + `, + ` + var foo; + console.log(foo); + ` + ); });