From cf89ad8ce76492f939e7c54893e88a33a14d9fef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Thu, 25 Feb 2021 01:00:52 +0100 Subject: [PATCH 1/3] Add invalid test --- .../package.json | 3 ++- .../no-loose-and-assumptions-preset-env/input.js | 3 +++ .../no-loose-and-assumptions-preset-env/options.json | 8 ++++++++ .../no-loose-and-assumptions-preset-env/output.js | 6 ++++++ .../no-loose-and-assumptions-preset-env/stderr.txt | 10 ++++++++++ .../warn-loose-and-assumptions-preset-env/input.js | 3 +++ .../warn-loose-and-assumptions-preset-env/options.json | 8 ++++++++ .../warn-loose-and-assumptions-preset-env/output.js | 6 ++++++ .../warn-loose-and-assumptions-preset-env/stderr.txt | 10 ++++++++++ yarn.lock | 1 + 10 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-class-properties/no-loose-and-assumptions-preset-env/input.js create mode 100644 packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-class-properties/no-loose-and-assumptions-preset-env/options.json create mode 100644 packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-class-properties/no-loose-and-assumptions-preset-env/output.js create mode 100644 packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-class-properties/no-loose-and-assumptions-preset-env/stderr.txt create mode 100644 packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-class-properties/warn-loose-and-assumptions-preset-env/input.js create mode 100644 packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-class-properties/warn-loose-and-assumptions-preset-env/options.json create mode 100644 packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-class-properties/warn-loose-and-assumptions-preset-env/output.js create mode 100644 packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-class-properties/warn-loose-and-assumptions-preset-env/stderr.txt diff --git a/packages/babel-helper-create-class-features-plugin/package.json b/packages/babel-helper-create-class-features-plugin/package.json index 19101e0e5ab8..110a0deeca11 100644 --- a/packages/babel-helper-create-class-features-plugin/package.json +++ b/packages/babel-helper-create-class-features-plugin/package.json @@ -29,6 +29,7 @@ }, "devDependencies": { "@babel/core": "workspace:*", - "@babel/helper-plugin-test-runner": "workspace:*" + "@babel/helper-plugin-test-runner": "workspace:*", + "@babel/preset-env": "workspace:*" } } diff --git a/packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-class-properties/no-loose-and-assumptions-preset-env/input.js b/packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-class-properties/no-loose-and-assumptions-preset-env/input.js new file mode 100644 index 000000000000..eb0eb350654f --- /dev/null +++ b/packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-class-properties/no-loose-and-assumptions-preset-env/input.js @@ -0,0 +1,3 @@ +class A { + foo; +} diff --git a/packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-class-properties/no-loose-and-assumptions-preset-env/options.json b/packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-class-properties/no-loose-and-assumptions-preset-env/options.json new file mode 100644 index 000000000000..29b0d05fdcab --- /dev/null +++ b/packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-class-properties/no-loose-and-assumptions-preset-env/options.json @@ -0,0 +1,8 @@ +{ + "validateLogs": true, + "presets": [["env", { "shippedProposals": true }]], + "assumptions": { + "setPublicClassFields": true + }, + "targets": "chrome 70" +} diff --git a/packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-class-properties/no-loose-and-assumptions-preset-env/output.js b/packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-class-properties/no-loose-and-assumptions-preset-env/output.js new file mode 100644 index 000000000000..063a057f52c0 --- /dev/null +++ b/packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-class-properties/no-loose-and-assumptions-preset-env/output.js @@ -0,0 +1,6 @@ +class A { + constructor() { + this.foo = void 0; + } + +} diff --git a/packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-class-properties/no-loose-and-assumptions-preset-env/stderr.txt b/packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-class-properties/no-loose-and-assumptions-preset-env/stderr.txt new file mode 100644 index 000000000000..5364f8c0cbdd --- /dev/null +++ b/packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-class-properties/no-loose-and-assumptions-preset-env/stderr.txt @@ -0,0 +1,10 @@ +[proposal-class-properties]: You are using the "loose: true" option and you are explicitly setting a value for the "setPublicClassFields" assumption. The "loose" option can cause incompatibilities with the other class features plugins, so it's recommended that you replace it with the following top-level option: + "assumptions": { + "setPublicClassFields": true, + "privateFieldsAsProperties": true + } +[proposal-private-methods]: You are using the "loose: true" option and you are explicitly setting a value for the "setPublicClassFields" assumption. The "loose" option can cause incompatibilities with the other class features plugins, so it's recommended that you replace it with the following top-level option: + "assumptions": { + "setPublicClassFields": true, + "privateFieldsAsProperties": true + } diff --git a/packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-class-properties/warn-loose-and-assumptions-preset-env/input.js b/packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-class-properties/warn-loose-and-assumptions-preset-env/input.js new file mode 100644 index 000000000000..eb0eb350654f --- /dev/null +++ b/packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-class-properties/warn-loose-and-assumptions-preset-env/input.js @@ -0,0 +1,3 @@ +class A { + foo; +} diff --git a/packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-class-properties/warn-loose-and-assumptions-preset-env/options.json b/packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-class-properties/warn-loose-and-assumptions-preset-env/options.json new file mode 100644 index 000000000000..4297b3db2cbd --- /dev/null +++ b/packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-class-properties/warn-loose-and-assumptions-preset-env/options.json @@ -0,0 +1,8 @@ +{ + "validateLogs": true, + "presets": [["env", { "loose": true, "shippedProposals": true }]], + "assumptions": { + "setPublicClassFields": true + }, + "targets": "chrome 70" +} diff --git a/packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-class-properties/warn-loose-and-assumptions-preset-env/output.js b/packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-class-properties/warn-loose-and-assumptions-preset-env/output.js new file mode 100644 index 000000000000..063a057f52c0 --- /dev/null +++ b/packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-class-properties/warn-loose-and-assumptions-preset-env/output.js @@ -0,0 +1,6 @@ +class A { + constructor() { + this.foo = void 0; + } + +} diff --git a/packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-class-properties/warn-loose-and-assumptions-preset-env/stderr.txt b/packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-class-properties/warn-loose-and-assumptions-preset-env/stderr.txt new file mode 100644 index 000000000000..5364f8c0cbdd --- /dev/null +++ b/packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-class-properties/warn-loose-and-assumptions-preset-env/stderr.txt @@ -0,0 +1,10 @@ +[proposal-class-properties]: You are using the "loose: true" option and you are explicitly setting a value for the "setPublicClassFields" assumption. The "loose" option can cause incompatibilities with the other class features plugins, so it's recommended that you replace it with the following top-level option: + "assumptions": { + "setPublicClassFields": true, + "privateFieldsAsProperties": true + } +[proposal-private-methods]: You are using the "loose: true" option and you are explicitly setting a value for the "setPublicClassFields" assumption. The "loose" option can cause incompatibilities with the other class features plugins, so it's recommended that you replace it with the following top-level option: + "assumptions": { + "setPublicClassFields": true, + "privateFieldsAsProperties": true + } diff --git a/yarn.lock b/yarn.lock index 4147a21416a1..706524c5f1e8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -429,6 +429,7 @@ __metadata: "@babel/helper-plugin-test-runner": "workspace:*" "@babel/helper-replace-supers": "workspace:^7.13.0" "@babel/helper-split-export-declaration": "workspace:^7.12.13" + "@babel/preset-env": "workspace:*" peerDependencies: "@babel/core": ^7.0.0 languageName: unknown From bd59e5064789a95f3ef337e51a8d817abbdad68a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Thu, 25 Feb 2021 01:03:14 +0100 Subject: [PATCH 2/3] Remove invalid `loose` warning for class features with `preset-env` --- .../src/index.js | 6 +++++- .../no-loose-and-assumptions-preset-env/stderr.txt | 11 +---------- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/packages/babel-helper-create-class-features-plugin/src/index.js b/packages/babel-helper-create-class-features-plugin/src/index.js index 7c2c097c485e..f54272280dbf 100644 --- a/packages/babel-helper-create-class-features-plugin/src/index.js +++ b/packages/babel-helper-create-class-features-plugin/src/index.js @@ -44,7 +44,11 @@ export function createClassFeaturePlugin({ const constantSuper = api.assumption("constantSuper"); const noDocumentAll = api.assumption("noDocumentAll"); - if (loose) { + if ( + loose === true || + loose === + "#__internal__@babel/preset-env__prefer-true-but-false-is-ok-if-it-prevents-an-error" + ) { const explicit = []; if (setPublicClassFields !== undefined) { diff --git a/packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-class-properties/no-loose-and-assumptions-preset-env/stderr.txt b/packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-class-properties/no-loose-and-assumptions-preset-env/stderr.txt index 5364f8c0cbdd..8b137891791f 100644 --- a/packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-class-properties/no-loose-and-assumptions-preset-env/stderr.txt +++ b/packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-class-properties/no-loose-and-assumptions-preset-env/stderr.txt @@ -1,10 +1 @@ -[proposal-class-properties]: You are using the "loose: true" option and you are explicitly setting a value for the "setPublicClassFields" assumption. The "loose" option can cause incompatibilities with the other class features plugins, so it's recommended that you replace it with the following top-level option: - "assumptions": { - "setPublicClassFields": true, - "privateFieldsAsProperties": true - } -[proposal-private-methods]: You are using the "loose: true" option and you are explicitly setting a value for the "setPublicClassFields" assumption. The "loose" option can cause incompatibilities with the other class features plugins, so it's recommended that you replace it with the following top-level option: - "assumptions": { - "setPublicClassFields": true, - "privateFieldsAsProperties": true - } + From 6b423897c3ffc28b7ad7f9420176d67b9124e6c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Thu, 25 Feb 2021 20:59:05 +0100 Subject: [PATCH 3/3] Also remove the other warning --- .../src/index.js | 6 +----- .../warn-loose-and-assumptions-preset-env/stderr.txt | 11 +---------- 2 files changed, 2 insertions(+), 15 deletions(-) diff --git a/packages/babel-helper-create-class-features-plugin/src/index.js b/packages/babel-helper-create-class-features-plugin/src/index.js index f54272280dbf..7e08d2b26491 100644 --- a/packages/babel-helper-create-class-features-plugin/src/index.js +++ b/packages/babel-helper-create-class-features-plugin/src/index.js @@ -44,11 +44,7 @@ export function createClassFeaturePlugin({ const constantSuper = api.assumption("constantSuper"); const noDocumentAll = api.assumption("noDocumentAll"); - if ( - loose === true || - loose === - "#__internal__@babel/preset-env__prefer-true-but-false-is-ok-if-it-prevents-an-error" - ) { + if (loose === true) { const explicit = []; if (setPublicClassFields !== undefined) { diff --git a/packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-class-properties/warn-loose-and-assumptions-preset-env/stderr.txt b/packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-class-properties/warn-loose-and-assumptions-preset-env/stderr.txt index 5364f8c0cbdd..8b137891791f 100644 --- a/packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-class-properties/warn-loose-and-assumptions-preset-env/stderr.txt +++ b/packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-class-properties/warn-loose-and-assumptions-preset-env/stderr.txt @@ -1,10 +1 @@ -[proposal-class-properties]: You are using the "loose: true" option and you are explicitly setting a value for the "setPublicClassFields" assumption. The "loose" option can cause incompatibilities with the other class features plugins, so it's recommended that you replace it with the following top-level option: - "assumptions": { - "setPublicClassFields": true, - "privateFieldsAsProperties": true - } -[proposal-private-methods]: You are using the "loose: true" option and you are explicitly setting a value for the "setPublicClassFields" assumption. The "loose" option can cause incompatibilities with the other class features plugins, so it's recommended that you replace it with the following top-level option: - "assumptions": { - "setPublicClassFields": true, - "privateFieldsAsProperties": true - } +