From 6ab3b4c0e3462f5386ca8b2efbb512b178eeb834 Mon Sep 17 00:00:00 2001 From: Anup Date: Wed, 16 Aug 2017 19:42:38 +0530 Subject: [PATCH] Add 'configurable' property to class fields (#6123) --- packages/babel-plugin-transform-class-properties/README.md | 4 ++++ packages/babel-plugin-transform-class-properties/src/index.js | 2 +- .../constructor-collision-ignores-types/expected.js | 2 ++ .../test/fixtures/general/constructor-collision/expected.js | 1 + .../test/fixtures/general/derived/expected.js | 1 + .../test/fixtures/general/foobar/expected.js | 1 + .../test/fixtures/general/instance-undefined/expected.js | 1 + .../test/fixtures/general/instance/expected.js | 1 + .../test/fixtures/general/non-block-arrow-func/expected.js | 1 + .../test/fixtures/general/regression-T2983/expected.js | 2 ++ .../test/fixtures/general/regression-T6719/expected.js | 1 + .../test/fixtures/general/regression-T7364/expected.js | 3 +++ .../test/fixtures/general/static-export/expected.js | 2 ++ .../test/fixtures/general/static-infer-name/expected.js | 1 + .../test/fixtures/general/static-undefined/expected.js | 1 + .../test/fixtures/general/static/expected.js | 1 + .../test/fixtures/general/super-call/expected.js | 1 + .../test/fixtures/general/super-expression/expected.js | 1 + .../test/fixtures/general/super-statement/expected.js | 1 + 19 files changed, 27 insertions(+), 1 deletion(-) diff --git a/packages/babel-plugin-transform-class-properties/README.md b/packages/babel-plugin-transform-class-properties/README.md index f53fca868b..a79f9613e0 100644 --- a/packages/babel-plugin-transform-class-properties/README.md +++ b/packages/babel-plugin-transform-class-properties/README.md @@ -104,11 +104,13 @@ Without `{ "loose": true }`, the above code will compile to the following, using var Bork = function Bork() { babelHelpers.classCallCheck(this, Bork); Object.defineProperty(this, "x", { + configurable: true, enumerable: true, writable: true, value: 'bar' }); Object.defineProperty(this, "y", { + configurable: true, enumerable: true, writable: true, value: void 0 @@ -116,11 +118,13 @@ var Bork = function Bork() { }; Object.defineProperty(Bork, "a", { + configurable: true, enumerable: true, writable: true, value: 'foo' }); Object.defineProperty(Bork, "b", { + configurable: true, enumerable: true, writable: true, value: void 0 diff --git a/packages/babel-plugin-transform-class-properties/src/index.js b/packages/babel-plugin-transform-class-properties/src/index.js index de42c134a2..5f9f87fb02 100644 --- a/packages/babel-plugin-transform-class-properties/src/index.js +++ b/packages/babel-plugin-transform-class-properties/src/index.js @@ -25,7 +25,7 @@ export default function({ types: t }) { const buildObjectDefineProperty = template(` Object.defineProperty(REF, KEY, { - // configurable is false by default + configurable: true, enumerable: true, writable: true, value: VALUE diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/compile-to-class/constructor-collision-ignores-types/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/compile-to-class/constructor-collision-ignores-types/expected.js index 7973ee68a0..cb2c951cf9 100644 --- a/packages/babel-plugin-transform-class-properties/test/fixtures/compile-to-class/constructor-collision-ignores-types/expected.js +++ b/packages/babel-plugin-transform-class-properties/test/fixtures/compile-to-class/constructor-collision-ignores-types/expected.js @@ -2,11 +2,13 @@ class C { // Output should not use `_initialiseProps` constructor(T) { Object.defineProperty(this, "x", { + configurable: true, enumerable: true, writable: true, value: void 0 }); Object.defineProperty(this, "y", { + configurable: true, enumerable: true, writable: true, value: 0 diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/general/constructor-collision/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/constructor-collision/expected.js index 0b239c6567..5e865ec402 100644 --- a/packages/babel-plugin-transform-class-properties/test/fixtures/general/constructor-collision/expected.js +++ b/packages/babel-plugin-transform-class-properties/test/fixtures/general/constructor-collision/expected.js @@ -10,6 +10,7 @@ var Foo = function Foo() { var _initialiseProps = function () { Object.defineProperty(this, "bar", { + configurable: true, enumerable: true, writable: true, value: foo diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/general/derived/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/derived/expected.js index 0a310550cd..afdb91f92a 100644 --- a/packages/babel-plugin-transform-class-properties/test/fixtures/general/derived/expected.js +++ b/packages/babel-plugin-transform-class-properties/test/fixtures/general/derived/expected.js @@ -6,6 +6,7 @@ var Foo = function (_Bar) { babelHelpers.classCallCheck(this, Foo); return babelHelpers.possibleConstructorReturn(_this, (_temp = _this = babelHelpers.possibleConstructorReturn(this, (Foo.__proto__ || Object.getPrototypeOf(Foo)).call(this, ...args)), Object.defineProperty(_this, "bar", { + configurable: true, enumerable: true, writable: true, value: "foo" diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/general/foobar/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/foobar/expected.js index d88bf323cf..7c8fb3bcf2 100644 --- a/packages/babel-plugin-transform-class-properties/test/fixtures/general/foobar/expected.js +++ b/packages/babel-plugin-transform-class-properties/test/fixtures/general/foobar/expected.js @@ -9,6 +9,7 @@ var Child = function (_Parent) { babelHelpers.classCallCheck(this, Child); _this = babelHelpers.possibleConstructorReturn(this, (Child.__proto__ || Object.getPrototypeOf(Child)).call(this)); Object.defineProperty(_this, "scopedFunctionWithThis", { + configurable: true, enumerable: true, writable: true, value: function value() { diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/general/instance-undefined/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/instance-undefined/expected.js index 21e89d013d..a039021e41 100644 --- a/packages/babel-plugin-transform-class-properties/test/fixtures/general/instance-undefined/expected.js +++ b/packages/babel-plugin-transform-class-properties/test/fixtures/general/instance-undefined/expected.js @@ -1,6 +1,7 @@ var Foo = function Foo() { babelHelpers.classCallCheck(this, Foo); Object.defineProperty(this, "bar", { + configurable: true, enumerable: true, writable: true, value: void 0 diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/general/instance/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/instance/expected.js index 912039e900..caa2e35bbc 100644 --- a/packages/babel-plugin-transform-class-properties/test/fixtures/general/instance/expected.js +++ b/packages/babel-plugin-transform-class-properties/test/fixtures/general/instance/expected.js @@ -1,6 +1,7 @@ var Foo = function Foo() { babelHelpers.classCallCheck(this, Foo); Object.defineProperty(this, "bar", { + configurable: true, enumerable: true, writable: true, value: "foo" diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/general/non-block-arrow-func/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/non-block-arrow-func/expected.js index 40838df79a..70d902557f 100644 --- a/packages/babel-plugin-transform-class-properties/test/fixtures/general/non-block-arrow-func/expected.js +++ b/packages/babel-plugin-transform-class-properties/test/fixtures/general/non-block-arrow-func/expected.js @@ -14,6 +14,7 @@ export default (param => { }]); return App; }(), Object.defineProperty(_class, "props", { + configurable: true, enumerable: true, writable: true, value: { diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/general/regression-T2983/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/regression-T2983/expected.js index b7af9d87e7..221316a2f1 100644 --- a/packages/babel-plugin-transform-class-properties/test/fixtures/general/regression-T2983/expected.js +++ b/packages/babel-plugin-transform-class-properties/test/fixtures/general/regression-T2983/expected.js @@ -3,6 +3,7 @@ var _class, _temp; call((_temp = _class = function _class() { babelHelpers.classCallCheck(this, _class); }, Object.defineProperty(_class, "test", { + configurable: true, enumerable: true, writable: true, value: true @@ -13,6 +14,7 @@ var _class2 = function _class2() { }; Object.defineProperty(_class2, "test", { + configurable: true, enumerable: true, writable: true, value: true diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/general/regression-T6719/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/regression-T6719/expected.js index c9c5a1a314..d752b9c7e3 100644 --- a/packages/babel-plugin-transform-class-properties/test/fixtures/general/regression-T6719/expected.js +++ b/packages/babel-plugin-transform-class-properties/test/fixtures/general/regression-T6719/expected.js @@ -11,6 +11,7 @@ function withContext(ComposedComponent) { return WithContext; }(Component), Object.defineProperty(_class, "propTypes", { + configurable: true, enumerable: true, writable: true, value: { diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/general/regression-T7364/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/regression-T7364/expected.js index 74a4cbc036..b318319f57 100644 --- a/packages/babel-plugin-transform-class-properties/test/fixtures/general/regression-T7364/expected.js +++ b/packages/babel-plugin-transform-class-properties/test/fixtures/general/regression-T7364/expected.js @@ -3,6 +3,7 @@ class MyClass { var _this = this; Object.defineProperty(this, "myAsyncMethod", { + configurable: true, enumerable: true, writable: true, value: (() => { @@ -24,6 +25,7 @@ class MyClass { var _this2 = this; Object.defineProperty(this, "myAsyncMethod", { + configurable: true, enumerable: true, writable: true, value: (() => { @@ -45,6 +47,7 @@ export default class MyClass3 { var _this3 = this; Object.defineProperty(this, "myAsyncMethod", { + configurable: true, enumerable: true, writable: true, value: (() => { diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/general/static-export/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/static-export/expected.js index fbabfa6769..f8c161de0b 100644 --- a/packages/babel-plugin-transform-class-properties/test/fixtures/general/static-export/expected.js +++ b/packages/babel-plugin-transform-class-properties/test/fixtures/general/static-export/expected.js @@ -2,6 +2,7 @@ export var MyClass = function MyClass() { babelHelpers.classCallCheck(this, MyClass); }; Object.defineProperty(MyClass, "property", { + configurable: true, enumerable: true, writable: true, value: value @@ -12,6 +13,7 @@ var MyClass2 = function MyClass2() { }; Object.defineProperty(MyClass2, "property", { + configurable: true, enumerable: true, writable: true, value: value diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/general/static-infer-name/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/static-infer-name/expected.js index 78cc382206..479b45b8ef 100644 --- a/packages/babel-plugin-transform-class-properties/test/fixtures/general/static-infer-name/expected.js +++ b/packages/babel-plugin-transform-class-properties/test/fixtures/general/static-infer-name/expected.js @@ -3,6 +3,7 @@ var _class, _temp; var Foo = (_temp = _class = function Foo() { babelHelpers.classCallCheck(this, Foo); }, Object.defineProperty(_class, "num", { + configurable: true, enumerable: true, writable: true, value: 0 diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/general/static-undefined/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/static-undefined/expected.js index 32277c167f..dd57556d7c 100644 --- a/packages/babel-plugin-transform-class-properties/test/fixtures/general/static-undefined/expected.js +++ b/packages/babel-plugin-transform-class-properties/test/fixtures/general/static-undefined/expected.js @@ -3,6 +3,7 @@ var Foo = function Foo() { }; Object.defineProperty(Foo, "bar", { + configurable: true, enumerable: true, writable: true, value: void 0 diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/general/static/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/static/expected.js index 78f546364a..4f84872b8a 100644 --- a/packages/babel-plugin-transform-class-properties/test/fixtures/general/static/expected.js +++ b/packages/babel-plugin-transform-class-properties/test/fixtures/general/static/expected.js @@ -3,6 +3,7 @@ var Foo = function Foo() { }; Object.defineProperty(Foo, "bar", { + configurable: true, enumerable: true, writable: true, value: "foo" diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/general/super-call/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/super-call/expected.js index df7fa481ef..54b6dc2291 100644 --- a/packages/babel-plugin-transform-class-properties/test/fixtures/general/super-call/expected.js +++ b/packages/babel-plugin-transform-class-properties/test/fixtures/general/super-call/expected.js @@ -20,6 +20,7 @@ var B = function (_A) { babelHelpers.classCallCheck(this, B); return babelHelpers.possibleConstructorReturn(_this, (_temp = _this = babelHelpers.possibleConstructorReturn(this, (B.__proto__ || Object.getPrototypeOf(B)).call(this, ...args)), Object.defineProperty(_this, "foo", { + configurable: true, enumerable: true, writable: true, value: babelHelpers.get(B.prototype.__proto__ || Object.getPrototypeOf(B.prototype), "foo", _this).call(_this) diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/general/super-expression/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/super-expression/expected.js index 3317c7ae96..d047d29caa 100644 --- a/packages/babel-plugin-transform-class-properties/test/fixtures/general/super-expression/expected.js +++ b/packages/babel-plugin-transform-class-properties/test/fixtures/general/super-expression/expected.js @@ -6,6 +6,7 @@ var Foo = function (_Bar) { babelHelpers.classCallCheck(this, Foo); foo((_temp = _this = babelHelpers.possibleConstructorReturn(this, (Foo.__proto__ || Object.getPrototypeOf(Foo)).call(this)), Object.defineProperty(_this, "bar", { + configurable: true, enumerable: true, writable: true, value: "foo" diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/general/super-statement/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/super-statement/expected.js index 2b0dfee20a..81f6171973 100644 --- a/packages/babel-plugin-transform-class-properties/test/fixtures/general/super-statement/expected.js +++ b/packages/babel-plugin-transform-class-properties/test/fixtures/general/super-statement/expected.js @@ -7,6 +7,7 @@ var Foo = function (_Bar) { babelHelpers.classCallCheck(this, Foo); _this = babelHelpers.possibleConstructorReturn(this, (Foo.__proto__ || Object.getPrototypeOf(Foo)).call(this)); Object.defineProperty(_this, "bar", { + configurable: true, enumerable: true, writable: true, value: "foo"