From 3c46e75b8f8a52ecdd703ba38227271b7764dd5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Tue, 12 Jun 2018 19:45:21 +0200 Subject: [PATCH] Don't split an exported class when renaming an inner binding (#8051) --- .../test/fixtures/regression/7951/input.mjs | 5 +++++ .../test/fixtures/regression/7951/options.json | 3 +++ .../test/fixtures/regression/7951/output.mjs | 9 +++++++++ packages/babel-traverse/src/scope/lib/renamer.js | 7 ++++++- 4 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 packages/babel-plugin-proposal-class-properties/test/fixtures/regression/7951/input.mjs create mode 100644 packages/babel-plugin-proposal-class-properties/test/fixtures/regression/7951/options.json create mode 100644 packages/babel-plugin-proposal-class-properties/test/fixtures/regression/7951/output.mjs diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/regression/7951/input.mjs b/packages/babel-plugin-proposal-class-properties/test/fixtures/regression/7951/input.mjs new file mode 100644 index 0000000000..7523a4d06a --- /dev/null +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/regression/7951/input.mjs @@ -0,0 +1,5 @@ +export class Foo extends Bar { + static foo = {}; + + test = args; +} diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/regression/7951/options.json b/packages/babel-plugin-proposal-class-properties/test/fixtures/regression/7951/options.json new file mode 100644 index 0000000000..9d30185b9b --- /dev/null +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/regression/7951/options.json @@ -0,0 +1,3 @@ +{ + "plugins": ["external-helpers", "proposal-class-properties"] +} diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/regression/7951/output.mjs b/packages/babel-plugin-proposal-class-properties/test/fixtures/regression/7951/output.mjs new file mode 100644 index 0000000000..9f5afa99d7 --- /dev/null +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/regression/7951/output.mjs @@ -0,0 +1,9 @@ +export class Foo extends Bar { + constructor(..._args) { + var _temp; + + return _temp = super(..._args), babelHelpers.defineProperty(this, "test", args), _temp; + } + +} +babelHelpers.defineProperty(Foo, "foo", {}); diff --git a/packages/babel-traverse/src/scope/lib/renamer.js b/packages/babel-traverse/src/scope/lib/renamer.js index 05b9e807f4..317dea76aa 100644 --- a/packages/babel-traverse/src/scope/lib/renamer.js +++ b/packages/babel-traverse/src/scope/lib/renamer.js @@ -108,7 +108,12 @@ export default class Renamer { path.isClassExpression(), ); if (parentDeclar) { - this.maybeConvertFromExportDeclaration(parentDeclar); + const bindingIds = parentDeclar.getBindingIdentifiers(); + if (bindingIds[oldName] === binding.identifier) { + // When we are renaming an exported identifier, we need to ensure that + // the exported binding keeps the old name. + this.maybeConvertFromExportDeclaration(parentDeclar); + } } scope.traverse(block || scope.block, renameVisitor, this);