From 81cbf0b0b71c69a4aae9e2072a22662ee0753391 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Thu, 25 Feb 2021 01:20:01 +0100 Subject: [PATCH] =?UTF-8?q?Skip=20`=5Fextends`=20helper=20for=20`{?= =?UTF-8?q?=E2=80=A6x}`=20with=20modern=20targets?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../package.json | 2 ++ .../src/index.js | 9 ++++++++- .../targets-support-object-assign/input.js | 1 + .../targets-support-object-assign/options.json | 3 +++ .../targets-support-object-assign/output.js | 3 +++ .../targets-support-object-assign/input.js | 1 + .../targets-support-object-assign/options.json | 3 +++ .../targets-support-object-assign/output.js | 3 +++ yarn.lock | 4 +++- 9 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 packages/babel-plugin-proposal-object-rest-spread/test/fixtures/assumption-setSpreadProperties/targets-support-object-assign/input.js create mode 100644 packages/babel-plugin-proposal-object-rest-spread/test/fixtures/assumption-setSpreadProperties/targets-support-object-assign/options.json create mode 100644 packages/babel-plugin-proposal-object-rest-spread/test/fixtures/assumption-setSpreadProperties/targets-support-object-assign/output.js create mode 100644 packages/babel-plugin-proposal-object-rest-spread/test/fixtures/object-spread-loose/targets-support-object-assign/input.js create mode 100644 packages/babel-plugin-proposal-object-rest-spread/test/fixtures/object-spread-loose/targets-support-object-assign/options.json create mode 100644 packages/babel-plugin-proposal-object-rest-spread/test/fixtures/object-spread-loose/targets-support-object-assign/output.js diff --git a/packages/babel-plugin-proposal-object-rest-spread/package.json b/packages/babel-plugin-proposal-object-rest-spread/package.json index 2331ff30910b..7ba902e5003a 100644 --- a/packages/babel-plugin-proposal-object-rest-spread/package.json +++ b/packages/babel-plugin-proposal-object-rest-spread/package.json @@ -17,6 +17,8 @@ "babel-plugin" ], "dependencies": { + "@babel/compat-data": "workspace:^7.13.6", + "@babel/helper-compilation-targets": "workspace:^7.13.0", "@babel/helper-plugin-utils": "workspace:^7.13.0", "@babel/plugin-syntax-object-rest-spread": "^7.8.0", "@babel/plugin-transform-parameters": "workspace:^7.13.0" diff --git a/packages/babel-plugin-proposal-object-rest-spread/src/index.js b/packages/babel-plugin-proposal-object-rest-spread/src/index.js index 7179c20899ba..b5d232b83b91 100644 --- a/packages/babel-plugin-proposal-object-rest-spread/src/index.js +++ b/packages/babel-plugin-proposal-object-rest-spread/src/index.js @@ -2,6 +2,8 @@ import { declare } from "@babel/helper-plugin-utils"; import syntaxObjectRestSpread from "@babel/plugin-syntax-object-rest-spread"; import { types as t } from "@babel/core"; import { convertFunctionParams } from "@babel/plugin-transform-parameters"; +import { isRequired } from "@babel/helper-compilation-targets"; +import compatData from "@babel/compat-data/corejs2-built-ins"; // TODO: Remove in Babel 8 // @babel/types <=7.3.3 counts FOO as referenced in var { x: FOO }. @@ -17,7 +19,12 @@ const ZERO_REFS = (() => { export default declare((api, opts) => { api.assertVersion(7); - const { useBuiltIns = false, loose = false } = opts; + const targets = api.targets(); + const supportsObjectAssign = !isRequired("es6.object.assign", targets, { + compatData, + }); + + const { useBuiltIns = supportsObjectAssign, loose = false } = opts; if (typeof loose !== "boolean") { throw new Error(".loose must be a boolean, or undefined"); diff --git a/packages/babel-plugin-proposal-object-rest-spread/test/fixtures/assumption-setSpreadProperties/targets-support-object-assign/input.js b/packages/babel-plugin-proposal-object-rest-spread/test/fixtures/assumption-setSpreadProperties/targets-support-object-assign/input.js new file mode 100644 index 000000000000..04816a32e9dd --- /dev/null +++ b/packages/babel-plugin-proposal-object-rest-spread/test/fixtures/assumption-setSpreadProperties/targets-support-object-assign/input.js @@ -0,0 +1 @@ +let a = { x: 1, ...b }; diff --git a/packages/babel-plugin-proposal-object-rest-spread/test/fixtures/assumption-setSpreadProperties/targets-support-object-assign/options.json b/packages/babel-plugin-proposal-object-rest-spread/test/fixtures/assumption-setSpreadProperties/targets-support-object-assign/options.json new file mode 100644 index 000000000000..6bcd030506b6 --- /dev/null +++ b/packages/babel-plugin-proposal-object-rest-spread/test/fixtures/assumption-setSpreadProperties/targets-support-object-assign/options.json @@ -0,0 +1,3 @@ +{ + "targets": "firefox 70" +} diff --git a/packages/babel-plugin-proposal-object-rest-spread/test/fixtures/assumption-setSpreadProperties/targets-support-object-assign/output.js b/packages/babel-plugin-proposal-object-rest-spread/test/fixtures/assumption-setSpreadProperties/targets-support-object-assign/output.js new file mode 100644 index 000000000000..0687894a351e --- /dev/null +++ b/packages/babel-plugin-proposal-object-rest-spread/test/fixtures/assumption-setSpreadProperties/targets-support-object-assign/output.js @@ -0,0 +1,3 @@ +let a = Object.assign({ + x: 1 +}, b); diff --git a/packages/babel-plugin-proposal-object-rest-spread/test/fixtures/object-spread-loose/targets-support-object-assign/input.js b/packages/babel-plugin-proposal-object-rest-spread/test/fixtures/object-spread-loose/targets-support-object-assign/input.js new file mode 100644 index 000000000000..04816a32e9dd --- /dev/null +++ b/packages/babel-plugin-proposal-object-rest-spread/test/fixtures/object-spread-loose/targets-support-object-assign/input.js @@ -0,0 +1 @@ +let a = { x: 1, ...b }; diff --git a/packages/babel-plugin-proposal-object-rest-spread/test/fixtures/object-spread-loose/targets-support-object-assign/options.json b/packages/babel-plugin-proposal-object-rest-spread/test/fixtures/object-spread-loose/targets-support-object-assign/options.json new file mode 100644 index 000000000000..6bcd030506b6 --- /dev/null +++ b/packages/babel-plugin-proposal-object-rest-spread/test/fixtures/object-spread-loose/targets-support-object-assign/options.json @@ -0,0 +1,3 @@ +{ + "targets": "firefox 70" +} diff --git a/packages/babel-plugin-proposal-object-rest-spread/test/fixtures/object-spread-loose/targets-support-object-assign/output.js b/packages/babel-plugin-proposal-object-rest-spread/test/fixtures/object-spread-loose/targets-support-object-assign/output.js new file mode 100644 index 000000000000..0687894a351e --- /dev/null +++ b/packages/babel-plugin-proposal-object-rest-spread/test/fixtures/object-spread-loose/targets-support-object-assign/output.js @@ -0,0 +1,3 @@ +let a = Object.assign({ + x: 1 +}, b); diff --git a/yarn.lock b/yarn.lock index 4147a21416a1..6f6907072dc7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -139,7 +139,7 @@ __metadata: languageName: node linkType: hard -"@babel/compat-data@workspace:^7.13.0, @babel/compat-data@workspace:^7.13.5, @babel/compat-data@workspace:packages/babel-compat-data": +"@babel/compat-data@workspace:^7.13.0, @babel/compat-data@workspace:^7.13.5, @babel/compat-data@workspace:^7.13.6, @babel/compat-data@workspace:packages/babel-compat-data": version: 0.0.0-use.local resolution: "@babel/compat-data@workspace:packages/babel-compat-data" dependencies: @@ -1307,7 +1307,9 @@ __metadata: version: 0.0.0-use.local resolution: "@babel/plugin-proposal-object-rest-spread@workspace:packages/babel-plugin-proposal-object-rest-spread" dependencies: + "@babel/compat-data": "workspace:^7.13.6" "@babel/core": "workspace:*" + "@babel/helper-compilation-targets": "workspace:^7.13.0" "@babel/helper-plugin-test-runner": "workspace:*" "@babel/helper-plugin-utils": "workspace:^7.13.0" "@babel/plugin-syntax-object-rest-spread": ^7.8.0