From ca44ffde98b9b1cbd8a4fd109570983e6989e50e Mon Sep 17 00:00:00 2001 From: Timothy McClure Date: Tue, 23 Oct 2018 16:08:57 -0400 Subject: [PATCH] Fix name collision issue --- .../babel-plugin-proposal-class-properties/src/index.js | 7 ++++--- .../test/fixtures/private/assignment/output.js | 4 ++-- .../test/fixtures/private/method-exfiltrated/output.js | 4 ++-- .../test/fixtures/private/method/exec.js | 4 ++-- .../test/fixtures/private/method/output.js | 8 ++++---- 5 files changed, 14 insertions(+), 13 deletions(-) diff --git a/packages/babel-plugin-proposal-class-properties/src/index.js b/packages/babel-plugin-proposal-class-properties/src/index.js index 9c9233c00fd9..a499520cca93 100644 --- a/packages/babel-plugin-proposal-class-properties/src/index.js +++ b/packages/babel-plugin-proposal-class-properties/src/index.js @@ -192,12 +192,12 @@ export default declare((api, options) => { const privateMethodHandlerSpec = { ...privateNameHandlerSpec, get(member) { - const { map, file } = this; + const { map, file, identifier } = this; return t.callExpression(file.addHelper("classPrivateMethodGet"), [ this.receiver(member), t.cloneNode(map), - t.identifier(this.name), + t.cloneNode(identifier), ]); }, set() { @@ -354,10 +354,12 @@ export default declare((api, options) => { } = path.node; const methodSet = scope.generateUidIdentifier(name); + const methodNameNode = scope.generateUidIdentifier(name); memberExpressionToFunctions(parentPath, privateNameVisitor, { name, map: methodSet, file: state, + identifier: methodNameNode, ...privateMethodHandlerSpec, }); @@ -367,7 +369,6 @@ export default declare((api, options) => { }), ); - const methodNameNode = t.identifier(name); const methodValueNode = path.node ? t.functionExpression(methodNameNode, params, body) : scope.buildUndefinedNode(); diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private/assignment/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/assignment/output.js index 11c910f337f3..e9a466b09605 100644 --- a/packages/babel-plugin-proposal-class-properties/test/fixtures/private/assignment/output.js +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/assignment/output.js @@ -1,4 +1,4 @@ -var privateMethod = function privateMethod() { +var _privateMethod2 = function _privateMethod2() { return 42; }; @@ -15,7 +15,7 @@ function () { value: 0 }); - babelHelpers.defineProperty(this, "publicField", babelHelpers.classPrivateMethodGet(this, _privateMethod, privateMethod).call(this)); + babelHelpers.defineProperty(this, "publicField", babelHelpers.classPrivateMethodGet(this, _privateMethod, _privateMethod2).call(this)); _privateMethod.add(this); } diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private/method-exfiltrated/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/method-exfiltrated/output.js index 19ef3b366693..e136831d703f 100644 --- a/packages/babel-plugin-proposal-class-properties/test/fixtures/private/method-exfiltrated/output.js +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/method-exfiltrated/output.js @@ -1,6 +1,6 @@ var exfiltrated; -var privateMethod = function privateMethod() {}; +var _privateMethod2 = function _privateMethod2() {}; var Foo = function Foo() { "use strict"; @@ -10,7 +10,7 @@ var Foo = function Foo() { _privateMethod.add(this); if (exfiltrated === undefined) { - exfiltrated = babelHelpers.classPrivateMethodGet(this, _privateMethod, privateMethod); + exfiltrated = babelHelpers.classPrivateMethodGet(this, _privateMethod, _privateMethod2); } }; diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private/method/exec.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/method/exec.js index 7bc5545a23f9..56a97b5337e8 100644 --- a/packages/babel-plugin-proposal-class-properties/test/fixtures/private/method/exec.js +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/method/exec.js @@ -17,9 +17,9 @@ class Foo { } getFakeStatus(fakeStatus) { - const fakeGetStatus = this.#getStatus; + const getStatus = this.#getStatus; return function () { - return fakeGetStatus.call({ status: fakeStatus }); + return getStatus.call({ status: fakeStatus }); }; } diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private/method/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/method/output.js index e155a4f09e5c..b3093f2a20ff 100644 --- a/packages/babel-plugin-proposal-class-properties/test/fixtures/private/method/output.js +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/method/output.js @@ -1,4 +1,4 @@ -var getStatus = function getStatus() { +var _getStatus2 = function _getStatus2() { return this.status; }; @@ -18,7 +18,7 @@ function () { babelHelpers.createClass(Foo, [{ key: "getCurrentStatus", value: function getCurrentStatus() { - return babelHelpers.classPrivateMethodGet(this, _getStatus, getStatus).call(this); + return babelHelpers.classPrivateMethodGet(this, _getStatus, _getStatus2).call(this); } }, { key: "setCurrentStatus", @@ -28,7 +28,7 @@ function () { }, { key: "getFakeStatus", value: function getFakeStatus(fakeStatus) { - var fakeGetStatus = babelHelpers.classPrivateMethodGet(this, _getStatus, getStatus); + var fakeGetStatus = babelHelpers.classPrivateMethodGet(this, _getStatus, _getStatus2); return function () { return fakeGetStatus.call({ status: fakeStatus @@ -40,7 +40,7 @@ function () { value: function getFakeStatusFunc() { return { status: 'fake-status', - getFakeStatus: babelHelpers.classPrivateMethodGet(this, _getStatus, getStatus) + getFakeStatus: babelHelpers.classPrivateMethodGet(this, _getStatus, _getStatus2) }; } }]);