From b6427cc203adb33aae22e565785824df010b232e Mon Sep 17 00:00:00 2001 From: Timothy McClure Date: Thu, 27 Dec 2018 11:04:32 -0500 Subject: [PATCH] Fix private dupe name check --- .../src/index.js | 35 +++++++++++-------- 1 file changed, 20 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 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" })) {