From 4fdd75695b8095a0891a70740f3c7e95a1e7b24a Mon Sep 17 00:00:00 2001 From: Noah Lemen Date: Thu, 10 Aug 2017 11:19:49 -0400 Subject: [PATCH] Update Class Fields to Stage 3 and change default behavior (#6076) * add transform-class-properties to stage 3, set spec mode to default * update readme with examples; use `buildUndefinedNode()`; change behavior to always define both static and nonstatic class properties regardless of spec/loose mode; update tests --- .../README.md | 60 ++++++++++++++++++- .../src/index.js | 25 ++++---- .../general/constructor-collision/expected.js | 6 +- .../test/fixtures/general/derived/expected.js | 6 +- .../test/fixtures/general/foobar/expected.js | 12 ++-- .../test/fixtures/general/foobar/options.json | 2 +- .../general/instance-undefined/expected.js | 5 ++ .../fixtures/general/instance/expected.js | 6 +- .../general/non-block-arrow-func/expected.js | 12 ++-- .../regression-T2983/actual.js | 0 .../regression-T2983/expected.js | 0 .../regression-T6719/actual.js | 0 .../regression-T6719/expected.js | 0 .../regression-T7364/actual.js | 0 .../regression-T7364/expected.js | 0 .../regression-T7364/options.json | 2 +- .../general/static-export/expected.js | 12 +++- .../general/static-infer-name/expected.js | 6 +- .../fixtures/general/static-undefined/exec.js | 2 +- .../general/static-undefined/expected.js | 6 ++ .../test/fixtures/general/static/expected.js | 6 +- .../{spec => general}/super-call/actual.js | 0 .../{spec => general}/super-call/expected.js | 0 .../general/super-expression/expected.js | 6 +- .../general/super-statement/expected.js | 6 +- .../constructor-collision/actual.js | 0 .../constructor-collision/expected.js | 6 +- .../{spec => loose}/derived/actual.js | 0 .../{spec => loose}/derived/expected.js | 6 +- .../fixtures/{spec => loose}/foobar/actual.js | 0 .../{spec => loose}/foobar/expected.js | 12 ++-- .../test/fixtures/loose/foobar/options.json | 4 ++ .../instance-computed/actual.js | 0 .../instance-computed/expected.js | 0 .../instance-undefined/actual.js | 0 .../loose/instance-undefined/expected.js | 4 ++ .../{spec => loose}/instance/actual.js | 0 .../test/fixtures/loose/instance/expected.js | 4 ++ .../non-block-arrow-func/actual.js | 0 .../non-block-arrow-func/expected.js | 12 ++-- .../test/fixtures/loose/options.json | 3 + .../{spec => loose}/static-export/actual.js | 0 .../{spec => loose}/static-export/expected.js | 12 +--- .../static-infer-name/actual.js | 0 .../{spec => loose}/static-infer-name/exec.js | 0 .../static-infer-name/expected.js | 6 +- .../static-undefined/actual.js | 0 .../{spec => loose}/static-undefined/exec.js | 0 .../static-undefined}/expected.js | 2 + .../fixtures/{spec => loose}/static/actual.js | 0 .../fixtures/{spec => loose}/static/exec.js | 0 .../test/fixtures/loose/static/expected.js | 5 ++ .../super-expression/actual.js | 0 .../super-expression/expected.js | 6 +- .../{spec => loose}/super-statement/actual.js | 0 .../super-statement/expected.js | 6 +- .../fixtures/regression/T7364/options.json | 2 +- .../test/fixtures/regression/options.json | 2 +- .../test/fixtures/spec/foobar/options.json | 4 -- .../test/fixtures/spec/instance/expected.js | 8 --- .../test/fixtures/spec/options.json | 3 - .../spec/static-undefined/expected.js | 9 --- .../test/fixtures/spec/static/expected.js | 9 --- .../test/fixtures/options.json | 2 +- .../rest-arrow-functions/options.json | 3 + .../class-prop-values-3/expected.js | 1 + .../class-prop-values-3/options.json | 2 +- .../general/class-properties/options.json | 2 +- .../options.json | 2 +- .../member-expression-this/options.json | 2 +- .../member-expression/options.json | 2 +- packages/babel-preset-stage-2/src/index.js | 7 +-- packages/babel-preset-stage-3/package.json | 1 + packages/babel-preset-stage-3/src/index.js | 2 + 74 files changed, 196 insertions(+), 135 deletions(-) rename packages/babel-plugin-transform-class-properties/test/fixtures/{spec => general}/regression-T2983/actual.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{spec => general}/regression-T2983/expected.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{spec => general}/regression-T6719/actual.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{spec => general}/regression-T6719/expected.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{spec => general}/regression-T7364/actual.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{spec => general}/regression-T7364/expected.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{spec => general}/regression-T7364/options.json (61%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{spec => general}/super-call/actual.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{spec => general}/super-call/expected.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{spec => loose}/constructor-collision/actual.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{spec => loose}/constructor-collision/expected.js (64%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{spec => loose}/derived/actual.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{spec => loose}/derived/expected.js (63%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{spec => loose}/foobar/actual.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{spec => loose}/foobar/expected.js (65%) create mode 100644 packages/babel-plugin-transform-class-properties/test/fixtures/loose/foobar/options.json rename packages/babel-plugin-transform-class-properties/test/fixtures/{general => loose}/instance-computed/actual.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{general => loose}/instance-computed/expected.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{spec => loose}/instance-undefined/actual.js (100%) create mode 100644 packages/babel-plugin-transform-class-properties/test/fixtures/loose/instance-undefined/expected.js rename packages/babel-plugin-transform-class-properties/test/fixtures/{spec => loose}/instance/actual.js (100%) create mode 100644 packages/babel-plugin-transform-class-properties/test/fixtures/loose/instance/expected.js rename packages/babel-plugin-transform-class-properties/test/fixtures/{spec => loose}/non-block-arrow-func/actual.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{spec => loose}/non-block-arrow-func/expected.js (65%) create mode 100644 packages/babel-plugin-transform-class-properties/test/fixtures/loose/options.json rename packages/babel-plugin-transform-class-properties/test/fixtures/{spec => loose}/static-export/actual.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{spec => loose}/static-export/expected.js (50%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{spec => loose}/static-infer-name/actual.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{spec => loose}/static-infer-name/exec.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{spec => loose}/static-infer-name/expected.js (50%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{spec => loose}/static-undefined/actual.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{spec => loose}/static-undefined/exec.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{spec/instance-undefined => loose/static-undefined}/expected.js (80%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{spec => loose}/static/actual.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{spec => loose}/static/exec.js (100%) create mode 100644 packages/babel-plugin-transform-class-properties/test/fixtures/loose/static/expected.js rename packages/babel-plugin-transform-class-properties/test/fixtures/{spec => loose}/super-expression/actual.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{spec => loose}/super-expression/expected.js (72%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{spec => loose}/super-statement/actual.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{spec => loose}/super-statement/expected.js (72%) delete mode 100644 packages/babel-plugin-transform-class-properties/test/fixtures/spec/foobar/options.json delete mode 100644 packages/babel-plugin-transform-class-properties/test/fixtures/spec/instance/expected.js delete mode 100644 packages/babel-plugin-transform-class-properties/test/fixtures/spec/options.json delete mode 100644 packages/babel-plugin-transform-class-properties/test/fixtures/spec/static-undefined/expected.js delete mode 100644 packages/babel-plugin-transform-class-properties/test/fixtures/spec/static/expected.js create mode 100644 packages/babel-plugin-transform-es2015-parameters/test/fixtures/parameters/rest-arrow-functions/options.json diff --git a/packages/babel-plugin-transform-class-properties/README.md b/packages/babel-plugin-transform-class-properties/README.md index 49f48223e4..eac25f59e9 100644 --- a/packages/babel-plugin-transform-class-properties/README.md +++ b/packages/babel-plugin-transform-class-properties/README.md @@ -55,7 +55,7 @@ npm install --save-dev babel-plugin-transform-class-properties // with options { "plugins": [ - ["transform-class-properties", { "spec": true }] + ["transform-class-properties", { "loose": true }] ] } ``` @@ -76,11 +76,65 @@ require("babel-core").transform("code", { ## Options -### `spec` +### `loose` `boolean`, defaults to `false`. -Class properties are compiled to use `Object.defineProperty`. Static fields are now defined even if they are not initialized. +When `true`, class properties are compiled to use an assignment expression instead of `Object.defineProperty`. + +#### Example + +```js + class Bork { + static a = 'foo'; + static b; + + x = 'bar'; + y; + } +``` + +Without `{ "loose": true }`, the above code will compile to the following, using `Object.definePropery`: + +```js +var Bork = function Bork() { + babelHelpers.classCallCheck(this, Bork); + Object.defineProperty(this, "x", { + enumerable: true, + writable: true, + value: 'bar' + }); + Object.defineProperty(this, "y", { + enumerable: true, + writable: true, + value: void 0 + }); +}; + +Object.defineProperty(Bork, "a", { + enumerable: true, + writable: true, + value: 'foo' +}); +Object.defineProperty(Bork, "b", { + enumerable: true, + writable: true, + value: void 0 +}); +``` + +However, with `{ "loose": true }`, it will compile using assignment expressions: + +```js +var Bork = function Bork() { + babelHelpers.classCallCheck(this, Bork); + this.x = 'bar'; + this.y = void 0; +}; + +Bork.a = 'foo'; +Bork.b = void 0; +``` ## References diff --git a/packages/babel-plugin-transform-class-properties/src/index.js b/packages/babel-plugin-transform-class-properties/src/index.js index 1a3753e890..eb6ab6cad8 100644 --- a/packages/babel-plugin-transform-class-properties/src/index.js +++ b/packages/babel-plugin-transform-class-properties/src/index.js @@ -29,19 +29,19 @@ export default function({ types: t }) { }); `); - const buildClassPropertySpec = (ref, { key, value, computed }) => + const buildClassPropertySpec = (ref, { key, value, computed }, scope) => buildObjectDefineProperty({ REF: ref, KEY: t.isIdentifier(key) && !computed ? t.stringLiteral(key.name) : key, - VALUE: value ? value : t.identifier("undefined"), + VALUE: value ? value : scope.buildUndefinedNode(), }); - const buildClassPropertyNonSpec = (ref, { key, value, computed }) => + const buildClassPropertyLoose = (ref, { key, value, computed }, scope) => t.expressionStatement( t.assignmentExpression( "=", t.memberExpression(ref, key, computed || t.isLiteral(key)), - value, + value ? value : scope.buildUndefinedNode(), ), ); @@ -50,9 +50,9 @@ export default function({ types: t }) { visitor: { Class(path, state) { - const buildClassProperty = state.opts.spec - ? buildClassPropertySpec - : buildClassPropertyNonSpec; + const buildClassProperty = state.opts.loose + ? buildClassPropertyLoose + : buildClassPropertySpec; const isDerived = !!path.node.superClass; let constructor; const props = []; @@ -85,17 +85,14 @@ export default function({ types: t }) { const propNode = prop.node; if (propNode.decorators && propNode.decorators.length > 0) continue; - // In non-spec mode, all properties without values are ignored. - // In spec mode, *static* properties without values are still defined (see below). - if (!state.opts.spec && !propNode.value) continue; - const isStatic = propNode.static; if (isStatic) { - nodes.push(buildClassProperty(ref, propNode)); + nodes.push(buildClassProperty(ref, propNode, path.scope)); } else { - if (!propNode.value) continue; // Ignore instance property with no value in spec mode - instanceBody.push(buildClassProperty(t.thisExpression(), propNode)); + instanceBody.push( + buildClassProperty(t.thisExpression(), propNode, path.scope), + ); } } 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 12af37359c..0b239c6567 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 @@ -9,5 +9,9 @@ var Foo = function Foo() { }; var _initialiseProps = function () { - this.bar = foo; + Object.defineProperty(this, "bar", { + 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 867ec20199..0a310550cd 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 @@ -5,7 +5,11 @@ var Foo = function (_Bar) { var _temp, _this; babelHelpers.classCallCheck(this, Foo); - return babelHelpers.possibleConstructorReturn(_this, (_temp = _this = babelHelpers.possibleConstructorReturn(this, (Foo.__proto__ || Object.getPrototypeOf(Foo)).call(this, ...args)), _this.bar = "foo", _temp)); + return babelHelpers.possibleConstructorReturn(_this, (_temp = _this = babelHelpers.possibleConstructorReturn(this, (Foo.__proto__ || Object.getPrototypeOf(Foo)).call(this, ...args)), Object.defineProperty(_this, "bar", { + enumerable: true, + writable: true, + value: "foo" + }), _temp)); } return 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 96bf327c18..d88bf323cf 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 @@ -8,11 +8,13 @@ var Child = function (_Parent) { babelHelpers.classCallCheck(this, Child); _this = babelHelpers.possibleConstructorReturn(this, (Child.__proto__ || Object.getPrototypeOf(Child)).call(this)); - - _this.scopedFunctionWithThis = function () { - _this.name = {}; - }; - + Object.defineProperty(_this, "scopedFunctionWithThis", { + enumerable: true, + writable: true, + value: function value() { + _this.name = {}; + } + }); return _this; } diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/general/foobar/options.json b/packages/babel-plugin-transform-class-properties/test/fixtures/general/foobar/options.json index c47cf262eb..3b8f86d5ea 100644 --- a/packages/babel-plugin-transform-class-properties/test/fixtures/general/foobar/options.json +++ b/packages/babel-plugin-transform-class-properties/test/fixtures/general/foobar/options.json @@ -1,4 +1,4 @@ { - "plugins": ["external-helpers"], + "plugins": ["external-helpers", "transform-class-properties"], "presets": ["stage-0", "es2015"] } 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 4f46d4a642..21e89d013d 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,3 +1,8 @@ var Foo = function Foo() { babelHelpers.classCallCheck(this, Foo); + Object.defineProperty(this, "bar", { + 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 f832ea3565..912039e900 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,4 +1,8 @@ var Foo = function Foo() { babelHelpers.classCallCheck(this, Foo); - this.bar = "foo"; + Object.defineProperty(this, "bar", { + 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 d98ec13f0c..40838df79a 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 @@ -13,8 +13,12 @@ export default (param => { } }]); return App; - }(), _class.props = { - prop1: 'prop1', - prop2: 'prop2' - }, _temp; + }(), Object.defineProperty(_class, "props", { + enumerable: true, + writable: true, + value: { + prop1: 'prop1', + prop2: 'prop2' + } + }), _temp; }); diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/regression-T2983/actual.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/regression-T2983/actual.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/spec/regression-T2983/actual.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/general/regression-T2983/actual.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/regression-T2983/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/regression-T2983/expected.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/spec/regression-T2983/expected.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/general/regression-T2983/expected.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/regression-T6719/actual.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/regression-T6719/actual.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/spec/regression-T6719/actual.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/general/regression-T6719/actual.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/regression-T6719/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/regression-T6719/expected.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/spec/regression-T6719/expected.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/general/regression-T6719/expected.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/regression-T7364/actual.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/regression-T7364/actual.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/spec/regression-T7364/actual.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/general/regression-T7364/actual.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/regression-T7364/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/regression-T7364/expected.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/spec/regression-T7364/expected.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/general/regression-T7364/expected.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/regression-T7364/options.json b/packages/babel-plugin-transform-class-properties/test/fixtures/general/regression-T7364/options.json similarity index 61% rename from packages/babel-plugin-transform-class-properties/test/fixtures/spec/regression-T7364/options.json rename to packages/babel-plugin-transform-class-properties/test/fixtures/general/regression-T7364/options.json index 3d827b26c9..c19d38a941 100644 --- a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/regression-T7364/options.json +++ b/packages/babel-plugin-transform-class-properties/test/fixtures/general/regression-T7364/options.json @@ -2,6 +2,6 @@ "plugins": [ "external-helpers", "transform-async-to-generator", - ["transform-class-properties", { "spec": true }] + ["transform-class-properties"] ] } 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 480a42d193..fbabfa6769 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 @@ -1,11 +1,19 @@ export var MyClass = function MyClass() { babelHelpers.classCallCheck(this, MyClass); }; -MyClass.property = value; +Object.defineProperty(MyClass, "property", { + enumerable: true, + writable: true, + value: value +}); var MyClass2 = function MyClass2() { babelHelpers.classCallCheck(this, MyClass2); }; -MyClass2.property = value; +Object.defineProperty(MyClass2, "property", { + enumerable: true, + writable: true, + value: value +}); export { MyClass2 as default }; 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 b9dfd403a2..78cc382206 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 @@ -2,4 +2,8 @@ var _class, _temp; var Foo = (_temp = _class = function Foo() { babelHelpers.classCallCheck(this, Foo); -}, _class.num = 0, _temp); +}, Object.defineProperty(_class, "num", { + enumerable: true, + writable: true, + value: 0 +}), _temp); diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/general/static-undefined/exec.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/static-undefined/exec.js index ed37421154..0771105a61 100644 --- a/packages/babel-plugin-transform-class-properties/test/fixtures/general/static-undefined/exec.js +++ b/packages/babel-plugin-transform-class-properties/test/fixtures/general/static-undefined/exec.js @@ -2,5 +2,5 @@ class Foo { static num; } -assert.equal("num" in Foo, false); +assert.equal("num" in Foo, true); assert.equal(Foo.num, undefined); 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 4f46d4a642..32277c167f 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 @@ -1,3 +1,9 @@ var Foo = function Foo() { babelHelpers.classCallCheck(this, Foo); }; + +Object.defineProperty(Foo, "bar", { + 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 4d0c09379d..78f546364a 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 @@ -2,4 +2,8 @@ var Foo = function Foo() { babelHelpers.classCallCheck(this, Foo); }; -Foo.bar = "foo"; +Object.defineProperty(Foo, "bar", { + enumerable: true, + writable: true, + value: "foo" +}); diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/super-call/actual.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/super-call/actual.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/spec/super-call/actual.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/general/super-call/actual.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/super-call/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/super-call/expected.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/spec/super-call/expected.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/general/super-call/expected.js 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 f85464d996..3317c7ae96 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 @@ -5,7 +5,11 @@ var Foo = function (_Bar) { var _temp, _this; babelHelpers.classCallCheck(this, Foo); - foo((_temp = _this = babelHelpers.possibleConstructorReturn(this, (Foo.__proto__ || Object.getPrototypeOf(Foo)).call(this)), _this.bar = "foo", _temp)); + foo((_temp = _this = babelHelpers.possibleConstructorReturn(this, (Foo.__proto__ || Object.getPrototypeOf(Foo)).call(this)), Object.defineProperty(_this, "bar", { + enumerable: true, + writable: true, + value: "foo" + }), _temp)); return _this; } 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 5889fd0ea8..2b0dfee20a 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 @@ -6,7 +6,11 @@ var Foo = function (_Bar) { babelHelpers.classCallCheck(this, Foo); _this = babelHelpers.possibleConstructorReturn(this, (Foo.__proto__ || Object.getPrototypeOf(Foo)).call(this)); - _this.bar = "foo"; + Object.defineProperty(_this, "bar", { + enumerable: true, + writable: true, + value: "foo" + }); return _this; } diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/constructor-collision/actual.js b/packages/babel-plugin-transform-class-properties/test/fixtures/loose/constructor-collision/actual.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/spec/constructor-collision/actual.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/loose/constructor-collision/actual.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/constructor-collision/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/loose/constructor-collision/expected.js similarity index 64% rename from packages/babel-plugin-transform-class-properties/test/fixtures/spec/constructor-collision/expected.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/loose/constructor-collision/expected.js index 0b239c6567..12af37359c 100644 --- a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/constructor-collision/expected.js +++ b/packages/babel-plugin-transform-class-properties/test/fixtures/loose/constructor-collision/expected.js @@ -9,9 +9,5 @@ var Foo = function Foo() { }; var _initialiseProps = function () { - Object.defineProperty(this, "bar", { - enumerable: true, - writable: true, - value: foo - }); + this.bar = foo; }; diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/derived/actual.js b/packages/babel-plugin-transform-class-properties/test/fixtures/loose/derived/actual.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/spec/derived/actual.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/loose/derived/actual.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/derived/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/loose/derived/expected.js similarity index 63% rename from packages/babel-plugin-transform-class-properties/test/fixtures/spec/derived/expected.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/loose/derived/expected.js index 0a310550cd..867ec20199 100644 --- a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/derived/expected.js +++ b/packages/babel-plugin-transform-class-properties/test/fixtures/loose/derived/expected.js @@ -5,11 +5,7 @@ var Foo = function (_Bar) { var _temp, _this; 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", { - enumerable: true, - writable: true, - value: "foo" - }), _temp)); + return babelHelpers.possibleConstructorReturn(_this, (_temp = _this = babelHelpers.possibleConstructorReturn(this, (Foo.__proto__ || Object.getPrototypeOf(Foo)).call(this, ...args)), _this.bar = "foo", _temp)); } return Foo; diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/foobar/actual.js b/packages/babel-plugin-transform-class-properties/test/fixtures/loose/foobar/actual.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/spec/foobar/actual.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/loose/foobar/actual.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/foobar/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/loose/foobar/expected.js similarity index 65% rename from packages/babel-plugin-transform-class-properties/test/fixtures/spec/foobar/expected.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/loose/foobar/expected.js index d88bf323cf..96bf327c18 100644 --- a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/foobar/expected.js +++ b/packages/babel-plugin-transform-class-properties/test/fixtures/loose/foobar/expected.js @@ -8,13 +8,11 @@ var Child = function (_Parent) { babelHelpers.classCallCheck(this, Child); _this = babelHelpers.possibleConstructorReturn(this, (Child.__proto__ || Object.getPrototypeOf(Child)).call(this)); - Object.defineProperty(_this, "scopedFunctionWithThis", { - enumerable: true, - writable: true, - value: function value() { - _this.name = {}; - } - }); + + _this.scopedFunctionWithThis = function () { + _this.name = {}; + }; + return _this; } diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/loose/foobar/options.json b/packages/babel-plugin-transform-class-properties/test/fixtures/loose/foobar/options.json new file mode 100644 index 0000000000..c47cf262eb --- /dev/null +++ b/packages/babel-plugin-transform-class-properties/test/fixtures/loose/foobar/options.json @@ -0,0 +1,4 @@ +{ + "plugins": ["external-helpers"], + "presets": ["stage-0", "es2015"] +} diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/general/instance-computed/actual.js b/packages/babel-plugin-transform-class-properties/test/fixtures/loose/instance-computed/actual.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/general/instance-computed/actual.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/loose/instance-computed/actual.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/general/instance-computed/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/loose/instance-computed/expected.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/general/instance-computed/expected.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/loose/instance-computed/expected.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/instance-undefined/actual.js b/packages/babel-plugin-transform-class-properties/test/fixtures/loose/instance-undefined/actual.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/spec/instance-undefined/actual.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/loose/instance-undefined/actual.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/loose/instance-undefined/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/loose/instance-undefined/expected.js new file mode 100644 index 0000000000..7266d5fa3e --- /dev/null +++ b/packages/babel-plugin-transform-class-properties/test/fixtures/loose/instance-undefined/expected.js @@ -0,0 +1,4 @@ +var Foo = function Foo() { + babelHelpers.classCallCheck(this, Foo); + this.bar = void 0; +}; diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/instance/actual.js b/packages/babel-plugin-transform-class-properties/test/fixtures/loose/instance/actual.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/spec/instance/actual.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/loose/instance/actual.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/loose/instance/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/loose/instance/expected.js new file mode 100644 index 0000000000..f832ea3565 --- /dev/null +++ b/packages/babel-plugin-transform-class-properties/test/fixtures/loose/instance/expected.js @@ -0,0 +1,4 @@ +var Foo = function Foo() { + babelHelpers.classCallCheck(this, Foo); + this.bar = "foo"; +}; diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/non-block-arrow-func/actual.js b/packages/babel-plugin-transform-class-properties/test/fixtures/loose/non-block-arrow-func/actual.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/spec/non-block-arrow-func/actual.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/loose/non-block-arrow-func/actual.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/non-block-arrow-func/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/loose/non-block-arrow-func/expected.js similarity index 65% rename from packages/babel-plugin-transform-class-properties/test/fixtures/spec/non-block-arrow-func/expected.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/loose/non-block-arrow-func/expected.js index 40838df79a..d98ec13f0c 100644 --- a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/non-block-arrow-func/expected.js +++ b/packages/babel-plugin-transform-class-properties/test/fixtures/loose/non-block-arrow-func/expected.js @@ -13,12 +13,8 @@ export default (param => { } }]); return App; - }(), Object.defineProperty(_class, "props", { - enumerable: true, - writable: true, - value: { - prop1: 'prop1', - prop2: 'prop2' - } - }), _temp; + }(), _class.props = { + prop1: 'prop1', + prop2: 'prop2' + }, _temp; }); diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/loose/options.json b/packages/babel-plugin-transform-class-properties/test/fixtures/loose/options.json new file mode 100644 index 0000000000..318585674f --- /dev/null +++ b/packages/babel-plugin-transform-class-properties/test/fixtures/loose/options.json @@ -0,0 +1,3 @@ +{ + "plugins": ["external-helpers", ["transform-class-properties", {"loose": true}], "transform-es2015-classes", "transform-es2015-block-scoping", "syntax-class-properties"] +} diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/static-export/actual.js b/packages/babel-plugin-transform-class-properties/test/fixtures/loose/static-export/actual.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/spec/static-export/actual.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/loose/static-export/actual.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/static-export/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/loose/static-export/expected.js similarity index 50% rename from packages/babel-plugin-transform-class-properties/test/fixtures/spec/static-export/expected.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/loose/static-export/expected.js index fbabfa6769..480a42d193 100644 --- a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/static-export/expected.js +++ b/packages/babel-plugin-transform-class-properties/test/fixtures/loose/static-export/expected.js @@ -1,19 +1,11 @@ export var MyClass = function MyClass() { babelHelpers.classCallCheck(this, MyClass); }; -Object.defineProperty(MyClass, "property", { - enumerable: true, - writable: true, - value: value -}); +MyClass.property = value; var MyClass2 = function MyClass2() { babelHelpers.classCallCheck(this, MyClass2); }; -Object.defineProperty(MyClass2, "property", { - enumerable: true, - writable: true, - value: value -}); +MyClass2.property = value; export { MyClass2 as default }; diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/static-infer-name/actual.js b/packages/babel-plugin-transform-class-properties/test/fixtures/loose/static-infer-name/actual.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/spec/static-infer-name/actual.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/loose/static-infer-name/actual.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/static-infer-name/exec.js b/packages/babel-plugin-transform-class-properties/test/fixtures/loose/static-infer-name/exec.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/spec/static-infer-name/exec.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/loose/static-infer-name/exec.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/static-infer-name/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/loose/static-infer-name/expected.js similarity index 50% rename from packages/babel-plugin-transform-class-properties/test/fixtures/spec/static-infer-name/expected.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/loose/static-infer-name/expected.js index 78cc382206..b9dfd403a2 100644 --- a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/static-infer-name/expected.js +++ b/packages/babel-plugin-transform-class-properties/test/fixtures/loose/static-infer-name/expected.js @@ -2,8 +2,4 @@ var _class, _temp; var Foo = (_temp = _class = function Foo() { babelHelpers.classCallCheck(this, Foo); -}, Object.defineProperty(_class, "num", { - enumerable: true, - writable: true, - value: 0 -}), _temp); +}, _class.num = 0, _temp); diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/static-undefined/actual.js b/packages/babel-plugin-transform-class-properties/test/fixtures/loose/static-undefined/actual.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/spec/static-undefined/actual.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/loose/static-undefined/actual.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/static-undefined/exec.js b/packages/babel-plugin-transform-class-properties/test/fixtures/loose/static-undefined/exec.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/spec/static-undefined/exec.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/loose/static-undefined/exec.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/instance-undefined/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/loose/static-undefined/expected.js similarity index 80% rename from packages/babel-plugin-transform-class-properties/test/fixtures/spec/instance-undefined/expected.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/loose/static-undefined/expected.js index 4f46d4a642..8257a3d7cd 100644 --- a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/instance-undefined/expected.js +++ b/packages/babel-plugin-transform-class-properties/test/fixtures/loose/static-undefined/expected.js @@ -1,3 +1,5 @@ var Foo = function Foo() { babelHelpers.classCallCheck(this, Foo); }; + +Foo.bar = void 0; \ No newline at end of file diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/static/actual.js b/packages/babel-plugin-transform-class-properties/test/fixtures/loose/static/actual.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/spec/static/actual.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/loose/static/actual.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/static/exec.js b/packages/babel-plugin-transform-class-properties/test/fixtures/loose/static/exec.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/spec/static/exec.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/loose/static/exec.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/loose/static/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/loose/static/expected.js new file mode 100644 index 0000000000..4d0c09379d --- /dev/null +++ b/packages/babel-plugin-transform-class-properties/test/fixtures/loose/static/expected.js @@ -0,0 +1,5 @@ +var Foo = function Foo() { + babelHelpers.classCallCheck(this, Foo); +}; + +Foo.bar = "foo"; diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/super-expression/actual.js b/packages/babel-plugin-transform-class-properties/test/fixtures/loose/super-expression/actual.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/spec/super-expression/actual.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/loose/super-expression/actual.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/super-expression/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/loose/super-expression/expected.js similarity index 72% rename from packages/babel-plugin-transform-class-properties/test/fixtures/spec/super-expression/expected.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/loose/super-expression/expected.js index 3317c7ae96..f85464d996 100644 --- a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/super-expression/expected.js +++ b/packages/babel-plugin-transform-class-properties/test/fixtures/loose/super-expression/expected.js @@ -5,11 +5,7 @@ var Foo = function (_Bar) { var _temp, _this; babelHelpers.classCallCheck(this, Foo); - foo((_temp = _this = babelHelpers.possibleConstructorReturn(this, (Foo.__proto__ || Object.getPrototypeOf(Foo)).call(this)), Object.defineProperty(_this, "bar", { - enumerable: true, - writable: true, - value: "foo" - }), _temp)); + foo((_temp = _this = babelHelpers.possibleConstructorReturn(this, (Foo.__proto__ || Object.getPrototypeOf(Foo)).call(this)), _this.bar = "foo", _temp)); return _this; } diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/super-statement/actual.js b/packages/babel-plugin-transform-class-properties/test/fixtures/loose/super-statement/actual.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/spec/super-statement/actual.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/loose/super-statement/actual.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/super-statement/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/loose/super-statement/expected.js similarity index 72% rename from packages/babel-plugin-transform-class-properties/test/fixtures/spec/super-statement/expected.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/loose/super-statement/expected.js index 2b0dfee20a..5889fd0ea8 100644 --- a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/super-statement/expected.js +++ b/packages/babel-plugin-transform-class-properties/test/fixtures/loose/super-statement/expected.js @@ -6,11 +6,7 @@ var Foo = function (_Bar) { babelHelpers.classCallCheck(this, Foo); _this = babelHelpers.possibleConstructorReturn(this, (Foo.__proto__ || Object.getPrototypeOf(Foo)).call(this)); - Object.defineProperty(_this, "bar", { - enumerable: true, - writable: true, - value: "foo" - }); + _this.bar = "foo"; return _this; } diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/regression/T7364/options.json b/packages/babel-plugin-transform-class-properties/test/fixtures/regression/T7364/options.json index f6afa6e24c..ca85e8c38d 100644 --- a/packages/babel-plugin-transform-class-properties/test/fixtures/regression/T7364/options.json +++ b/packages/babel-plugin-transform-class-properties/test/fixtures/regression/T7364/options.json @@ -2,6 +2,6 @@ "plugins": [ "external-helpers", "transform-async-to-generator", - "transform-class-properties" + ["transform-class-properties", {"loose": true}] ] } diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/regression/options.json b/packages/babel-plugin-transform-class-properties/test/fixtures/regression/options.json index 1e03c15d4c..79fb997f2d 100644 --- a/packages/babel-plugin-transform-class-properties/test/fixtures/regression/options.json +++ b/packages/babel-plugin-transform-class-properties/test/fixtures/regression/options.json @@ -1,3 +1,3 @@ { - "plugins": ["external-helpers", "transform-class-properties", "transform-es2015-classes", "transform-es2015-block-scoping", "syntax-class-properties"] + "plugins": ["external-helpers", ["transform-class-properties", {"loose": true}], "transform-es2015-classes", "transform-es2015-block-scoping", "syntax-class-properties"] } diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/foobar/options.json b/packages/babel-plugin-transform-class-properties/test/fixtures/spec/foobar/options.json deleted file mode 100644 index a9cbc232a3..0000000000 --- a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/foobar/options.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "plugins": ["external-helpers", ["transform-class-properties", { "spec": true }]], - "presets": ["stage-0", "es2015"] -} diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/instance/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/spec/instance/expected.js deleted file mode 100644 index 912039e900..0000000000 --- a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/instance/expected.js +++ /dev/null @@ -1,8 +0,0 @@ -var Foo = function Foo() { - babelHelpers.classCallCheck(this, Foo); - Object.defineProperty(this, "bar", { - enumerable: true, - writable: true, - value: "foo" - }); -}; diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/options.json b/packages/babel-plugin-transform-class-properties/test/fixtures/spec/options.json deleted file mode 100644 index 31ab836c1e..0000000000 --- a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "plugins": ["external-helpers", ["transform-class-properties", { "spec": true }], "transform-es2015-classes", "transform-es2015-block-scoping", "syntax-class-properties"] -} diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/static-undefined/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/spec/static-undefined/expected.js deleted file mode 100644 index cbdc0a11b6..0000000000 --- a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/static-undefined/expected.js +++ /dev/null @@ -1,9 +0,0 @@ -var Foo = function Foo() { - babelHelpers.classCallCheck(this, Foo); -}; - -Object.defineProperty(Foo, "bar", { - enumerable: true, - writable: true, - value: undefined -}); diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/static/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/spec/static/expected.js deleted file mode 100644 index 78f546364a..0000000000 --- a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/static/expected.js +++ /dev/null @@ -1,9 +0,0 @@ -var Foo = function Foo() { - babelHelpers.classCallCheck(this, Foo); -}; - -Object.defineProperty(Foo, "bar", { - enumerable: true, - writable: true, - value: "foo" -}); diff --git a/packages/babel-plugin-transform-decorators/test/fixtures/options.json b/packages/babel-plugin-transform-decorators/test/fixtures/options.json index f2aac002ac..fa8cd344f9 100644 --- a/packages/babel-plugin-transform-decorators/test/fixtures/options.json +++ b/packages/babel-plugin-transform-decorators/test/fixtures/options.json @@ -1,4 +1,4 @@ { "presets": ["es2015"], - "plugins": ["transform-decorators", "transform-class-properties"] + "plugins": ["transform-decorators", ["transform-class-properties", {"loose": true}]] } diff --git a/packages/babel-plugin-transform-es2015-parameters/test/fixtures/parameters/rest-arrow-functions/options.json b/packages/babel-plugin-transform-es2015-parameters/test/fixtures/parameters/rest-arrow-functions/options.json new file mode 100644 index 0000000000..7da7d68771 --- /dev/null +++ b/packages/babel-plugin-transform-es2015-parameters/test/fixtures/parameters/rest-arrow-functions/options.json @@ -0,0 +1,3 @@ +{ + "plugins": [["transform-class-properties", {"loose": true}], "external-helpers", "syntax-flow", "transform-es2015-parameters", "transform-es2015-block-scoping", "transform-es2015-spread", "transform-es2015-classes", "transform-es2015-destructuring", "transform-es2015-arrow-functions", "syntax-async-functions", "transform-es2015-for-of"] +} \ No newline at end of file diff --git a/packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/class-prop-values-3/expected.js b/packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/class-prop-values-3/expected.js index 878b228d63..5a7787af06 100644 --- a/packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/class-prop-values-3/expected.js +++ b/packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/class-prop-values-3/expected.js @@ -2,6 +2,7 @@ class X { constructor() { this.a = 2; this.b = '3'; + this.c = void 0; } } diff --git a/packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/class-prop-values-3/options.json b/packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/class-prop-values-3/options.json index 4f6232c07f..b0fd70dc60 100644 --- a/packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/class-prop-values-3/options.json +++ b/packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/class-prop-values-3/options.json @@ -1,6 +1,6 @@ { "plugins": [ "transform-flow-comments", - "transform-class-properties" + ["transform-class-properties", {"loose": true}] ] } diff --git a/packages/babel-plugin-transform-new-target/test/fixtures/general/class-properties/options.json b/packages/babel-plugin-transform-new-target/test/fixtures/general/class-properties/options.json index 97c1f22203..4e0c8d47e4 100644 --- a/packages/babel-plugin-transform-new-target/test/fixtures/general/class-properties/options.json +++ b/packages/babel-plugin-transform-new-target/test/fixtures/general/class-properties/options.json @@ -1,3 +1,3 @@ { - "plugins": ["transform-new-target", "transform-es2015-arrow-functions", "transform-class-properties"] + "plugins": ["transform-new-target", "transform-es2015-arrow-functions", ["transform-class-properties", {"loose": true}]] } diff --git a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/class-assign-unreferenced-param-deopt/options.json b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/class-assign-unreferenced-param-deopt/options.json index a90fd49ed0..cf607b612e 100644 --- a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/class-assign-unreferenced-param-deopt/options.json +++ b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/class-assign-unreferenced-param-deopt/options.json @@ -1,3 +1,3 @@ { - "plugins": ["transform-class-properties", "transform-react-constant-elements", "syntax-jsx"] + "plugins": [["transform-class-properties", {"loose": true}], "transform-react-constant-elements", "syntax-jsx"] } diff --git a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/member-expression-this/options.json b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/member-expression-this/options.json index d4789bbda3..6c261d2f56 100644 --- a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/member-expression-this/options.json +++ b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/member-expression-this/options.json @@ -1,3 +1,3 @@ { - "plugins": ["syntax-jsx", "transform-react-constant-elements", "transform-class-properties"] + "plugins": ["syntax-jsx", "transform-react-constant-elements", ["transform-class-properties", {"loose": true}]] } diff --git a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/member-expression/options.json b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/member-expression/options.json index d4789bbda3..6c261d2f56 100644 --- a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/member-expression/options.json +++ b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/member-expression/options.json @@ -1,3 +1,3 @@ { - "plugins": ["syntax-jsx", "transform-react-constant-elements", "transform-class-properties"] + "plugins": ["syntax-jsx", "transform-react-constant-elements", ["transform-class-properties", {"loose": true}]] } diff --git a/packages/babel-preset-stage-2/src/index.js b/packages/babel-preset-stage-2/src/index.js index 3b6269289e..6bab2fdb3b 100644 --- a/packages/babel-preset-stage-2/src/index.js +++ b/packages/babel-preset-stage-2/src/index.js @@ -1,16 +1,11 @@ import presetStage3 from "babel-preset-stage-3"; -import transformClassProperties from "babel-plugin-transform-class-properties"; import transformFunctionSent from "babel-plugin-transform-function-sent"; import transformNumericSeparator from "babel-plugin-transform-numeric-separator"; export default function() { return { presets: [presetStage3], - plugins: [ - transformClassProperties, - transformFunctionSent, - transformNumericSeparator, - ], + plugins: [transformFunctionSent, transformNumericSeparator], }; } diff --git a/packages/babel-preset-stage-3/package.json b/packages/babel-preset-stage-3/package.json index 9a3053f891..7d1982b4ea 100644 --- a/packages/babel-preset-stage-3/package.json +++ b/packages/babel-preset-stage-3/package.json @@ -10,6 +10,7 @@ "dependencies": { "babel-plugin-syntax-dynamic-import": "7.0.0-alpha.19", "babel-plugin-transform-async-generator-functions": "7.0.0-alpha.19", + "babel-plugin-transform-class-properties": "7.0.0-alpha.19", "babel-plugin-transform-object-rest-spread": "7.0.0-alpha.19", "babel-plugin-transform-optional-catch-binding": "7.0.0-alpha.19", "babel-plugin-transform-unicode-property-regex": "^2.0.2" diff --git a/packages/babel-preset-stage-3/src/index.js b/packages/babel-preset-stage-3/src/index.js index d9546d9c00..90ae34bb42 100644 --- a/packages/babel-preset-stage-3/src/index.js +++ b/packages/babel-preset-stage-3/src/index.js @@ -1,5 +1,6 @@ import syntaxDynamicImport from "babel-plugin-syntax-dynamic-import"; import transformAsyncGeneratorFunctions from "babel-plugin-transform-async-generator-functions"; +import transformClassProperties from "babel-plugin-transform-class-properties"; import transformObjectRestSpread from "babel-plugin-transform-object-rest-spread"; import transformOptionalCatchBinding from "babel-plugin-transform-optional-catch-binding"; import transformUnicodePropertyRegex from "babel-plugin-transform-unicode-property-regex"; @@ -9,6 +10,7 @@ export default function() { plugins: [ syntaxDynamicImport, transformAsyncGeneratorFunctions, + transformClassProperties, transformObjectRestSpread, transformOptionalCatchBinding, transformUnicodePropertyRegex,