diff --git a/packages/babel-plugin-minify-infinity/__tests__/fixtures/bindings/actual.js b/packages/babel-plugin-minify-infinity/__tests__/fixtures/bindings/actual.js new file mode 100644 index 000000000..f9dbe9181 --- /dev/null +++ b/packages/babel-plugin-minify-infinity/__tests__/fixtures/bindings/actual.js @@ -0,0 +1,12 @@ +function foo() { + let [Infinity] = some(); + return Infinity; +} + +function bar() { + let [...Infinity] = some(); +} + +function baz() { + let { inf = Infinity } = some(); +} diff --git a/packages/babel-plugin-minify-infinity/__tests__/fixtures/bindings/expected.js b/packages/babel-plugin-minify-infinity/__tests__/fixtures/bindings/expected.js new file mode 100644 index 000000000..11f54d2aa --- /dev/null +++ b/packages/babel-plugin-minify-infinity/__tests__/fixtures/bindings/expected.js @@ -0,0 +1,14 @@ +function foo() { + let [Infinity] = some(); + return Infinity; +} + +function bar() { + let [...Infinity] = some(); +} + +function baz() { + let { + inf = 1 / 0 + } = some(); +} \ No newline at end of file diff --git a/packages/babel-plugin-minify-infinity/__tests__/fixtures/expressions/actual.js b/packages/babel-plugin-minify-infinity/__tests__/fixtures/expressions/actual.js new file mode 100644 index 000000000..09e479cc1 --- /dev/null +++ b/packages/babel-plugin-minify-infinity/__tests__/fixtures/expressions/actual.js @@ -0,0 +1,10 @@ +let x = [Infinity, Infinity]; + +let y = [ + { + a: Infinity + }, + { + a: Infinity + } +]; diff --git a/packages/babel-plugin-minify-infinity/__tests__/fixtures/expressions/expected.js b/packages/babel-plugin-minify-infinity/__tests__/fixtures/expressions/expected.js new file mode 100644 index 000000000..cd701eda6 --- /dev/null +++ b/packages/babel-plugin-minify-infinity/__tests__/fixtures/expressions/expected.js @@ -0,0 +1,6 @@ +let x = [1 / 0, 1 / 0]; +let y = [{ + a: 1 / 0 +}, { + a: 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..435931049 100644 --- a/packages/babel-plugin-minify-infinity/src/index.js +++ b/packages/babel-plugin-minify-infinity/src/index.js @@ -28,7 +28,14 @@ module.exports = function({ types: t }) { return; } - if (path.isLVal() && !path.parentPath.isExpressionStatement()) { + const bindingIds = path.parentPath.getBindingIdentifierPaths(); + + if ( + bindingIds["Infinity"] === path && + // ObjectProperty is common for ObjectExpression and ObjectPattern and only + // one of them is a Binding, the other is simply a reference + !path.parentPath.parentPath.isObjectExpression() + ) { return; }