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 760be4af9657..6ad46288f9de 100644 --- a/packages/babel-helper-create-class-features-plugin/src/index.js +++ b/packages/babel-helper-create-class-features-plugin/src/index.js @@ -54,9 +54,7 @@ export function createClassFeaturePlugin({ verifyUsedFeatures(path, this.file); - // Only fields are currently supported, this needs to be moved somewhere - // else when other features are added. - const loose = isLoose(this.file, FEATURES.fields); + const loose = isLoose(this.file, feature); let constructor; let isDecorated = hasOwnDecorators(path.node); diff --git a/packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-private-methods/loose-false/input.js b/packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-private-methods/loose-false/input.js new file mode 100644 index 000000000000..40fba0a0a941 --- /dev/null +++ b/packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-private-methods/loose-false/input.js @@ -0,0 +1,5 @@ +class X { + #privateMethod() { + return 42; + } +} diff --git a/packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-private-methods/loose-false/options.json b/packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-private-methods/loose-false/options.json new file mode 100644 index 000000000000..f85119d087cc --- /dev/null +++ b/packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-private-methods/loose-false/options.json @@ -0,0 +1,5 @@ +{ + "plugins": [ + ["proposal-private-methods", { "loose": false }] + ] +} diff --git a/packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-private-methods/loose-false/output.js b/packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-private-methods/loose-false/output.js new file mode 100644 index 000000000000..2a500530b640 --- /dev/null +++ b/packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-private-methods/loose-false/output.js @@ -0,0 +1,12 @@ +class X { + constructor() { + _privateMethod.add(this); + } + +} + +var _privateMethod = new WeakSet(); + +var _privateMethod2 = function _privateMethod2() { + return 42; +}; diff --git a/packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-private-methods/loose-true/input.js b/packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-private-methods/loose-true/input.js new file mode 100644 index 000000000000..40fba0a0a941 --- /dev/null +++ b/packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-private-methods/loose-true/input.js @@ -0,0 +1,5 @@ +class X { + #privateMethod() { + return 42; + } +} diff --git a/packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-private-methods/loose-true/options.json b/packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-private-methods/loose-true/options.json new file mode 100644 index 000000000000..e0ee1124a93a --- /dev/null +++ b/packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-private-methods/loose-true/options.json @@ -0,0 +1,5 @@ +{ + "plugins": [ + ["proposal-private-methods", { "loose": true }] + ] +} diff --git a/packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-private-methods/loose-true/output.js b/packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-private-methods/loose-true/output.js new file mode 100644 index 000000000000..a660b0038d59 --- /dev/null +++ b/packages/babel-helper-create-class-features-plugin/test/fixtures/plugin-proposal-private-methods/loose-true/output.js @@ -0,0 +1,18 @@ +var id = 0; + +function _classPrivateFieldLooseKey(name) { return "__private_" + id++ + "_" + name; } + +class X { + constructor() { + Object.defineProperty(this, _privateMethod, { + value: _privateMethod2 + }); + } + +} + +var _privateMethod = _classPrivateFieldLooseKey("privateMethod"); + +var _privateMethod2 = function _privateMethod2() { + return 42; +};