diff --git a/packages/babel-plugin-minify-dead-code-elimination/__tests__/fixtures/issue-871/actual.js b/packages/babel-plugin-minify-dead-code-elimination/__tests__/fixtures/issue-871/actual.js new file mode 100644 index 000000000..1372c79c5 --- /dev/null +++ b/packages/babel-plugin-minify-dead-code-elimination/__tests__/fixtures/issue-871/actual.js @@ -0,0 +1,7 @@ +async function example() { + var foo, bar; + try { + [foo, bar] = await Promise.all([req(1), req(2)]); + } catch (e) {} + console.log(foo); +} diff --git a/packages/babel-plugin-minify-dead-code-elimination/__tests__/fixtures/issue-871/expected.js b/packages/babel-plugin-minify-dead-code-elimination/__tests__/fixtures/issue-871/expected.js new file mode 100644 index 000000000..cdbc2c083 --- /dev/null +++ b/packages/babel-plugin-minify-dead-code-elimination/__tests__/fixtures/issue-871/expected.js @@ -0,0 +1,9 @@ +async function example() { + var foo, bar; + + try { + [foo, bar] = await Promise.all([req(1), req(2)]); + } catch (e) {} + + console.log(foo); +} \ No newline at end of file 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 207a01910..0eb1d747d 100644 --- a/packages/babel-plugin-minify-dead-code-elimination/src/index.js +++ b/packages/babel-plugin-minify-dead-code-elimination/src/index.js @@ -235,10 +235,17 @@ module.exports = ({ types: t, traverse }) => { bail = true; } - if (p.isAssignmentExpression() && !p.get("right").isPure()) { - mutations.push(() => p.replaceWith(p.get("right"))); - } else { - mutations.push(() => removeOrVoid(p)); + if (p.isAssignmentExpression()) { + if ( + t.isArrayPattern(p.node.left) || + t.isObjectPattern(p.node.left) + ) { + bail = true; + } else if (p.get("right").isPure()) { + mutations.push(() => removeOrVoid(p)); + } else { + mutations.push(() => p.replaceWith(p.get("right"))); + } } });