From 538237b131e1577ab91e3be351c53106adaaa831 Mon Sep 17 00:00:00 2001 From: Cyp Date: Mon, 14 May 2018 11:05:57 +0200 Subject: [PATCH] fix: Make babel-plugin-minify-infinity work again. (#839) --- .../__tests__/fixtures/fn-param/actual.js | 1 + .../__tests__/fixtures/fn-param/expected.js | 4 +++- .../__tests__/fixtures/to-1-over-0/actual.js | 7 +++++++ .../__tests__/fixtures/to-1-over-0/expected.js | 13 ++++++++++++- packages/babel-plugin-minify-infinity/src/index.js | 12 +++++++++++- 5 files changed, 34 insertions(+), 3 deletions(-) diff --git a/packages/babel-plugin-minify-infinity/__tests__/fixtures/fn-param/actual.js b/packages/babel-plugin-minify-infinity/__tests__/fixtures/fn-param/actual.js index b6a47eb6f..859d4fe57 100644 --- a/packages/babel-plugin-minify-infinity/__tests__/fixtures/fn-param/actual.js +++ b/packages/babel-plugin-minify-infinity/__tests__/fixtures/fn-param/actual.js @@ -1,3 +1,4 @@ function a(Infinity) {} function b(...Infinity) {} function c({ Infinity }) {} +function d([Infinity]) {} diff --git a/packages/babel-plugin-minify-infinity/__tests__/fixtures/fn-param/expected.js b/packages/babel-plugin-minify-infinity/__tests__/fixtures/fn-param/expected.js index 493c12124..2e60c9b31 100644 --- a/packages/babel-plugin-minify-infinity/__tests__/fixtures/fn-param/expected.js +++ b/packages/babel-plugin-minify-infinity/__tests__/fixtures/fn-param/expected.js @@ -4,4 +4,6 @@ function b(...Infinity) {} function c({ Infinity -}) {} \ No newline at end of file +}) {} + +function d([Infinity]) {} \ No newline at end of file diff --git a/packages/babel-plugin-minify-infinity/__tests__/fixtures/to-1-over-0/actual.js b/packages/babel-plugin-minify-infinity/__tests__/fixtures/to-1-over-0/actual.js index 744c9130d..becf1ca81 100644 --- a/packages/babel-plugin-minify-infinity/__tests__/fixtures/to-1-over-0/actual.js +++ b/packages/babel-plugin-minify-infinity/__tests__/fixtures/to-1-over-0/actual.js @@ -1 +1,8 @@ Infinity; +[Infinity]; +let infobj = {inf: Infinity}; +func(Infinity); +1/Infinity; +let inf = Infinity; +while (Infinity) break; +inf = Infinity; diff --git a/packages/babel-plugin-minify-infinity/__tests__/fixtures/to-1-over-0/expected.js b/packages/babel-plugin-minify-infinity/__tests__/fixtures/to-1-over-0/expected.js index 80738b0c8..7fc306b24 100644 --- a/packages/babel-plugin-minify-infinity/__tests__/fixtures/to-1-over-0/expected.js +++ b/packages/babel-plugin-minify-infinity/__tests__/fixtures/to-1-over-0/expected.js @@ -1 +1,12 @@ -1 / 0; \ No newline at end of file +1 / 0; +[1 / 0]; +let infobj = { + inf: 1 / 0 +}; +func(1 / 0); +1 / (1 / 0); +let inf = 1 / 0; + +while (1 / 0) break; + +inf = 1 / 0; \ No newline at end of file diff --git a/packages/babel-plugin-minify-infinity/src/index.js b/packages/babel-plugin-minify-infinity/src/index.js index 2c04d31b7..022a4a04b 100644 --- a/packages/babel-plugin-minify-infinity/src/index.js +++ b/packages/babel-plugin-minify-infinity/src/index.js @@ -6,11 +6,18 @@ module.exports = function({ types: t }) { t.numericLiteral(1), t.numericLiteral(0) ); + const badTransforms = { + ArrayPattern: () => true, + AssignmentExpression: path => path.container.left === path.node, + ObjectProperty: path => path.container.shorthand, + RestElement: () => true + }; return { name: "minify-infinity", visitor: { // Infinity -> 1 / 0 Identifier(path) { + path.isLVal(); if (path.node.name !== "Infinity") { return; } @@ -28,7 +35,10 @@ module.exports = function({ types: t }) { return; } - if (path.isLVal() && !path.parentPath.isExpressionStatement()) { + if ( + path.isLVal() && + (badTransforms[path.parentPath.type] || (() => false))(path) + ) { return; }