From 8c46fd159faa76363eadf53e922b3af2b3294aa1 Mon Sep 17 00:00:00 2001 From: Justin Ridgewell Date: Wed, 25 Apr 2018 23:45:52 -0400 Subject: [PATCH] Class Props: Don't rename constructor collisions with static props (#7813) Static props aren't evaluated inside the constructor, so there can't be a collision. --- packages/babel-plugin-proposal-class-properties/src/index.js | 5 ++++- .../fixtures/public-loose/constructor-collision/input.js | 2 ++ .../fixtures/public-loose/constructor-collision/output.js | 3 +++ .../test/fixtures/public/constructor-collision/input.js | 2 ++ .../test/fixtures/public/constructor-collision/output.js | 3 +++ 5 files changed, 14 insertions(+), 1 deletion(-) diff --git a/packages/babel-plugin-proposal-class-properties/src/index.js b/packages/babel-plugin-proposal-class-properties/src/index.js index 1cf2f2d093..a61d3915a9 100644 --- a/packages/babel-plugin-proposal-class-properties/src/index.js +++ b/packages/babel-plugin-proposal-class-properties/src/index.js @@ -199,7 +199,10 @@ export default declare((api, options) => { } const state = { scope: constructor.scope }; - for (const prop of props) prop.traverse(referenceVisitor, state); + for (const prop of props) { + if (prop.node.static) continue; + prop.traverse(referenceVisitor, state); + } // diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/public-loose/constructor-collision/input.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/public-loose/constructor-collision/input.js index 3bf6c83472..3071b5edb8 100644 --- a/packages/babel-plugin-proposal-class-properties/test/fixtures/public-loose/constructor-collision/input.js +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/public-loose/constructor-collision/input.js @@ -2,8 +2,10 @@ var foo = "bar"; class Foo { bar = foo; + static bar = baz; constructor() { var foo = "foo"; + var baz = "baz"; } } diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/public-loose/constructor-collision/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/public-loose/constructor-collision/output.js index e1a32c84b8..1778144111 100644 --- a/packages/babel-plugin-proposal-class-properties/test/fixtures/public-loose/constructor-collision/output.js +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/public-loose/constructor-collision/output.js @@ -6,4 +6,7 @@ var Foo = function Foo() { babelHelpers.classCallCheck(this, Foo); this.bar = foo; var _foo = "foo"; + var baz = "baz"; }; + +Foo.bar = baz; diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/public/constructor-collision/input.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/public/constructor-collision/input.js index 3bf6c83472..3071b5edb8 100644 --- a/packages/babel-plugin-proposal-class-properties/test/fixtures/public/constructor-collision/input.js +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/public/constructor-collision/input.js @@ -2,8 +2,10 @@ var foo = "bar"; class Foo { bar = foo; + static bar = baz; constructor() { var foo = "foo"; + var baz = "baz"; } } diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/public/constructor-collision/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/public/constructor-collision/output.js index 5565530ee7..1d65143009 100644 --- a/packages/babel-plugin-proposal-class-properties/test/fixtures/public/constructor-collision/output.js +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/public/constructor-collision/output.js @@ -6,4 +6,7 @@ var Foo = function Foo() { babelHelpers.classCallCheck(this, Foo); babelHelpers.defineProperty(this, "bar", foo); var _foo = "foo"; + var baz = "baz"; }; + +babelHelpers.defineProperty(Foo, "bar", baz);