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 9d92d715ecea..3c0dd6180295 100644 --- a/packages/babel-helper-create-class-features-plugin/src/index.js +++ b/packages/babel-helper-create-class-features-plugin/src/index.js @@ -75,32 +75,37 @@ export function createClassFeaturePlugin({ if (path.isPrivate()) { const { name } = path.node.key.id; - const getName = `get_${name}`; - const setName = `set_${name}`; + const getName = `get ${name}`; + const setName = `set ${name}`; if (path.node.kind === "get") { - if (privateNames.has(getName)) { + if ( + privateNames.has(getName) || + (privateNames.has(name) && !privateNames.has(setName)) + ) { throw path.buildCodeFrameError("Duplicate private field"); } - privateNames.add(getName); + privateNames.add(getName).add(name); } else if (path.node.kind === "set") { - if (privateNames.has(setName)) { + if ( + privateNames.has(setName) || + (privateNames.has(name) && !privateNames.has(getName)) + ) { throw path.buildCodeFrameError("Duplicate private field"); } - privateNames.add(setName); - } + privateNames.add(setName).add(name); + } else { + if ( + privateNames.has(name) && + (privateNames.has(getName) || privateNames.has(setName)) + ) { + throw path.buildCodeFrameError("Duplicate private field"); + } - if ( - privateNames.has(name) && - !privateNames.has(getName) && - !privateNames.has(setName) - ) { - throw path.buildCodeFrameError("Duplicate private field"); + privateNames.add(name); } - - privateNames.add(name); } if (path.isClassMethod({ kind: "constructor" })) {