diff --git a/packages/babel-core/test/fixtures/transformation/misc/regression-1155/options.json b/packages/babel-core/test/fixtures/transformation/misc/regression-1155/options.json index cf0501f1cfba..d650f3fb41ba 100644 --- a/packages/babel-core/test/fixtures/transformation/misc/regression-1155/options.json +++ b/packages/babel-core/test/fixtures/transformation/misc/regression-1155/options.json @@ -1,7 +1,7 @@ { "plugins": [ "transform-classes", - "external-helpers", + ["external-helpers", { "helperVersion": "7.100.0" }], "transform-block-scoping" ] } diff --git a/packages/babel-core/test/fixtures/transformation/misc/regression-1155/output.js b/packages/babel-core/test/fixtures/transformation/misc/regression-1155/output.js index 78220af85dbe..891ad4525886 100644 --- a/packages/babel-core/test/fixtures/transformation/misc/regression-1155/output.js +++ b/packages/babel-core/test/fixtures/transformation/misc/regression-1155/output.js @@ -5,6 +5,8 @@ function (_Bar) { babelHelpers.inherits(Foo, _Bar); + var _super = babelHelpers.createSuper(Foo); + function Foo(options) { babelHelpers.classCallCheck(this, Foo); var parentOptions = {}; @@ -13,7 +15,7 @@ function (_Bar) { this; }; - return babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Foo).call(this, parentOptions)); + return _super.call(this, parentOptions); } return Foo; diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/nested-class/options.json b/packages/babel-plugin-proposal-class-properties/test/fixtures/nested-class/options.json index 0326c24fae36..c67f29027e57 100644 --- a/packages/babel-plugin-proposal-class-properties/test/fixtures/nested-class/options.json +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/nested-class/options.json @@ -1,6 +1,6 @@ { "plugins": [ - "external-helpers", + ["external-helpers", { "helperVersion": "7.100.0" }], "proposal-class-properties", "transform-classes" ] diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/nested-class/super-call-in-key/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/nested-class/super-call-in-key/output.js index 117802306abc..a2b18a0c7429 100644 --- a/packages/babel-plugin-proposal-class-properties/test/fixtures/nested-class/super-call-in-key/output.js +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/nested-class/super-call-in-key/output.js @@ -15,13 +15,15 @@ let Outer = function (_Hello) { babelHelpers.inherits(Outer, _Hello); + var _super = babelHelpers.createSuper(Outer); + function Outer() { let _this2; var _this; babelHelpers.classCallCheck(this, Outer); - _this2 = _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Outer).call(this)); + _this2 = _this = _super.call(this); let Inner = function Inner() { babelHelpers.classCallCheck(this, Inner); diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/nested-class/super-property-in-key/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/nested-class/super-property-in-key/output.js index ba9e8dd36f5e..089402158721 100644 --- a/packages/babel-plugin-proposal-class-properties/test/fixtures/nested-class/super-property-in-key/output.js +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/nested-class/super-property-in-key/output.js @@ -21,13 +21,15 @@ let Outer = function (_Hello) { babelHelpers.inherits(Outer, _Hello); + var _super = babelHelpers.createSuper(Outer); + function Outer() { let _babelHelpers$get$cal; var _this; babelHelpers.classCallCheck(this, Outer); - _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Outer).call(this)); + _this = _super.call(this); _babelHelpers$get$cal = babelHelpers.get(babelHelpers.getPrototypeOf(Outer.prototype), "toString", babelHelpers.assertThisInitialized(_this)).call(babelHelpers.assertThisInitialized(_this)); let Inner = function Inner() { diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/derived-multiple-supers/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/derived-multiple-supers/output.js index c9e24a3826e3..72299e5d154f 100644 --- a/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/derived-multiple-supers/output.js +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/derived-multiple-supers/output.js @@ -5,19 +5,21 @@ function (_Bar) { babelHelpers.inherits(Foo, _Bar); + var _super = babelHelpers.createSuper(Foo); + function Foo() { var _this; babelHelpers.classCallCheck(this, Foo); if (condition) { - _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Foo).call(this)); + _this = _super.call(this); Object.defineProperty(babelHelpers.assertThisInitialized(_this), _bar, { writable: true, value: "foo" }); } else { - _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Foo).call(this)); + _this = _super.call(this); Object.defineProperty(babelHelpers.assertThisInitialized(_this), _bar, { writable: true, value: "foo" diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/derived/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/derived/output.js index b008861733c2..3e9c9a95a092 100644 --- a/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/derived/output.js +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/derived/output.js @@ -17,11 +17,13 @@ function (_Foo) { babelHelpers.inherits(Bar, _Foo); + var _super = babelHelpers.createSuper(Bar); + function Bar(...args) { var _this; babelHelpers.classCallCheck(this, Bar); - _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Bar).call(this, ...args)); + _this = _super.call(this, ...args); Object.defineProperty(babelHelpers.assertThisInitialized(_this), _prop2, { writable: true, value: "bar" diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/foobar/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/foobar/output.js index c28687635b83..ed6d613399cd 100644 --- a/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/foobar/output.js +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/foobar/output.js @@ -5,11 +5,13 @@ function (_Parent) { babelHelpers.inherits(Child, _Parent); + var _super = babelHelpers.createSuper(Child); + function Child() { var _this; babelHelpers.classCallCheck(this, Child); - _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Child).call(this)); + _this = _super.call(this); Object.defineProperty(babelHelpers.assertThisInitialized(_this), _scopedFunctionWithThis, { writable: true, value: function value() { diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/options.json b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/options.json index 5e00622446a2..d0b48e090623 100644 --- a/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/options.json +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/options.json @@ -1,11 +1,6 @@ { "plugins": [ - [ - "external-helpers", - { - "helperVersion": "7.0.2" - } - ], + ["external-helpers", { "helperVersion": "7.100.0" }], ["proposal-class-properties", { "loose": true }], "transform-classes", "transform-block-scoping", diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/private-in-derived/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/private-in-derived/output.js index 5cdb57084a35..679c365f3ab2 100644 --- a/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/private-in-derived/output.js +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/private-in-derived/output.js @@ -12,9 +12,11 @@ var Outer = function Outer() { function (_babelHelpers$classPr) { babelHelpers.inherits(Test, _babelHelpers$classPr); + var _super = babelHelpers.createSuper(Test); + function Test() { babelHelpers.classCallCheck(this, Test); - return babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Test).apply(this, arguments)); + return _super.apply(this, arguments); } return Test; diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/super-expression/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/super-expression/output.js index 70cd36e5258a..2a060b62d628 100644 --- a/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/super-expression/output.js +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/super-expression/output.js @@ -5,11 +5,13 @@ function (_Bar) { babelHelpers.inherits(Foo, _Bar); + var _super = babelHelpers.createSuper(Foo); + function Foo() { var _temp, _this; babelHelpers.classCallCheck(this, Foo); - foo((_temp = _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Foo).call(this)), Object.defineProperty(babelHelpers.assertThisInitialized(_this), _bar, { + foo((_temp = _this = _super.call(this), Object.defineProperty(babelHelpers.assertThisInitialized(_this), _bar, { writable: true, value: "foo" }), _temp)); diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/super-statement/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/super-statement/output.js index c0f57c4a3319..443dcb94baef 100644 --- a/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/super-statement/output.js +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/super-statement/output.js @@ -5,11 +5,13 @@ function (_Bar) { babelHelpers.inherits(Foo, _Bar); + var _super = babelHelpers.createSuper(Foo); + function Foo() { var _this; babelHelpers.classCallCheck(this, Foo); - _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Foo).call(this)); + _this = _super.call(this); Object.defineProperty(babelHelpers.assertThisInitialized(_this), _bar, { writable: true, value: "foo" diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private/derived-multiple-supers/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/derived-multiple-supers/output.js index e69db438db4e..0bc4dd86d632 100644 --- a/packages/babel-plugin-proposal-class-properties/test/fixtures/private/derived-multiple-supers/output.js +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/derived-multiple-supers/output.js @@ -5,20 +5,22 @@ function (_Bar) { babelHelpers.inherits(Foo, _Bar); + var _super = babelHelpers.createSuper(Foo); + function Foo() { var _this; babelHelpers.classCallCheck(this, Foo); if (condition) { - _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Foo).call(this)); + _this = _super.call(this); _bar.set(babelHelpers.assertThisInitialized(_this), { writable: true, value: "foo" }); } else { - _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Foo).call(this)); + _this = _super.call(this); _bar.set(babelHelpers.assertThisInitialized(_this), { writable: true, diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private/derived/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/derived/output.js index e963676ac346..cca07af73ca9 100644 --- a/packages/babel-plugin-proposal-class-properties/test/fixtures/private/derived/output.js +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/derived/output.js @@ -18,11 +18,13 @@ function (_Foo) { babelHelpers.inherits(Bar, _Foo); + var _super = babelHelpers.createSuper(Bar); + function Bar(...args) { var _this; babelHelpers.classCallCheck(this, Bar); - _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Bar).call(this, ...args)); + _this = _super.call(this, ...args); _prop2.set(babelHelpers.assertThisInitialized(_this), { writable: true, diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private/foobar/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/foobar/output.js index 75191222819f..391e0bb7f990 100644 --- a/packages/babel-plugin-proposal-class-properties/test/fixtures/private/foobar/output.js +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/foobar/output.js @@ -5,11 +5,13 @@ function (_Parent) { babelHelpers.inherits(Child, _Parent); + var _super = babelHelpers.createSuper(Child); + function Child() { var _this; babelHelpers.classCallCheck(this, Child); - _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Child).call(this)); + _this = _super.call(this); _scopedFunctionWithThis.set(babelHelpers.assertThisInitialized(_this), { writable: true, diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private/options.json b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/options.json index 5e2180d412eb..1b96399c594a 100644 --- a/packages/babel-plugin-proposal-class-properties/test/fixtures/private/options.json +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/options.json @@ -1,11 +1,6 @@ { "plugins": [ - [ - "external-helpers", - { - "helperVersion": "7.4.4" - } - ], + ["external-helpers", { "helperVersion": "7.100.0" }], "proposal-class-properties", "transform-classes", "transform-block-scoping", diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private/private-in-derived/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/private-in-derived/output.js index 0ca02451bd88..6b6d6c872dae 100644 --- a/packages/babel-plugin-proposal-class-properties/test/fixtures/private/private-in-derived/output.js +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/private-in-derived/output.js @@ -13,9 +13,11 @@ var Outer = function Outer() { function (_babelHelpers$classPr) { babelHelpers.inherits(Test, _babelHelpers$classPr); + var _super = babelHelpers.createSuper(Test); + function Test() { babelHelpers.classCallCheck(this, Test); - return babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Test).apply(this, arguments)); + return _super.apply(this, arguments); } return Test; diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private/super-call/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/super-call/output.js index 460fc4c6bea8..88e8e4882ce3 100644 --- a/packages/babel-plugin-proposal-class-properties/test/fixtures/private/super-call/output.js +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/super-call/output.js @@ -23,11 +23,13 @@ function (_A) { babelHelpers.inherits(B, _A); + var _super = babelHelpers.createSuper(B); + function B(...args) { var _this; babelHelpers.classCallCheck(this, B); - _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(B).call(this, ...args)); + _this = _super.call(this, ...args); _foo.set(babelHelpers.assertThisInitialized(_this), { writable: true, diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private/super-expression/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/super-expression/output.js index f4bce1d75894..4424456120e6 100644 --- a/packages/babel-plugin-proposal-class-properties/test/fixtures/private/super-expression/output.js +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/super-expression/output.js @@ -5,11 +5,13 @@ function (_Bar) { babelHelpers.inherits(Foo, _Bar); + var _super = babelHelpers.createSuper(Foo); + function Foo() { var _temp, _this; babelHelpers.classCallCheck(this, Foo); - foo((_temp = _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Foo).call(this)), _bar.set(babelHelpers.assertThisInitialized(_this), { + foo((_temp = _this = _super.call(this), _bar.set(babelHelpers.assertThisInitialized(_this), { writable: true, value: "foo" }), _temp)); diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private/super-statement/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/super-statement/output.js index df484a2a1c7a..273c7a2a5e6f 100644 --- a/packages/babel-plugin-proposal-class-properties/test/fixtures/private/super-statement/output.js +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/super-statement/output.js @@ -5,11 +5,13 @@ function (_Bar) { babelHelpers.inherits(Foo, _Bar); + var _super = babelHelpers.createSuper(Foo); + function Foo() { var _this; babelHelpers.classCallCheck(this, Foo); - _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Foo).call(this)); + _this = _super.call(this); _bar.set(babelHelpers.assertThisInitialized(_this), { writable: true, diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/public-loose/derived/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/public-loose/derived/output.js index 81ae1b19707e..f9dd3d807359 100644 --- a/packages/babel-plugin-proposal-class-properties/test/fixtures/public-loose/derived/output.js +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/public-loose/derived/output.js @@ -5,11 +5,13 @@ function (_Bar) { babelHelpers.inherits(Foo, _Bar); + var _super = babelHelpers.createSuper(Foo); + function Foo(...args) { var _this; babelHelpers.classCallCheck(this, Foo); - _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Foo).call(this, ...args)); + _this = _super.call(this, ...args); _this.bar = "foo"; return _this; } diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/public-loose/foobar/options.json b/packages/babel-plugin-proposal-class-properties/test/fixtures/public-loose/foobar/options.json index f43ead744a23..2abcedf61cd4 100644 --- a/packages/babel-plugin-proposal-class-properties/test/fixtures/public-loose/foobar/options.json +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/public-loose/foobar/options.json @@ -1,6 +1,6 @@ { "plugins": [ - "external-helpers", + ["external-helpers", { "helperVersion": "7.100.0" }], ["proposal-class-properties", { "loose": true }] ], "presets": ["env"] diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/public-loose/foobar/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/public-loose/foobar/output.js index 3f43d7eb0f66..998085f0d17c 100644 --- a/packages/babel-plugin-proposal-class-properties/test/fixtures/public-loose/foobar/output.js +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/public-loose/foobar/output.js @@ -5,11 +5,13 @@ function (_Parent) { babelHelpers.inherits(Child, _Parent); + var _super = babelHelpers.createSuper(Child); + function Child() { var _this; babelHelpers.classCallCheck(this, Child); - _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Child).call(this)); + _this = _super.call(this); _this.scopedFunctionWithThis = function () { _this.name = {}; diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/public-loose/options.json b/packages/babel-plugin-proposal-class-properties/test/fixtures/public-loose/options.json index 524cdc31421b..d0b48e090623 100644 --- a/packages/babel-plugin-proposal-class-properties/test/fixtures/public-loose/options.json +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/public-loose/options.json @@ -1,6 +1,6 @@ { "plugins": [ - "external-helpers", + ["external-helpers", { "helperVersion": "7.100.0" }], ["proposal-class-properties", { "loose": true }], "transform-classes", "transform-block-scoping", diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/public-loose/regression-T6719/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/public-loose/regression-T6719/output.js index f8aebbe0260b..3c0b8f97a4fd 100644 --- a/packages/babel-plugin-proposal-class-properties/test/fixtures/public-loose/regression-T6719/output.js +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/public-loose/regression-T6719/output.js @@ -8,9 +8,11 @@ function withContext(ComposedComponent) { babelHelpers.inherits(WithContext, _Component); + var _super = babelHelpers.createSuper(WithContext); + function WithContext() { babelHelpers.classCallCheck(this, WithContext); - return babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(WithContext).apply(this, arguments)); + return _super.apply(this, arguments); } return WithContext; diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/public-loose/static-super/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/public-loose/static-super/output.js index d41e2ff85106..4db00bc0a590 100644 --- a/packages/babel-plugin-proposal-class-properties/test/fixtures/public-loose/static-super/output.js +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/public-loose/static-super/output.js @@ -13,9 +13,11 @@ function (_A) { babelHelpers.inherits(B, _A); + var _super = babelHelpers.createSuper(B); + function B() { babelHelpers.classCallCheck(this, B); - return babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(B).apply(this, arguments)); + return _super.apply(this, arguments); } return B; diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/public-loose/super-call/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/public-loose/super-call/output.js index 03819a301505..285af11cd2dc 100644 --- a/packages/babel-plugin-proposal-class-properties/test/fixtures/public-loose/super-call/output.js +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/public-loose/super-call/output.js @@ -23,11 +23,13 @@ function (_A) { babelHelpers.inherits(B, _A); + var _super = babelHelpers.createSuper(B); + function B(...args) { var _this; babelHelpers.classCallCheck(this, B); - _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(B).call(this, ...args)); + _this = _super.call(this, ...args); _this.foo = babelHelpers.get(babelHelpers.getPrototypeOf(B.prototype), "foo", babelHelpers.assertThisInitialized(_this)).call(babelHelpers.assertThisInitialized(_this)); return _this; } diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/public-loose/super-expression/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/public-loose/super-expression/output.js index d682e4a6ed6c..9beb0068c4fe 100644 --- a/packages/babel-plugin-proposal-class-properties/test/fixtures/public-loose/super-expression/output.js +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/public-loose/super-expression/output.js @@ -5,11 +5,13 @@ function (_Bar) { babelHelpers.inherits(Foo, _Bar); + var _super = babelHelpers.createSuper(Foo); + function Foo() { var _temp, _this; babelHelpers.classCallCheck(this, Foo); - foo((_temp = _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Foo).call(this)), _this.bar = "foo", _temp)); + foo((_temp = _this = _super.call(this), _this.bar = "foo", _temp)); return _this; } diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/public-loose/super-statement/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/public-loose/super-statement/output.js index c63a614d0236..8e9fccf3fcc8 100644 --- a/packages/babel-plugin-proposal-class-properties/test/fixtures/public-loose/super-statement/output.js +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/public-loose/super-statement/output.js @@ -5,11 +5,13 @@ function (_Bar) { babelHelpers.inherits(Foo, _Bar); + var _super = babelHelpers.createSuper(Foo); + function Foo() { var _this; babelHelpers.classCallCheck(this, Foo); - _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Foo).call(this)); + _this = _super.call(this); _this.bar = "foo"; return _this; } diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/public/derived-multiple-supers/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/public/derived-multiple-supers/output.js index cb9e03767bc4..04c38bf96568 100644 --- a/packages/babel-plugin-proposal-class-properties/test/fixtures/public/derived-multiple-supers/output.js +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/public/derived-multiple-supers/output.js @@ -5,16 +5,18 @@ function (_Bar) { babelHelpers.inherits(Foo, _Bar); + var _super = babelHelpers.createSuper(Foo); + function Foo() { var _this; babelHelpers.classCallCheck(this, Foo); if (condition) { - _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Foo).call(this)); + _this = _super.call(this); babelHelpers.defineProperty(babelHelpers.assertThisInitialized(_this), "bar", "foo"); } else { - _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Foo).call(this)); + _this = _super.call(this); babelHelpers.defineProperty(babelHelpers.assertThisInitialized(_this), "bar", "foo"); } diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/public/derived/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/public/derived/output.js index ebfcf1faa2b7..368df0340428 100644 --- a/packages/babel-plugin-proposal-class-properties/test/fixtures/public/derived/output.js +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/public/derived/output.js @@ -5,11 +5,13 @@ function (_Bar) { babelHelpers.inherits(Foo, _Bar); + var _super = babelHelpers.createSuper(Foo); + function Foo(...args) { var _this; babelHelpers.classCallCheck(this, Foo); - _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Foo).call(this, ...args)); + _this = _super.call(this, ...args); babelHelpers.defineProperty(babelHelpers.assertThisInitialized(_this), "bar", "foo"); return _this; } diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/public/foobar/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/public/foobar/output.js index 3e89c9938bf8..b6d3ed9ca39d 100644 --- a/packages/babel-plugin-proposal-class-properties/test/fixtures/public/foobar/output.js +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/public/foobar/output.js @@ -1,3 +1,7 @@ +function _createSuper(Derived) { return function () { var Super = babelHelpers.getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = babelHelpers.getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return babelHelpers.possibleConstructorReturn(this, result); }; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + var Child = /*#__PURE__*/ function (_Parent) { @@ -5,11 +9,13 @@ function (_Parent) { babelHelpers.inherits(Child, _Parent); + var _super = _createSuper(Child); + function Child() { var _this; babelHelpers.classCallCheck(this, Child); - _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Child).call(this)); + _this = _super.call(this); babelHelpers.defineProperty(babelHelpers.assertThisInitialized(_this), "scopedFunctionWithThis", function () { _this.name = {}; }); diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/public/options.json b/packages/babel-plugin-proposal-class-properties/test/fixtures/public/options.json index d19c255940b8..1b96399c594a 100644 --- a/packages/babel-plugin-proposal-class-properties/test/fixtures/public/options.json +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/public/options.json @@ -1,6 +1,6 @@ { "plugins": [ - "external-helpers", + ["external-helpers", { "helperVersion": "7.100.0" }], "proposal-class-properties", "transform-classes", "transform-block-scoping", diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/public/regression-T6719/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/public/regression-T6719/output.js index 4e1760844081..030e75a2c131 100644 --- a/packages/babel-plugin-proposal-class-properties/test/fixtures/public/regression-T6719/output.js +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/public/regression-T6719/output.js @@ -8,9 +8,11 @@ function withContext(ComposedComponent) { babelHelpers.inherits(WithContext, _Component); + var _super = babelHelpers.createSuper(WithContext); + function WithContext() { babelHelpers.classCallCheck(this, WithContext); - return babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(WithContext).apply(this, arguments)); + return _super.apply(this, arguments); } return WithContext; diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/public/static-super/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/public/static-super/output.js index bb05940c9083..4e5c7e136052 100644 --- a/packages/babel-plugin-proposal-class-properties/test/fixtures/public/static-super/output.js +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/public/static-super/output.js @@ -13,9 +13,11 @@ function (_A) { babelHelpers.inherits(B, _A); + var _super = babelHelpers.createSuper(B); + function B() { babelHelpers.classCallCheck(this, B); - return babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(B).apply(this, arguments)); + return _super.apply(this, arguments); } return B; diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/public/super-call/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/public/super-call/output.js index 08bb0b4d9bbc..48a37dc7f530 100644 --- a/packages/babel-plugin-proposal-class-properties/test/fixtures/public/super-call/output.js +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/public/super-call/output.js @@ -23,11 +23,13 @@ function (_A) { babelHelpers.inherits(B, _A); + var _super = babelHelpers.createSuper(B); + function B(...args) { var _this; babelHelpers.classCallCheck(this, B); - _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(B).call(this, ...args)); + _this = _super.call(this, ...args); babelHelpers.defineProperty(babelHelpers.assertThisInitialized(_this), "foo", babelHelpers.get(babelHelpers.getPrototypeOf(B.prototype), "foo", babelHelpers.assertThisInitialized(_this)).call(babelHelpers.assertThisInitialized(_this))); return _this; } diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/public/super-expression/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/public/super-expression/output.js index be7f0ef6822f..d8a3b7c4d811 100644 --- a/packages/babel-plugin-proposal-class-properties/test/fixtures/public/super-expression/output.js +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/public/super-expression/output.js @@ -5,11 +5,13 @@ function (_Bar) { babelHelpers.inherits(Foo, _Bar); + var _super = babelHelpers.createSuper(Foo); + function Foo() { var _temp, _this; babelHelpers.classCallCheck(this, Foo); - foo((_temp = _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Foo).call(this)), babelHelpers.defineProperty(babelHelpers.assertThisInitialized(_this), "bar", "foo"), _temp)); + foo((_temp = _this = _super.call(this), babelHelpers.defineProperty(babelHelpers.assertThisInitialized(_this), "bar", "foo"), _temp)); return _this; } diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/public/super-statement/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/public/super-statement/output.js index ef101c0bee33..4660ca224d70 100644 --- a/packages/babel-plugin-proposal-class-properties/test/fixtures/public/super-statement/output.js +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/public/super-statement/output.js @@ -5,11 +5,13 @@ function (_Bar) { babelHelpers.inherits(Foo, _Bar); + var _super = babelHelpers.createSuper(Foo); + function Foo() { var _this; babelHelpers.classCallCheck(this, Foo); - _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Foo).call(this)); + _this = _super.call(this); babelHelpers.defineProperty(babelHelpers.assertThisInitialized(_this), "bar", "foo"); return _this; } diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/regression/6154/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/regression/6154/output.js index 6c8d4cd1a2f5..9bd89befe2b4 100644 --- a/packages/babel-plugin-proposal-class-properties/test/fixtures/regression/6154/output.js +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/regression/6154/output.js @@ -1,9 +1,13 @@ function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } @@ -28,9 +32,9 @@ var Test = function Test() { function (_Test) { _inherits(Other, _Test); - function Other() { - var _getPrototypeOf2; + var _super = _createSuper(Other); + function Other() { var _this; _classCallCheck(this, Other); @@ -39,7 +43,7 @@ var Test = function Test() { args[_key] = arguments[_key]; } - _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(Other)).call.apply(_getPrototypeOf2, [this].concat(args))); + _this = _super.call.apply(_super, [this].concat(args)); _defineProperty(_assertThisInitialized(_this), "a", function () { return _get(_getPrototypeOf(Other.prototype), "test", _assertThisInitialized(_this)); diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/regression/T6719/options.json b/packages/babel-plugin-proposal-class-properties/test/fixtures/regression/T6719/options.json index 524cdc31421b..d0b48e090623 100644 --- a/packages/babel-plugin-proposal-class-properties/test/fixtures/regression/T6719/options.json +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/regression/T6719/options.json @@ -1,6 +1,6 @@ { "plugins": [ - "external-helpers", + ["external-helpers", { "helperVersion": "7.100.0" }], ["proposal-class-properties", { "loose": true }], "transform-classes", "transform-block-scoping", diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/regression/T6719/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/regression/T6719/output.js index f8aebbe0260b..3c0b8f97a4fd 100644 --- a/packages/babel-plugin-proposal-class-properties/test/fixtures/regression/T6719/output.js +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/regression/T6719/output.js @@ -8,9 +8,11 @@ function withContext(ComposedComponent) { babelHelpers.inherits(WithContext, _Component); + var _super = babelHelpers.createSuper(WithContext); + function WithContext() { babelHelpers.classCallCheck(this, WithContext); - return babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(WithContext).apply(this, arguments)); + return _super.apply(this, arguments); } return WithContext; diff --git a/packages/babel-plugin-proposal-decorators/test/fixtures/legacy-regression/7030/output.js b/packages/babel-plugin-proposal-decorators/test/fixtures/legacy-regression/7030/output.js index 3ecd37c2f8d2..6034a65ab113 100644 --- a/packages/babel-plugin-proposal-decorators/test/fixtures/legacy-regression/7030/output.js +++ b/packages/babel-plugin-proposal-decorators/test/fixtures/legacy-regression/7030/output.js @@ -2,10 +2,14 @@ function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterat function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } @@ -32,12 +36,14 @@ function (_B) { _inherits(A, _B); + var _super = _createSuper(A); + function A(timestamp) { var _this; _classCallCheck(this, A); - _this = _possibleConstructorReturn(this, _getPrototypeOf(A).call(this)); + _this = _super.call(this); _this.timestamp = timestamp; _this.moment = moment(timestamp); return _this; diff --git a/packages/babel-plugin-transform-classes/test/fixtures/extend-builtins/loose/output.js b/packages/babel-plugin-transform-classes/test/fixtures/extend-builtins/loose/output.js index e41d1690f68e..06481de3bfbd 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/extend-builtins/loose/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/extend-builtins/loose/output.js @@ -1,10 +1,16 @@ +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } function _wrapNativeSuper(Class) { var _cache = typeof Map === "function" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== "function") { throw new TypeError("Super expression must either be null or a function"); } if (typeof _cache !== "undefined") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); } -function isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } +function _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); } -function _construct(Parent, args, Class) { if (isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); } +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _isNativeFunction(fn) { return Function.toString.call(fn).indexOf("[native code]") !== -1; } @@ -19,6 +25,8 @@ function (_Array) { _inheritsLoose(List, _Array); + var _super = _createSuper(List); + function List() { return _Array.apply(this, arguments) || this; } diff --git a/packages/babel-plugin-transform-classes/test/fixtures/extend-builtins/shadowed/output.js b/packages/babel-plugin-transform-classes/test/fixtures/extend-builtins/shadowed/output.js index dae69708600a..cc908f8aa91c 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/extend-builtins/shadowed/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/extend-builtins/shadowed/output.js @@ -1,4 +1,8 @@ -let Array = function Array() { +function _createSuper(Derived) { return function () { var Super = babelHelpers.getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = babelHelpers.getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return babelHelpers.possibleConstructorReturn(this, result); }; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +let _Array2 = function Array() { "use strict"; babelHelpers.classCallCheck(this, Array); @@ -11,9 +15,11 @@ function (_Array) { babelHelpers.inherits(List, _Array); + var _super = _createSuper(List); + function List() { babelHelpers.classCallCheck(this, List); - return babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(List).apply(this, arguments)); + return _super.apply(this, arguments); } return List; diff --git a/packages/babel-plugin-transform-classes/test/fixtures/extend-builtins/spec/output.js b/packages/babel-plugin-transform-classes/test/fixtures/extend-builtins/spec/output.js index 8128d008f696..dd41cf311f91 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/extend-builtins/spec/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/extend-builtins/spec/output.js @@ -1,5 +1,7 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } @@ -8,9 +10,9 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function" function _wrapNativeSuper(Class) { var _cache = typeof Map === "function" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== "function") { throw new TypeError("Super expression must either be null or a function"); } if (typeof _cache !== "undefined") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); } -function isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } +function _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); } -function _construct(Parent, args, Class) { if (isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); } +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _isNativeFunction(fn) { return Function.toString.call(fn).indexOf("[native code]") !== -1; } @@ -25,10 +27,12 @@ function (_Array) { _inherits(List, _Array); + var _super = _createSuper(List); + function List() { _classCallCheck(this, List); - return _possibleConstructorReturn(this, _getPrototypeOf(List).apply(this, arguments)); + return _super.apply(this, arguments); } return List; diff --git a/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/call-semantics-data-defined-on-parent/output.js b/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/call-semantics-data-defined-on-parent/output.js index ee6d7888aaa6..188b1dd53b90 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/call-semantics-data-defined-on-parent/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/call-semantics-data-defined-on-parent/output.js @@ -1,5 +1,15 @@ "use strict"; +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } let Base = @@ -23,6 +33,8 @@ let Obj = function (_Base) { _inheritsLoose(Obj, _Base); + var _super = _createSuper(Obj); + function Obj() { return _Base.apply(this, arguments) || this; } diff --git a/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/call-semantics-getter-defined-on-parent/output.js b/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/call-semantics-getter-defined-on-parent/output.js index e221a210b240..44ac3ee776a1 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/call-semantics-getter-defined-on-parent/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/call-semantics-getter-defined-on-parent/output.js @@ -1,5 +1,15 @@ "use strict"; +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } @@ -33,6 +43,8 @@ let Obj = function (_Base) { _inheritsLoose(Obj, _Base); + var _super = _createSuper(Obj); + function Obj() { return _Base.apply(this, arguments) || this; } diff --git a/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/call-semantics-not-defined-on-parent/output.js b/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/call-semantics-not-defined-on-parent/output.js index 19a5133e9a66..3e3f2638d960 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/call-semantics-not-defined-on-parent/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/call-semantics-not-defined-on-parent/output.js @@ -1,5 +1,15 @@ "use strict"; +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } let Base = function Base() {}; @@ -9,6 +19,8 @@ let Obj = function (_Base) { _inheritsLoose(Obj, _Base); + var _super = _createSuper(Obj); + function Obj() { return _Base.apply(this, arguments) || this; } diff --git a/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/call-semantics-setter-defined-on-parent/output.js b/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/call-semantics-setter-defined-on-parent/output.js index 002192c52d83..2d8c0a519850 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/call-semantics-setter-defined-on-parent/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/call-semantics-setter-defined-on-parent/output.js @@ -1,5 +1,15 @@ "use strict"; +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } @@ -26,6 +36,8 @@ let Obj = function (_Base) { _inheritsLoose(Obj, _Base); + var _super = _createSuper(Obj); + function Obj() { return _Base.apply(this, arguments) || this; } diff --git a/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/get-semantics-data-defined-on-parent/output.js b/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/get-semantics-data-defined-on-parent/output.js index 9526f8a361db..5c6daf84bcac 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/get-semantics-data-defined-on-parent/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/get-semantics-data-defined-on-parent/output.js @@ -1,5 +1,15 @@ "use strict"; +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } let Base = function Base() {}; @@ -11,6 +21,8 @@ let Obj = function (_Base) { _inheritsLoose(Obj, _Base); + var _super = _createSuper(Obj); + function Obj() { return _Base.apply(this, arguments) || this; } diff --git a/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/get-semantics-getter-defined-on-parent/output.js b/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/get-semantics-getter-defined-on-parent/output.js index 36ab29407fd2..04f6d64e34d2 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/get-semantics-getter-defined-on-parent/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/get-semantics-getter-defined-on-parent/output.js @@ -1,5 +1,15 @@ "use strict"; +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } @@ -29,6 +39,8 @@ let Obj = function (_Base) { _inheritsLoose(Obj, _Base); + var _super = _createSuper(Obj); + function Obj() { return _Base.apply(this, arguments) || this; } diff --git a/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/get-semantics-not-defined-on-parent/output.js b/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/get-semantics-not-defined-on-parent/output.js index 9880bfe11307..3d2c1e519ce8 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/get-semantics-not-defined-on-parent/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/get-semantics-not-defined-on-parent/output.js @@ -1,5 +1,15 @@ "use strict"; +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } let Base = function Base() {}; @@ -9,6 +19,8 @@ let Obj = function (_Base) { _inheritsLoose(Obj, _Base); + var _super = _createSuper(Obj); + function Obj() { return _Base.apply(this, arguments) || this; } diff --git a/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/get-semantics-setter-defined-on-parent/output.js b/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/get-semantics-setter-defined-on-parent/output.js index 4e03f7e9fcfa..31930dd7eda8 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/get-semantics-setter-defined-on-parent/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/get-semantics-setter-defined-on-parent/output.js @@ -1,5 +1,15 @@ "use strict"; +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } @@ -26,6 +36,8 @@ let Obj = function (_Base) { _inheritsLoose(Obj, _Base); + var _super = _createSuper(Obj); + function Obj() { return _Base.apply(this, arguments) || this; } diff --git a/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/memoized-assign/output.js b/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/memoized-assign/output.js index 10536326298b..1945aa91e4ec 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/memoized-assign/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/memoized-assign/output.js @@ -1,5 +1,15 @@ "use strict"; +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } let Base = function Base() {}; @@ -27,6 +37,8 @@ let Obj = function (_Base) { _inheritsLoose(Obj, _Base); + var _super = _createSuper(Obj); + function Obj() { return _Base.apply(this, arguments) || this; } diff --git a/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/memoized-update/output.js b/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/memoized-update/output.js index eaeea288da15..bfa454511862 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/memoized-update/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/memoized-update/output.js @@ -1,5 +1,15 @@ "use strict"; +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } let Base = function Base() {}; @@ -27,6 +37,8 @@ let Obj = function (_Base) { _inheritsLoose(Obj, _Base); + var _super = _createSuper(Obj); + function Obj() { return _Base.apply(this, arguments) || this; } diff --git a/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/set-semantics-data-defined-on-parent/output.js b/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/set-semantics-data-defined-on-parent/output.js index 498198dd54ee..8ec3e86cc72c 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/set-semantics-data-defined-on-parent/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/set-semantics-data-defined-on-parent/output.js @@ -1,5 +1,15 @@ "use strict"; +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } let Base = function Base() {}; @@ -15,6 +25,8 @@ let Obj = function (_Base) { _inheritsLoose(Obj, _Base); + var _super = _createSuper(Obj); + function Obj() { return _Base.apply(this, arguments) || this; } diff --git a/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/set-semantics-getter-defined-on-parent/output.js b/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/set-semantics-getter-defined-on-parent/output.js index 27c87b612321..5a0d42f8825b 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/set-semantics-getter-defined-on-parent/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/set-semantics-getter-defined-on-parent/output.js @@ -1,5 +1,15 @@ "use strict"; +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } @@ -31,6 +41,8 @@ let Obj = function (_Base) { _inheritsLoose(Obj, _Base); + var _super = _createSuper(Obj); + function Obj() { return _Base.apply(this, arguments) || this; } diff --git a/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/set-semantics-not-defined-on-parent-data-on-obj/output.js b/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/set-semantics-not-defined-on-parent-data-on-obj/output.js index 639eba6cc16c..7cf9c72a8d85 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/set-semantics-not-defined-on-parent-data-on-obj/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/set-semantics-not-defined-on-parent-data-on-obj/output.js @@ -1,5 +1,15 @@ "use strict"; +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } let Base = function Base() {}; @@ -9,6 +19,8 @@ let Obj = function (_Base) { _inheritsLoose(Obj, _Base); + var _super = _createSuper(Obj); + function Obj() { return _Base.apply(this, arguments) || this; } diff --git a/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/set-semantics-not-defined-on-parent-getter-on-obj/output.js b/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/set-semantics-not-defined-on-parent-getter-on-obj/output.js index e66fd7e19178..014195308d7a 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/set-semantics-not-defined-on-parent-getter-on-obj/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/set-semantics-not-defined-on-parent-getter-on-obj/output.js @@ -4,6 +4,16 @@ function _defineProperties(target, props) { for (var i = 0; i < props.length; i+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } let Base = function Base() {}; @@ -15,6 +25,8 @@ let Obj = function (_Base) { _inheritsLoose(Obj, _Base); + var _super = _createSuper(Obj); + function Obj() { return _Base.apply(this, arguments) || this; } diff --git a/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/set-semantics-not-defined-on-parent-not-on-obj/output.js b/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/set-semantics-not-defined-on-parent-not-on-obj/output.js index c5cb38d3efee..e90b7b53f213 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/set-semantics-not-defined-on-parent-not-on-obj/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/set-semantics-not-defined-on-parent-not-on-obj/output.js @@ -1,5 +1,15 @@ "use strict"; +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } let Base = function Base() {}; @@ -9,6 +19,8 @@ let Obj = function (_Base) { _inheritsLoose(Obj, _Base); + var _super = _createSuper(Obj); + function Obj() { return _Base.apply(this, arguments) || this; } diff --git a/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/set-semantics-not-defined-on-parent-setter-on-obj/output.js b/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/set-semantics-not-defined-on-parent-setter-on-obj/output.js index 583f064e8679..786ca4bdc382 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/set-semantics-not-defined-on-parent-setter-on-obj/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/set-semantics-not-defined-on-parent-setter-on-obj/output.js @@ -4,6 +4,16 @@ function _defineProperties(target, props) { for (var i = 0; i < props.length; i+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } let Base = function Base() {}; @@ -15,6 +25,8 @@ let Obj = function (_Base) { _inheritsLoose(Obj, _Base); + var _super = _createSuper(Obj); + function Obj() { return _Base.apply(this, arguments) || this; } diff --git a/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/set-semantics-setter-defined-on-parent/output.js b/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/set-semantics-setter-defined-on-parent/output.js index 271a214803b7..2c4624feaf4f 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/set-semantics-setter-defined-on-parent/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/get-set-loose/set-semantics-setter-defined-on-parent/output.js @@ -1,5 +1,15 @@ "use strict"; +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } @@ -28,6 +38,8 @@ let Obj = function (_Base) { _inheritsLoose(Obj, _Base); + var _super = _createSuper(Obj); + function Obj() { return _Base.apply(this, arguments) || this; } diff --git a/packages/babel-plugin-transform-classes/test/fixtures/get-set/call-semantics-data-defined-on-parent/output.js b/packages/babel-plugin-transform-classes/test/fixtures/get-set/call-semantics-data-defined-on-parent/output.js index b6ec2c9d20f3..6add7f935dbc 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/get-set/call-semantics-data-defined-on-parent/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/get-set/call-semantics-data-defined-on-parent/output.js @@ -1,12 +1,16 @@ "use strict"; +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } -function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } - -function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } @@ -44,10 +48,12 @@ let Obj = function (_Base) { _inherits(Obj, _Base); + var _super = _createSuper(Obj); + function Obj() { _classCallCheck(this, Obj); - return _possibleConstructorReturn(this, _getPrototypeOf(Obj).apply(this, arguments)); + return _super.apply(this, arguments); } _createClass(Obj, [{ diff --git a/packages/babel-plugin-transform-classes/test/fixtures/get-set/call-semantics-getter-defined-on-parent/output.js b/packages/babel-plugin-transform-classes/test/fixtures/get-set/call-semantics-getter-defined-on-parent/output.js index 1882922d30d9..a993679b0c05 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/get-set/call-semantics-getter-defined-on-parent/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/get-set/call-semantics-getter-defined-on-parent/output.js @@ -1,12 +1,16 @@ "use strict"; +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } -function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } - -function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } @@ -47,10 +51,12 @@ let Obj = function (_Base) { _inherits(Obj, _Base); + var _super = _createSuper(Obj); + function Obj() { _classCallCheck(this, Obj); - return _possibleConstructorReturn(this, _getPrototypeOf(Obj).apply(this, arguments)); + return _super.apply(this, arguments); } _createClass(Obj, [{ diff --git a/packages/babel-plugin-transform-classes/test/fixtures/get-set/call-semantics-not-defined-on-parent/output.js b/packages/babel-plugin-transform-classes/test/fixtures/get-set/call-semantics-not-defined-on-parent/output.js index ed3a319213b5..714e9398d19f 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/get-set/call-semantics-not-defined-on-parent/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/get-set/call-semantics-not-defined-on-parent/output.js @@ -4,13 +4,17 @@ function _defineProperties(target, props) { for (var i = 0; i < props.length; i+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } -function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } - -function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } @@ -29,10 +33,12 @@ let Obj = function (_Base) { _inherits(Obj, _Base); + var _super = _createSuper(Obj); + function Obj() { _classCallCheck(this, Obj); - return _possibleConstructorReturn(this, _getPrototypeOf(Obj).apply(this, arguments)); + return _super.apply(this, arguments); } _createClass(Obj, [{ diff --git a/packages/babel-plugin-transform-classes/test/fixtures/get-set/call-semantics-setter-defined-on-parent/output.js b/packages/babel-plugin-transform-classes/test/fixtures/get-set/call-semantics-setter-defined-on-parent/output.js index a5e95d1274ef..c5ff3cd658a0 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/get-set/call-semantics-setter-defined-on-parent/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/get-set/call-semantics-setter-defined-on-parent/output.js @@ -1,12 +1,16 @@ "use strict"; +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } -function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } - -function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } @@ -42,10 +46,12 @@ let Obj = function (_Base) { _inherits(Obj, _Base); + var _super = _createSuper(Obj); + function Obj() { _classCallCheck(this, Obj); - return _possibleConstructorReturn(this, _getPrototypeOf(Obj).apply(this, arguments)); + return _super.apply(this, arguments); } _createClass(Obj, [{ diff --git a/packages/babel-plugin-transform-classes/test/fixtures/get-set/get-semantics-data-defined-on-parent/output.js b/packages/babel-plugin-transform-classes/test/fixtures/get-set/get-semantics-data-defined-on-parent/output.js index 5ded4c810e50..bb5e27ba07c7 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/get-set/get-semantics-data-defined-on-parent/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/get-set/get-semantics-data-defined-on-parent/output.js @@ -4,13 +4,17 @@ function _defineProperties(target, props) { for (var i = 0; i < props.length; i+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } -function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } - -function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } @@ -31,10 +35,12 @@ let Obj = function (_Base) { _inherits(Obj, _Base); + var _super = _createSuper(Obj); + function Obj() { _classCallCheck(this, Obj); - return _possibleConstructorReturn(this, _getPrototypeOf(Obj).apply(this, arguments)); + return _super.apply(this, arguments); } _createClass(Obj, [{ diff --git a/packages/babel-plugin-transform-classes/test/fixtures/get-set/get-semantics-getter-defined-on-parent/output.js b/packages/babel-plugin-transform-classes/test/fixtures/get-set/get-semantics-getter-defined-on-parent/output.js index 751f21606609..2c52ac8fa8ba 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/get-set/get-semantics-getter-defined-on-parent/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/get-set/get-semantics-getter-defined-on-parent/output.js @@ -1,12 +1,16 @@ "use strict"; +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } -function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } - -function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } @@ -43,10 +47,12 @@ let Obj = function (_Base) { _inherits(Obj, _Base); + var _super = _createSuper(Obj); + function Obj() { _classCallCheck(this, Obj); - return _possibleConstructorReturn(this, _getPrototypeOf(Obj).apply(this, arguments)); + return _super.apply(this, arguments); } _createClass(Obj, [{ diff --git a/packages/babel-plugin-transform-classes/test/fixtures/get-set/get-semantics-not-defined-on-parent/output.js b/packages/babel-plugin-transform-classes/test/fixtures/get-set/get-semantics-not-defined-on-parent/output.js index 790dc28d590e..7393d5d63e25 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/get-set/get-semantics-not-defined-on-parent/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/get-set/get-semantics-not-defined-on-parent/output.js @@ -4,13 +4,17 @@ function _defineProperties(target, props) { for (var i = 0; i < props.length; i+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } -function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } - -function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } @@ -29,10 +33,12 @@ let Obj = function (_Base) { _inherits(Obj, _Base); + var _super = _createSuper(Obj); + function Obj() { _classCallCheck(this, Obj); - return _possibleConstructorReturn(this, _getPrototypeOf(Obj).apply(this, arguments)); + return _super.apply(this, arguments); } _createClass(Obj, [{ diff --git a/packages/babel-plugin-transform-classes/test/fixtures/get-set/get-semantics-setter-defined-on-parent/output.js b/packages/babel-plugin-transform-classes/test/fixtures/get-set/get-semantics-setter-defined-on-parent/output.js index 3fb37ea4fae0..be5eb0399d72 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/get-set/get-semantics-setter-defined-on-parent/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/get-set/get-semantics-setter-defined-on-parent/output.js @@ -1,12 +1,16 @@ "use strict"; +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } -function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } - -function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } @@ -42,10 +46,12 @@ let Obj = function (_Base) { _inherits(Obj, _Base); + var _super = _createSuper(Obj); + function Obj() { _classCallCheck(this, Obj); - return _possibleConstructorReturn(this, _getPrototypeOf(Obj).apply(this, arguments)); + return _super.apply(this, arguments); } _createClass(Obj, [{ diff --git a/packages/babel-plugin-transform-classes/test/fixtures/get-set/memoized-assign/output.js b/packages/babel-plugin-transform-classes/test/fixtures/get-set/memoized-assign/output.js index 53c5587ab59f..327974489ab4 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/get-set/memoized-assign/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/get-set/memoized-assign/output.js @@ -4,10 +4,6 @@ function _defineProperties(target, props) { for (var i = 0; i < props.length; i+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } -function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - function set(target, property, value, receiver) { if (typeof Reflect !== "undefined" && Reflect.set) { set = Reflect.set; } else { set = function set(target, property, value, receiver) { var base = _superPropBase(target, property); var desc; if (base) { desc = Object.getOwnPropertyDescriptor(base, property); if (desc.set) { desc.set.call(receiver, value); return true; } else if (!desc.writable) { return false; } } desc = Object.getOwnPropertyDescriptor(receiver, property); if (desc) { if (!desc.writable) { return false; } desc.value = value; Object.defineProperty(receiver, property, desc); } else { _defineProperty(receiver, property, value); } return true; }; } return set(target, property, value, receiver); } function _set(target, property, value, receiver, isStrict) { var s = set(target, property, value, receiver || target); if (!s && isStrict) { throw new Error('failed to set property'); } return value; } @@ -18,6 +14,14 @@ function _get(target, property, receiver) { if (typeof Reflect !== "undefined" & function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } @@ -53,10 +57,12 @@ let Obj = function (_Base) { _inherits(Obj, _Base); + var _super = _createSuper(Obj); + function Obj() { _classCallCheck(this, Obj); - return _possibleConstructorReturn(this, _getPrototypeOf(Obj).apply(this, arguments)); + return _super.apply(this, arguments); } _createClass(Obj, [{ diff --git a/packages/babel-plugin-transform-classes/test/fixtures/get-set/memoized-update/output.js b/packages/babel-plugin-transform-classes/test/fixtures/get-set/memoized-update/output.js index 6fbcdfc3f5f6..e328dca153a8 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/get-set/memoized-update/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/get-set/memoized-update/output.js @@ -4,10 +4,6 @@ function _defineProperties(target, props) { for (var i = 0; i < props.length; i+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } -function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - function set(target, property, value, receiver) { if (typeof Reflect !== "undefined" && Reflect.set) { set = Reflect.set; } else { set = function set(target, property, value, receiver) { var base = _superPropBase(target, property); var desc; if (base) { desc = Object.getOwnPropertyDescriptor(base, property); if (desc.set) { desc.set.call(receiver, value); return true; } else if (!desc.writable) { return false; } } desc = Object.getOwnPropertyDescriptor(receiver, property); if (desc) { if (!desc.writable) { return false; } desc.value = value; Object.defineProperty(receiver, property, desc); } else { _defineProperty(receiver, property, value); } return true; }; } return set(target, property, value, receiver); } function _set(target, property, value, receiver, isStrict) { var s = set(target, property, value, receiver || target); if (!s && isStrict) { throw new Error('failed to set property'); } return value; } @@ -18,6 +14,14 @@ function _get(target, property, receiver) { if (typeof Reflect !== "undefined" & function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } @@ -53,10 +57,12 @@ let Obj = function (_Base) { _inherits(Obj, _Base); + var _super = _createSuper(Obj); + function Obj() { _classCallCheck(this, Obj); - return _possibleConstructorReturn(this, _getPrototypeOf(Obj).apply(this, arguments)); + return _super.apply(this, arguments); } _createClass(Obj, [{ diff --git a/packages/babel-plugin-transform-classes/test/fixtures/get-set/set-semantics-data-defined-on-parent/output.js b/packages/babel-plugin-transform-classes/test/fixtures/get-set/set-semantics-data-defined-on-parent/output.js index 7a7af63a98d5..d1c0750f0a25 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/get-set/set-semantics-data-defined-on-parent/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/get-set/set-semantics-data-defined-on-parent/output.js @@ -4,10 +4,6 @@ function _defineProperties(target, props) { for (var i = 0; i < props.length; i+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } -function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - function set(target, property, value, receiver) { if (typeof Reflect !== "undefined" && Reflect.set) { set = Reflect.set; } else { set = function set(target, property, value, receiver) { var base = _superPropBase(target, property); var desc; if (base) { desc = Object.getOwnPropertyDescriptor(base, property); if (desc.set) { desc.set.call(receiver, value); return true; } else if (!desc.writable) { return false; } } desc = Object.getOwnPropertyDescriptor(receiver, property); if (desc) { if (!desc.writable) { return false; } desc.value = value; Object.defineProperty(receiver, property, desc); } else { _defineProperty(receiver, property, value); } return true; }; } return set(target, property, value, receiver); } function _set(target, property, value, receiver, isStrict) { var s = set(target, property, value, receiver || target); if (!s && isStrict) { throw new Error('failed to set property'); } return value; } @@ -16,6 +12,14 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } @@ -39,10 +43,12 @@ let Obj = function (_Base) { _inherits(Obj, _Base); + var _super = _createSuper(Obj); + function Obj() { _classCallCheck(this, Obj); - return _possibleConstructorReturn(this, _getPrototypeOf(Obj).apply(this, arguments)); + return _super.apply(this, arguments); } _createClass(Obj, [{ diff --git a/packages/babel-plugin-transform-classes/test/fixtures/get-set/set-semantics-getter-defined-on-parent/output.js b/packages/babel-plugin-transform-classes/test/fixtures/get-set/set-semantics-getter-defined-on-parent/output.js index 5f535dab4210..cff5159df7c9 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/get-set/set-semantics-getter-defined-on-parent/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/get-set/set-semantics-getter-defined-on-parent/output.js @@ -1,9 +1,5 @@ "use strict"; -function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - function set(target, property, value, receiver) { if (typeof Reflect !== "undefined" && Reflect.set) { set = Reflect.set; } else { set = function set(target, property, value, receiver) { var base = _superPropBase(target, property); var desc; if (base) { desc = Object.getOwnPropertyDescriptor(base, property); if (desc.set) { desc.set.call(receiver, value); return true; } else if (!desc.writable) { return false; } } desc = Object.getOwnPropertyDescriptor(receiver, property); if (desc) { if (!desc.writable) { return false; } desc.value = value; Object.defineProperty(receiver, property, desc); } else { _defineProperty(receiver, property, value); } return true; }; } return set(target, property, value, receiver); } function _set(target, property, value, receiver, isStrict) { var s = set(target, property, value, receiver || target); if (!s && isStrict) { throw new Error('failed to set property'); } return value; } @@ -12,6 +8,14 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } @@ -48,10 +52,12 @@ let Obj = function (_Base) { _inherits(Obj, _Base); + var _super = _createSuper(Obj); + function Obj() { _classCallCheck(this, Obj); - return _possibleConstructorReturn(this, _getPrototypeOf(Obj).apply(this, arguments)); + return _super.apply(this, arguments); } _createClass(Obj, [{ diff --git a/packages/babel-plugin-transform-classes/test/fixtures/get-set/set-semantics-not-defined-on-parent-data-on-obj/output.js b/packages/babel-plugin-transform-classes/test/fixtures/get-set/set-semantics-not-defined-on-parent-data-on-obj/output.js index a2eed62a692c..c6939ad02270 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/get-set/set-semantics-not-defined-on-parent-data-on-obj/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/get-set/set-semantics-not-defined-on-parent-data-on-obj/output.js @@ -4,10 +4,6 @@ function _defineProperties(target, props) { for (var i = 0; i < props.length; i+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } -function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - function set(target, property, value, receiver) { if (typeof Reflect !== "undefined" && Reflect.set) { set = Reflect.set; } else { set = function set(target, property, value, receiver) { var base = _superPropBase(target, property); var desc; if (base) { desc = Object.getOwnPropertyDescriptor(base, property); if (desc.set) { desc.set.call(receiver, value); return true; } else if (!desc.writable) { return false; } } desc = Object.getOwnPropertyDescriptor(receiver, property); if (desc) { if (!desc.writable) { return false; } desc.value = value; Object.defineProperty(receiver, property, desc); } else { _defineProperty(receiver, property, value); } return true; }; } return set(target, property, value, receiver); } function _set(target, property, value, receiver, isStrict) { var s = set(target, property, value, receiver || target); if (!s && isStrict) { throw new Error('failed to set property'); } return value; } @@ -16,6 +12,14 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } @@ -33,10 +37,12 @@ let Obj = function (_Base) { _inherits(Obj, _Base); + var _super = _createSuper(Obj); + function Obj() { _classCallCheck(this, Obj); - return _possibleConstructorReturn(this, _getPrototypeOf(Obj).apply(this, arguments)); + return _super.apply(this, arguments); } _createClass(Obj, [{ diff --git a/packages/babel-plugin-transform-classes/test/fixtures/get-set/set-semantics-not-defined-on-parent-getter-on-obj/output.js b/packages/babel-plugin-transform-classes/test/fixtures/get-set/set-semantics-not-defined-on-parent-getter-on-obj/output.js index aa20e6ad8dfd..0229417adfb5 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/get-set/set-semantics-not-defined-on-parent-getter-on-obj/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/get-set/set-semantics-not-defined-on-parent-getter-on-obj/output.js @@ -4,10 +4,6 @@ function _defineProperties(target, props) { for (var i = 0; i < props.length; i+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } -function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - function set(target, property, value, receiver) { if (typeof Reflect !== "undefined" && Reflect.set) { set = Reflect.set; } else { set = function set(target, property, value, receiver) { var base = _superPropBase(target, property); var desc; if (base) { desc = Object.getOwnPropertyDescriptor(base, property); if (desc.set) { desc.set.call(receiver, value); return true; } else if (!desc.writable) { return false; } } desc = Object.getOwnPropertyDescriptor(receiver, property); if (desc) { if (!desc.writable) { return false; } desc.value = value; Object.defineProperty(receiver, property, desc); } else { _defineProperty(receiver, property, value); } return true; }; } return set(target, property, value, receiver); } function _set(target, property, value, receiver, isStrict) { var s = set(target, property, value, receiver || target); if (!s && isStrict) { throw new Error('failed to set property'); } return value; } @@ -16,6 +12,14 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } @@ -33,10 +37,12 @@ let Obj = function (_Base) { _inherits(Obj, _Base); + var _super = _createSuper(Obj); + function Obj() { _classCallCheck(this, Obj); - return _possibleConstructorReturn(this, _getPrototypeOf(Obj).apply(this, arguments)); + return _super.apply(this, arguments); } _createClass(Obj, [{ diff --git a/packages/babel-plugin-transform-classes/test/fixtures/get-set/set-semantics-not-defined-on-parent-not-on-obj/output.js b/packages/babel-plugin-transform-classes/test/fixtures/get-set/set-semantics-not-defined-on-parent-not-on-obj/output.js index 83302cdb2ced..80883523edc3 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/get-set/set-semantics-not-defined-on-parent-not-on-obj/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/get-set/set-semantics-not-defined-on-parent-not-on-obj/output.js @@ -4,10 +4,6 @@ function _defineProperties(target, props) { for (var i = 0; i < props.length; i+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } -function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - function set(target, property, value, receiver) { if (typeof Reflect !== "undefined" && Reflect.set) { set = Reflect.set; } else { set = function set(target, property, value, receiver) { var base = _superPropBase(target, property); var desc; if (base) { desc = Object.getOwnPropertyDescriptor(base, property); if (desc.set) { desc.set.call(receiver, value); return true; } else if (!desc.writable) { return false; } } desc = Object.getOwnPropertyDescriptor(receiver, property); if (desc) { if (!desc.writable) { return false; } desc.value = value; Object.defineProperty(receiver, property, desc); } else { _defineProperty(receiver, property, value); } return true; }; } return set(target, property, value, receiver); } function _set(target, property, value, receiver, isStrict) { var s = set(target, property, value, receiver || target); if (!s && isStrict) { throw new Error('failed to set property'); } return value; } @@ -16,6 +12,14 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } @@ -33,10 +37,12 @@ let Obj = function (_Base) { _inherits(Obj, _Base); + var _super = _createSuper(Obj); + function Obj() { _classCallCheck(this, Obj); - return _possibleConstructorReturn(this, _getPrototypeOf(Obj).apply(this, arguments)); + return _super.apply(this, arguments); } _createClass(Obj, [{ diff --git a/packages/babel-plugin-transform-classes/test/fixtures/get-set/set-semantics-not-defined-on-parent-setter-on-obj/output.js b/packages/babel-plugin-transform-classes/test/fixtures/get-set/set-semantics-not-defined-on-parent-setter-on-obj/output.js index f74c110fe1ea..081417bc577c 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/get-set/set-semantics-not-defined-on-parent-setter-on-obj/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/get-set/set-semantics-not-defined-on-parent-setter-on-obj/output.js @@ -4,10 +4,6 @@ function _defineProperties(target, props) { for (var i = 0; i < props.length; i+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } -function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - function set(target, property, value, receiver) { if (typeof Reflect !== "undefined" && Reflect.set) { set = Reflect.set; } else { set = function set(target, property, value, receiver) { var base = _superPropBase(target, property); var desc; if (base) { desc = Object.getOwnPropertyDescriptor(base, property); if (desc.set) { desc.set.call(receiver, value); return true; } else if (!desc.writable) { return false; } } desc = Object.getOwnPropertyDescriptor(receiver, property); if (desc) { if (!desc.writable) { return false; } desc.value = value; Object.defineProperty(receiver, property, desc); } else { _defineProperty(receiver, property, value); } return true; }; } return set(target, property, value, receiver); } function _set(target, property, value, receiver, isStrict) { var s = set(target, property, value, receiver || target); if (!s && isStrict) { throw new Error('failed to set property'); } return value; } @@ -16,6 +12,14 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } @@ -35,10 +39,12 @@ let Obj = function (_Base) { _inherits(Obj, _Base); + var _super = _createSuper(Obj); + function Obj() { _classCallCheck(this, Obj); - return _possibleConstructorReturn(this, _getPrototypeOf(Obj).apply(this, arguments)); + return _super.apply(this, arguments); } _createClass(Obj, [{ diff --git a/packages/babel-plugin-transform-classes/test/fixtures/get-set/set-semantics-setter-defined-on-parent/output.js b/packages/babel-plugin-transform-classes/test/fixtures/get-set/set-semantics-setter-defined-on-parent/output.js index 7f66bea53cff..77c97e7b9dc5 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/get-set/set-semantics-setter-defined-on-parent/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/get-set/set-semantics-setter-defined-on-parent/output.js @@ -1,9 +1,5 @@ "use strict"; -function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - function set(target, property, value, receiver) { if (typeof Reflect !== "undefined" && Reflect.set) { set = Reflect.set; } else { set = function set(target, property, value, receiver) { var base = _superPropBase(target, property); var desc; if (base) { desc = Object.getOwnPropertyDescriptor(base, property); if (desc.set) { desc.set.call(receiver, value); return true; } else if (!desc.writable) { return false; } } desc = Object.getOwnPropertyDescriptor(receiver, property); if (desc) { if (!desc.writable) { return false; } desc.value = value; Object.defineProperty(receiver, property, desc); } else { _defineProperty(receiver, property, value); } return true; }; } return set(target, property, value, receiver); } function _set(target, property, value, receiver, isStrict) { var s = set(target, property, value, receiver || target); if (!s && isStrict) { throw new Error('failed to set property'); } return value; } @@ -12,6 +8,14 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } @@ -48,10 +52,12 @@ let Obj = function (_Base) { _inherits(Obj, _Base); + var _super = _createSuper(Obj); + function Obj() { _classCallCheck(this, Obj); - return _possibleConstructorReturn(this, _getPrototypeOf(Obj).apply(this, arguments)); + return _super.apply(this, arguments); } _createClass(Obj, [{ diff --git a/packages/babel-plugin-transform-classes/test/fixtures/loose-classCallCheck/with-superClass/output.js b/packages/babel-plugin-transform-classes/test/fixtures/loose-classCallCheck/with-superClass/output.js index 7dfbc2cda9e9..855ba7d3e9f7 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/loose-classCallCheck/with-superClass/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/loose-classCallCheck/with-superClass/output.js @@ -1,5 +1,13 @@ +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } let B = function B() { @@ -13,6 +21,8 @@ function (_B) { _inheritsLoose(A, _B); + var _super = _createSuper(A); + function A(track) { var _this; diff --git a/packages/babel-plugin-transform-classes/test/fixtures/loose/accessing-super-class/output.js b/packages/babel-plugin-transform-classes/test/fixtures/loose/accessing-super-class/output.js index 1d260c689e82..27f5cfdc06e9 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/loose/accessing-super-class/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/loose/accessing-super-class/output.js @@ -5,6 +5,8 @@ function (_Foo) { babelHelpers.inheritsLoose(Test, _Foo); + var _super = babelHelpers.createSuper(Test); + function Test() { var _Foo$prototype$test; diff --git a/packages/babel-plugin-transform-classes/test/fixtures/loose/accessing-super-properties/output.js b/packages/babel-plugin-transform-classes/test/fixtures/loose/accessing-super-properties/output.js index 8ecd49b4caf6..81a42d3f5bfc 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/loose/accessing-super-properties/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/loose/accessing-super-properties/output.js @@ -5,6 +5,8 @@ function (_Foo) { babelHelpers.inheritsLoose(Test, _Foo); + var _super = babelHelpers.createSuper(Test); + function Test() { var _this; diff --git a/packages/babel-plugin-transform-classes/test/fixtures/loose/calling-super-properties/output.js b/packages/babel-plugin-transform-classes/test/fixtures/loose/calling-super-properties/output.js index a643db1ebd6b..2b246d45f171 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/loose/calling-super-properties/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/loose/calling-super-properties/output.js @@ -5,6 +5,8 @@ function (_Foo) { babelHelpers.inheritsLoose(Test, _Foo); + var _super = babelHelpers.createSuper(Test); + function Test() { var _this; diff --git a/packages/babel-plugin-transform-classes/test/fixtures/loose/derived-constructor-must-call-super/output.js b/packages/babel-plugin-transform-classes/test/fixtures/loose/derived-constructor-must-call-super/output.js index a221b7cfb724..663880160741 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/loose/derived-constructor-must-call-super/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/loose/derived-constructor-must-call-super/output.js @@ -5,6 +5,8 @@ function (_Bar) { babelHelpers.inheritsLoose(Foo, _Bar); + var _super = babelHelpers.createSuper(Foo); + function Foo() { var _this; diff --git a/packages/babel-plugin-transform-classes/test/fixtures/loose/derived-constructor-no-super-return-falsey/output.js b/packages/babel-plugin-transform-classes/test/fixtures/loose/derived-constructor-no-super-return-falsey/output.js index c8ecc7ad2adf..d823ca9535fe 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/loose/derived-constructor-no-super-return-falsey/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/loose/derived-constructor-no-super-return-falsey/output.js @@ -5,6 +5,8 @@ function (_Base) { babelHelpers.inheritsLoose(Child, _Base); + var _super = babelHelpers.createSuper(Child); + function Child() { var _this; diff --git a/packages/babel-plugin-transform-classes/test/fixtures/loose/derived-constructor-no-super-return-object/output.js b/packages/babel-plugin-transform-classes/test/fixtures/loose/derived-constructor-no-super-return-object/output.js index fe7950eb71db..7e17b4179c84 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/loose/derived-constructor-no-super-return-object/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/loose/derived-constructor-no-super-return-object/output.js @@ -5,6 +5,8 @@ function (_Base) { babelHelpers.inheritsLoose(Child, _Base); + var _super = babelHelpers.createSuper(Child); + function Child() { var _this; diff --git a/packages/babel-plugin-transform-classes/test/fixtures/loose/options.json b/packages/babel-plugin-transform-classes/test/fixtures/loose/options.json index a89247845869..6b7851da95fe 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/loose/options.json +++ b/packages/babel-plugin-transform-classes/test/fixtures/loose/options.json @@ -1,6 +1,6 @@ { "plugins": [ - "external-helpers", + ["external-helpers", { "helperVersion": "7.100.0" }], "transform-function-name", ["transform-classes", { "loose": true }], ["transform-spread", { "loose": true }], diff --git a/packages/babel-plugin-transform-classes/test/fixtures/loose/super-class-id-member-expression/output.js b/packages/babel-plugin-transform-classes/test/fixtures/loose/super-class-id-member-expression/output.js index 1a90473147ca..46a721edde7b 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/loose/super-class-id-member-expression/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/loose/super-class-id-member-expression/output.js @@ -5,6 +5,8 @@ function (_Chaplin$Controller) { babelHelpers.inheritsLoose(BaseController, _Chaplin$Controller); + var _super = babelHelpers.createSuper(BaseController); + function BaseController() { return _Chaplin$Controller.apply(this, arguments) || this; } @@ -19,6 +21,8 @@ function (_Chaplin$Controller$A) { babelHelpers.inheritsLoose(BaseController2, _Chaplin$Controller$A); + var _super2 = babelHelpers.createSuper(BaseController2); + function BaseController2() { return _Chaplin$Controller$A.apply(this, arguments) || this; } diff --git a/packages/babel-plugin-transform-classes/test/fixtures/loose/super-class/output.js b/packages/babel-plugin-transform-classes/test/fixtures/loose/super-class/output.js index 779cd3877c78..961fd06b5d90 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/loose/super-class/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/loose/super-class/output.js @@ -5,6 +5,8 @@ function (_Foo) { babelHelpers.inheritsLoose(Test, _Foo); + var _super = babelHelpers.createSuper(Test); + function Test() { return _Foo.apply(this, arguments) || this; } diff --git a/packages/babel-plugin-transform-classes/test/fixtures/regression/2663/output.js b/packages/babel-plugin-transform-classes/test/fixtures/regression/2663/output.js index 4ac5364faf8f..74b5280cd87c 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/regression/2663/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/regression/2663/output.js @@ -11,17 +11,23 @@ var _events = require("events"); var _binarySerializer = babelHelpers.interopRequireDefault(require("./helpers/binary-serializer")); +function _createSuper(Derived) { return function () { var Super = babelHelpers.getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = babelHelpers.getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return babelHelpers.possibleConstructorReturn(this, result); }; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + // import ... var Connection = /*#__PURE__*/ function (_EventEmitter) { babelHelpers.inherits(Connection, _EventEmitter); + var _super = _createSuper(Connection); + function Connection(endpoint, joinKey, joinData, roomId) { var _this; babelHelpers.classCallCheck(this, Connection); - _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Connection).call(this)); + _this = _super.call(this); _this.isConnected = false; _this.roomId = roomId; // ... diff --git a/packages/babel-plugin-transform-classes/test/fixtures/regression/2694/output.js b/packages/babel-plugin-transform-classes/test/fixtures/regression/2694/output.js index 32ea562ad9b2..c14f73e5369f 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/regression/2694/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/regression/2694/output.js @@ -7,14 +7,20 @@ exports["default"] = void 0; var _BaseFoo2 = babelHelpers.interopRequireDefault(require("./BaseFoo")); +function _createSuper(Derived) { return function () { var Super = babelHelpers.getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = babelHelpers.getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return babelHelpers.possibleConstructorReturn(this, result); }; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + var SubFoo = /*#__PURE__*/ function (_BaseFoo) { babelHelpers.inherits(SubFoo, _BaseFoo); + var _super = _createSuper(SubFoo); + function SubFoo() { babelHelpers.classCallCheck(this, SubFoo); - return babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(SubFoo).apply(this, arguments)); + return _super.apply(this, arguments); } babelHelpers.createClass(SubFoo, null, [{ diff --git a/packages/babel-plugin-transform-classes/test/fixtures/regression/2775/output.js b/packages/babel-plugin-transform-classes/test/fixtures/regression/2775/output.js index 19b7f10208f7..7130b396e5f2 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/regression/2775/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/regression/2775/output.js @@ -7,14 +7,20 @@ exports["default"] = void 0; var _react = babelHelpers.interopRequireDefault(require("react")); +function _createSuper(Derived) { return function () { var Super = babelHelpers.getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = babelHelpers.getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return babelHelpers.possibleConstructorReturn(this, result); }; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + var RandomComponent = /*#__PURE__*/ function (_Component) { babelHelpers.inherits(RandomComponent, _Component); + var _super = _createSuper(RandomComponent); + function RandomComponent() { babelHelpers.classCallCheck(this, RandomComponent); - return babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(RandomComponent).call(this)); + return _super.call(this); } babelHelpers.createClass(RandomComponent, [{ diff --git a/packages/babel-plugin-transform-classes/test/fixtures/regression/3028/output.js b/packages/babel-plugin-transform-classes/test/fixtures/regression/3028/output.js index 333b2e176c1f..2773ae324eb9 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/regression/3028/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/regression/3028/output.js @@ -5,6 +5,10 @@ Object.defineProperty(exports, "__esModule", { }); exports["default"] = void 0; +function _createSuper(Derived) { return function () { var Super = babelHelpers.getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = babelHelpers.getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return babelHelpers.possibleConstructorReturn(this, result); }; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + var b = function b() { babelHelpers.classCallCheck(this, b); }; @@ -14,11 +18,13 @@ var a1 = function (_b) { babelHelpers.inherits(a1, _b); + var _super = _createSuper(a1); + function a1() { var _this; babelHelpers.classCallCheck(this, a1); - _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(a1).call(this)); + _this = _super.call(this); _this.x = function () { return babelHelpers.assertThisInitialized(_this); @@ -35,11 +41,13 @@ var a2 = function (_b2) { babelHelpers.inherits(a2, _b2); + var _super2 = _createSuper(a2); + function a2() { var _this2; babelHelpers.classCallCheck(this, a2); - _this2 = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(a2).call(this)); + _this2 = _super2.call(this); _this2.x = function () { return babelHelpers.assertThisInitialized(_this2); diff --git a/packages/babel-plugin-transform-classes/test/fixtures/regression/5769/output.js b/packages/babel-plugin-transform-classes/test/fixtures/regression/5769/output.js index 41f9eda52e41..24f85f7937c6 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/regression/5769/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/regression/5769/output.js @@ -1,3 +1,7 @@ +function _createSuper(Derived) { return function () { var Super = babelHelpers.getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = babelHelpers.getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return babelHelpers.possibleConstructorReturn(this, result); }; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + var Point = /*#__PURE__*/ function () { @@ -23,11 +27,13 @@ function (_Point) { babelHelpers.inherits(ColorPoint, _Point); + var _super = _createSuper(ColorPoint); + function ColorPoint() { var _this; babelHelpers.classCallCheck(this, ColorPoint); - _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(ColorPoint).call(this)); + _this = _super.call(this); _this.x = 2; babelHelpers.set(babelHelpers.getPrototypeOf(ColorPoint.prototype), "x", 3, babelHelpers.assertThisInitialized(_this), true); expect(_this.x).toBe(3); // A diff --git a/packages/babel-plugin-transform-classes/test/fixtures/regression/5817/output.js b/packages/babel-plugin-transform-classes/test/fixtures/regression/5817/output.js index af6350f201df..6a9e83ca9e58 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/regression/5817/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/regression/5817/output.js @@ -1,3 +1,7 @@ +function _createSuper(Derived) { return function () { var Super = babelHelpers.getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = babelHelpers.getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return babelHelpers.possibleConstructorReturn(this, result); }; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + var A = /*#__PURE__*/ function (_B) { @@ -5,11 +9,13 @@ function (_B) { babelHelpers.inherits(A, _B); + var _super = _createSuper(A); + function A() { var _this; babelHelpers.classCallCheck(this, A); - _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(A).call(this)); + _this = _super.call(this); _this.arrow1 = function (x) { return x; diff --git a/packages/babel-plugin-transform-classes/test/fixtures/regression/8499/input.js b/packages/babel-plugin-transform-classes/test/fixtures/regression/8499/input.js index 45af5099a97e..1a5d146d5e17 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/regression/8499/input.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/regression/8499/input.js @@ -1,17 +1,26 @@ -// Pretend that `Reflect.construct` isn't supported. -this.Reflect = undefined; +const oldReflect = this.Reflect; +const oldHTMLElement = this.HTMLElement; -this.HTMLElement = function() { - // Here, `this.HTMLElement` is this function, not the original HTMLElement - // constructor. `this.constructor` should be this function too, but isn't. - constructor = this.constructor; -}; +try { + // Pretend that `Reflect.construct` isn't supported. + this.Reflect = undefined; -var constructor; + this.HTMLElement = function() { + // Here, `this.HTMLElement` is this function, not the original HTMLElement + // constructor. `this.constructor` should be this function too, but isn't. + constructor = this.constructor; + }; -class CustomElement extends HTMLElement {}; -new CustomElement(); + var constructor; -expect(constructor).toBe(CustomElement); + class CustomElement extends HTMLElement {}; + new CustomElement(); + + expect(constructor).toBe(CustomElement); +} finally { + // Restore original env + this.Reflect = oldReflect; + this.HTMLElement = oldHTMLElement; +} diff --git a/packages/babel-plugin-transform-classes/test/fixtures/regression/8499/output.js b/packages/babel-plugin-transform-classes/test/fixtures/regression/8499/output.js index b14eb4235371..aa1b8194eba7 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/regression/8499/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/regression/8499/output.js @@ -1,29 +1,44 @@ -// Pretend that `Reflect.construct` isn't supported. -this.Reflect = undefined; +function _createSuper(Derived) { return function () { var Super = babelHelpers.getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = babelHelpers.getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return babelHelpers.possibleConstructorReturn(this, result); }; } -this.HTMLElement = function () { - // Here, `this.HTMLElement` is this function, not the original HTMLElement - // constructor. `this.constructor` should be this function too, but isn't. - constructor = this.constructor; -}; +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } -var constructor; +var oldReflect = this.Reflect; +var oldHTMLElement = this.HTMLElement; -var CustomElement = -/*#__PURE__*/ -function (_HTMLElement) { - "use strict"; +try { + // Pretend that `Reflect.construct` isn't supported. + this.Reflect = undefined; - babelHelpers.inherits(CustomElement, _HTMLElement); + this.HTMLElement = function () { + // Here, `this.HTMLElement` is this function, not the original HTMLElement + // constructor. `this.constructor` should be this function too, but isn't. + constructor = this.constructor; + }; - function CustomElement() { - babelHelpers.classCallCheck(this, CustomElement); - return babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(CustomElement).apply(this, arguments)); - } + var constructor; - return CustomElement; -}(babelHelpers.wrapNativeSuper(HTMLElement)); + var CustomElement = + /*#__PURE__*/ + function (_HTMLElement) { + "use strict"; -; -new CustomElement(); -expect(constructor).toBe(CustomElement); + babelHelpers.inherits(CustomElement, _HTMLElement); + + var _super = _createSuper(CustomElement); + + function CustomElement() { + babelHelpers.classCallCheck(this, CustomElement); + return _super.apply(this, arguments); + } + + return CustomElement; + }(babelHelpers.wrapNativeSuper(HTMLElement)); + + ; + new CustomElement(); + expect(constructor).toBe(CustomElement); +} finally { + // Restore original env + this.Reflect = oldReflect; + this.HTMLElement = oldHTMLElement; +} diff --git a/packages/babel-plugin-transform-classes/test/fixtures/regression/T2494/output.js b/packages/babel-plugin-transform-classes/test/fixtures/regression/T2494/output.js index 2ec0ec90d8fd..1138e2ad3365 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/regression/T2494/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/regression/T2494/output.js @@ -1,3 +1,7 @@ +function _createSuper(Derived) { return function () { var Super = babelHelpers.getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = babelHelpers.getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return babelHelpers.possibleConstructorReturn(this, result); }; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + var x = { Foo: /*#__PURE__*/ @@ -6,9 +10,11 @@ var x = { babelHelpers.inherits(_class, _Foo); + var _super = _createSuper(_class); + function _class() { babelHelpers.classCallCheck(this, _class); - return babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(_class).apply(this, arguments)); + return _super.apply(this, arguments); } return _class; diff --git a/packages/babel-plugin-transform-classes/test/fixtures/regression/T2997/output.js b/packages/babel-plugin-transform-classes/test/fixtures/regression/T2997/output.js index 57794290557d..796606e6a72d 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/regression/T2997/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/regression/T2997/output.js @@ -1,3 +1,7 @@ +function _createSuper(Derived) { return function () { var Super = babelHelpers.getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = babelHelpers.getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return babelHelpers.possibleConstructorReturn(this, result); }; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + var A = function A() { "use strict"; @@ -11,11 +15,13 @@ function (_A) { babelHelpers.inherits(B, _A); + var _super = _createSuper(B); + function B() { var _this; babelHelpers.classCallCheck(this, B); - return babelHelpers.possibleConstructorReturn(_this, _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(B).call(this))); + return babelHelpers.possibleConstructorReturn(_this, _this = _super.call(this)); } return B; diff --git a/packages/babel-plugin-transform-classes/test/fixtures/regression/T7537/output.js b/packages/babel-plugin-transform-classes/test/fixtures/regression/T7537/output.js index 5e43e6dd208d..c0e2dde22222 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/regression/T7537/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/regression/T7537/output.js @@ -1,9 +1,13 @@ function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } @@ -25,12 +29,14 @@ function (_B) { _inherits(A, _B); + var _super = _createSuper(A); + function A(track) { var _this; _classCallCheck(this, A); - if (track !== undefined) _this = _possibleConstructorReturn(this, _getPrototypeOf(A).call(this, track));else _this = _possibleConstructorReturn(this, _getPrototypeOf(A).call(this)); + if (track !== undefined) _this = _super.call(this, track);else _this = _super.call(this); return _possibleConstructorReturn(_this); } diff --git a/packages/babel-plugin-transform-classes/test/fixtures/spec/accessing-super-class/output.js b/packages/babel-plugin-transform-classes/test/fixtures/spec/accessing-super-class/output.js index 8d6922614b92..46aa08d8dfb5 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/spec/accessing-super-class/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/spec/accessing-super-class/output.js @@ -5,17 +5,19 @@ function (_Foo) { babelHelpers.inherits(Test, _Foo); + var _super = babelHelpers.createSuper(Test); + function Test() { - var _babelHelpers$getProt, _babelHelpers$get; + var _babelHelpers$get; var _this; babelHelpers.classCallCheck(this, Test); woops.super.test(); - _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Test).call(this)); + _this = _super.call(this); babelHelpers.get(babelHelpers.getPrototypeOf(Test.prototype), "test", babelHelpers.assertThisInitialized(_this)).call(babelHelpers.assertThisInitialized(_this)); - _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Test).apply(this, arguments)); - _this = babelHelpers.possibleConstructorReturn(this, (_babelHelpers$getProt = babelHelpers.getPrototypeOf(Test)).call.apply(_babelHelpers$getProt, [this, "test"].concat(Array.prototype.slice.call(arguments)))); + _this = _super.apply(this, arguments); + _this = _super.call.apply(_super, [this, "test"].concat(Array.prototype.slice.call(arguments))); babelHelpers.get(babelHelpers.getPrototypeOf(Test.prototype), "test", babelHelpers.assertThisInitialized(_this)).apply(babelHelpers.assertThisInitialized(_this), arguments); (_babelHelpers$get = babelHelpers.get(babelHelpers.getPrototypeOf(Test.prototype), "test", babelHelpers.assertThisInitialized(_this))).call.apply(_babelHelpers$get, [babelHelpers.assertThisInitialized(_this), "test"].concat(Array.prototype.slice.call(arguments))); diff --git a/packages/babel-plugin-transform-classes/test/fixtures/spec/accessing-super-properties/output.js b/packages/babel-plugin-transform-classes/test/fixtures/spec/accessing-super-properties/output.js index aef35bbb3165..b8a3382066b6 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/spec/accessing-super-properties/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/spec/accessing-super-properties/output.js @@ -5,11 +5,13 @@ function (_Foo) { babelHelpers.inherits(Test, _Foo); + var _super = babelHelpers.createSuper(Test); + function Test() { var _this; babelHelpers.classCallCheck(this, Test); - _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Test).call(this)); + _this = _super.call(this); babelHelpers.get(babelHelpers.getPrototypeOf(Test.prototype), "test", babelHelpers.assertThisInitialized(_this)); babelHelpers.get(babelHelpers.getPrototypeOf(Test.prototype), "test", babelHelpers.assertThisInitialized(_this)).whatever; return _this; diff --git a/packages/babel-plugin-transform-classes/test/fixtures/spec/calling-super-properties/output.js b/packages/babel-plugin-transform-classes/test/fixtures/spec/calling-super-properties/output.js index 8c3eaf881132..7219bf67c179 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/spec/calling-super-properties/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/spec/calling-super-properties/output.js @@ -5,11 +5,13 @@ function (_Foo) { babelHelpers.inherits(Test, _Foo); + var _super = babelHelpers.createSuper(Test); + function Test() { var _this; babelHelpers.classCallCheck(this, Test); - _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Test).call(this)); + _this = _super.call(this); babelHelpers.get(babelHelpers.getPrototypeOf(Test.prototype), "test", babelHelpers.assertThisInitialized(_this)).whatever(); babelHelpers.get(babelHelpers.getPrototypeOf(Test.prototype), "test", babelHelpers.assertThisInitialized(_this)).call(babelHelpers.assertThisInitialized(_this)); return _this; diff --git a/packages/babel-plugin-transform-classes/test/fixtures/spec/constructor/output.js b/packages/babel-plugin-transform-classes/test/fixtures/spec/constructor/output.js index 2ebe633512c1..335d38785242 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/spec/constructor/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/spec/constructor/output.js @@ -12,11 +12,13 @@ function (_Bar) { babelHelpers.inherits(Foo, _Bar); + var _super = babelHelpers.createSuper(Foo); + function Foo() { var _this; babelHelpers.classCallCheck(this, Foo); - _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Foo).call(this)); + _this = _super.call(this); _this.state = "test"; return _this; } diff --git a/packages/babel-plugin-transform-classes/test/fixtures/spec/delay-arrow-function-for-bare-super-derived/output.js b/packages/babel-plugin-transform-classes/test/fixtures/spec/delay-arrow-function-for-bare-super-derived/output.js index 83a4d9b34146..5e9e0989b973 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/spec/delay-arrow-function-for-bare-super-derived/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/spec/delay-arrow-function-for-bare-super-derived/output.js @@ -5,13 +5,15 @@ function (_Bar) { babelHelpers.inherits(Foo, _Bar); + var _super = babelHelpers.createSuper(Foo); + function Foo() { var _this; babelHelpers.classCallCheck(this, Foo); - return _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Foo).call(this, () => { + return _this = _super.call(this, () => { _this.test; - })); + }); } return Foo; diff --git a/packages/babel-plugin-transform-classes/test/fixtures/spec/derived-constructor-must-call-super-2/output.js b/packages/babel-plugin-transform-classes/test/fixtures/spec/derived-constructor-must-call-super-2/output.js index 876987aef3b4..e65be995c1e5 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/spec/derived-constructor-must-call-super-2/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/spec/derived-constructor-must-call-super-2/output.js @@ -5,11 +5,13 @@ function (_Bar) { babelHelpers.inherits(Foo, _Bar); + var _super = babelHelpers.createSuper(Foo); + function Foo() { var _this; babelHelpers.classCallCheck(this, Foo); - if (eval("false")) _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Foo).call(this)); + if (eval("false")) _this = _super.call(this); return babelHelpers.possibleConstructorReturn(_this); } diff --git a/packages/babel-plugin-transform-classes/test/fixtures/spec/derived-constructor-must-call-super-3/output.js b/packages/babel-plugin-transform-classes/test/fixtures/spec/derived-constructor-must-call-super-3/output.js index 1859492a7bfa..d07d8dc70fc9 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/spec/derived-constructor-must-call-super-3/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/spec/derived-constructor-must-call-super-3/output.js @@ -5,12 +5,14 @@ function (_Bar) { babelHelpers.inherits(Foo, _Bar); + var _super = babelHelpers.createSuper(Foo); + function Foo() { var _this; babelHelpers.classCallCheck(this, Foo); - var fn = () => _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Foo).call(this)); + var fn = () => _this = _super.call(this); fn(); return babelHelpers.possibleConstructorReturn(_this); diff --git a/packages/babel-plugin-transform-classes/test/fixtures/spec/derived-constructor-must-call-super-4/output.js b/packages/babel-plugin-transform-classes/test/fixtures/spec/derived-constructor-must-call-super-4/output.js index 3ffe7db5e611..5fdb826c5f0f 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/spec/derived-constructor-must-call-super-4/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/spec/derived-constructor-must-call-super-4/output.js @@ -5,12 +5,14 @@ function (_Bar) { babelHelpers.inherits(Foo, _Bar); + var _super = babelHelpers.createSuper(Foo); + function Foo() { var _this; babelHelpers.classCallCheck(this, Foo); - var fn = () => _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Foo).call(this)); + var fn = () => _this = _super.call(this); return babelHelpers.possibleConstructorReturn(_this); } diff --git a/packages/babel-plugin-transform-classes/test/fixtures/spec/derived-constructor-must-call-super/output.js b/packages/babel-plugin-transform-classes/test/fixtures/spec/derived-constructor-must-call-super/output.js index 1a1fed3e09e0..14b6a725a978 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/spec/derived-constructor-must-call-super/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/spec/derived-constructor-must-call-super/output.js @@ -5,6 +5,8 @@ function (_Bar) { babelHelpers.inherits(Foo, _Bar); + var _super = babelHelpers.createSuper(Foo); + function Foo() { var _this; diff --git a/packages/babel-plugin-transform-classes/test/fixtures/spec/derived-constructor-no-super-return-falsey/output.js b/packages/babel-plugin-transform-classes/test/fixtures/spec/derived-constructor-no-super-return-falsey/output.js index 231c297d7d48..c8deaf0f1e20 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/spec/derived-constructor-no-super-return-falsey/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/spec/derived-constructor-no-super-return-falsey/output.js @@ -5,6 +5,8 @@ function (_Base) { babelHelpers.inherits(Child, _Base); + var _super = babelHelpers.createSuper(Child); + function Child() { var _this; diff --git a/packages/babel-plugin-transform-classes/test/fixtures/spec/derived-constructor-no-super-return-object/output.js b/packages/babel-plugin-transform-classes/test/fixtures/spec/derived-constructor-no-super-return-object/output.js index f0f8887eda1e..36d4c93e44d7 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/spec/derived-constructor-no-super-return-object/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/spec/derived-constructor-no-super-return-object/output.js @@ -5,6 +5,8 @@ function (_Base) { babelHelpers.inherits(Child, _Base); + var _super = babelHelpers.createSuper(Child); + function Child() { var _this; diff --git a/packages/babel-plugin-transform-classes/test/fixtures/spec/export-super-class/output.mjs b/packages/babel-plugin-transform-classes/test/fixtures/spec/export-super-class/output.mjs index e37e167cda89..f9c505f2038c 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/spec/export-super-class/output.mjs +++ b/packages/babel-plugin-transform-classes/test/fixtures/spec/export-super-class/output.mjs @@ -3,9 +3,11 @@ var _default = function (_A) { babelHelpers.inherits(_default, _A); + var _super = babelHelpers.createSuper(_default); + function _default() { babelHelpers.classCallCheck(this, _default); - return babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(_default).apply(this, arguments)); + return _super.apply(this, arguments); } return _default; diff --git a/packages/babel-plugin-transform-classes/test/fixtures/spec/nested-class-super-call-in-key/output.js b/packages/babel-plugin-transform-classes/test/fixtures/spec/nested-class-super-call-in-key/output.js index eb661ef2b3c3..d180264bdb61 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/spec/nested-class-super-call-in-key/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/spec/nested-class-super-call-in-key/output.js @@ -15,6 +15,8 @@ var Outer = function (_Hello) { babelHelpers.inherits(Outer, _Hello); + var _super = babelHelpers.createSuper(Outer); + function Outer() { var _this2 = this; @@ -30,7 +32,7 @@ function (_Hello) { } babelHelpers.createClass(Inner, [{ - key: _this = babelHelpers.possibleConstructorReturn(_this2, babelHelpers.getPrototypeOf(Outer).call(_this2)), + key: _this = _super.call(_this2), value: function value() { return 'hello'; } diff --git a/packages/babel-plugin-transform-classes/test/fixtures/spec/nested-class-super-property-in-key/output.js b/packages/babel-plugin-transform-classes/test/fixtures/spec/nested-class-super-property-in-key/output.js index 86533f3dead0..b43735f0768f 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/spec/nested-class-super-property-in-key/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/spec/nested-class-super-property-in-key/output.js @@ -21,11 +21,13 @@ var Outer = function (_Hello) { babelHelpers.inherits(Outer, _Hello); + var _super = babelHelpers.createSuper(Outer); + function Outer() { var _this; babelHelpers.classCallCheck(this, Outer); - _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Outer).call(this)); + _this = _super.call(this); var Inner = /*#__PURE__*/ diff --git a/packages/babel-plugin-transform-classes/test/fixtures/spec/nested-object-super-call-in-key/output.js b/packages/babel-plugin-transform-classes/test/fixtures/spec/nested-object-super-call-in-key/output.js index d540908b48df..83cf4d85e2b7 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/spec/nested-object-super-call-in-key/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/spec/nested-object-super-call-in-key/output.js @@ -15,12 +15,14 @@ var Outer = function (_Hello) { babelHelpers.inherits(Outer, _Hello); + var _super = babelHelpers.createSuper(Outer); + function Outer() { var _this; babelHelpers.classCallCheck(this, Outer); var Inner = { - [_this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Outer).call(this))]() { + [_this = _super.call(this)]() { return 'hello'; } diff --git a/packages/babel-plugin-transform-classes/test/fixtures/spec/nested-object-super-property-in-key/output.js b/packages/babel-plugin-transform-classes/test/fixtures/spec/nested-object-super-property-in-key/output.js index 45f4172368cb..5e2eca5eba36 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/spec/nested-object-super-property-in-key/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/spec/nested-object-super-property-in-key/output.js @@ -21,11 +21,13 @@ var Outer = function (_Hello) { babelHelpers.inherits(Outer, _Hello); + var _super = babelHelpers.createSuper(Outer); + function Outer() { var _this; babelHelpers.classCallCheck(this, Outer); - _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Outer).call(this)); + _this = _super.call(this); var Inner = { [babelHelpers.get(babelHelpers.getPrototypeOf(Outer.prototype), "toString", babelHelpers.assertThisInitialized(_this)).call(babelHelpers.assertThisInitialized(_this))]() { return 'hello'; diff --git a/packages/babel-plugin-transform-classes/test/fixtures/spec/options.json b/packages/babel-plugin-transform-classes/test/fixtures/spec/options.json index 8d402a794c7e..cac9bea7af04 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/spec/options.json +++ b/packages/babel-plugin-transform-classes/test/fixtures/spec/options.json @@ -1,6 +1,6 @@ { "plugins": [ - "external-helpers", + ["external-helpers", { "helperVersion": "7.100.0" }], "transform-function-name", "transform-classes", "transform-spread", diff --git a/packages/babel-plugin-transform-classes/test/fixtures/spec/super-class-anonymous/output.js b/packages/babel-plugin-transform-classes/test/fixtures/spec/super-class-anonymous/output.js index 614dc6c2d9ea..6e7d4e17a61d 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/spec/super-class-anonymous/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/spec/super-class-anonymous/output.js @@ -5,9 +5,11 @@ function (_ref) { babelHelpers.inherits(TestEmpty, _ref); + var _super = babelHelpers.createSuper(TestEmpty); + function TestEmpty() { babelHelpers.classCallCheck(this, TestEmpty); - return babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(TestEmpty).apply(this, arguments)); + return _super.apply(this, arguments); } return TestEmpty; @@ -30,9 +32,11 @@ function (_ref2) { babelHelpers.inherits(TestConstructorOnly, _ref2); + var _super2 = babelHelpers.createSuper(TestConstructorOnly); + function TestConstructorOnly() { babelHelpers.classCallCheck(this, TestConstructorOnly); - return babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(TestConstructorOnly).apply(this, arguments)); + return _super2.apply(this, arguments); } return TestConstructorOnly; @@ -55,9 +59,11 @@ function (_ref3) { babelHelpers.inherits(TestMethodOnly, _ref3); + var _super3 = babelHelpers.createSuper(TestMethodOnly); + function TestMethodOnly() { babelHelpers.classCallCheck(this, TestMethodOnly); - return babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(TestMethodOnly).apply(this, arguments)); + return _super3.apply(this, arguments); } return TestMethodOnly; @@ -84,9 +90,11 @@ function (_ref4) { babelHelpers.inherits(TestConstructorAndMethod, _ref4); + var _super4 = babelHelpers.createSuper(TestConstructorAndMethod); + function TestConstructorAndMethod() { babelHelpers.classCallCheck(this, TestConstructorAndMethod); - return babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(TestConstructorAndMethod).apply(this, arguments)); + return _super4.apply(this, arguments); } return TestConstructorAndMethod; @@ -113,9 +121,11 @@ function (_ref5) { babelHelpers.inherits(TestMultipleMethods, _ref5); + var _super5 = babelHelpers.createSuper(TestMultipleMethods); + function TestMultipleMethods() { babelHelpers.classCallCheck(this, TestMultipleMethods); - return babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(TestMultipleMethods).apply(this, arguments)); + return _super5.apply(this, arguments); } return TestMultipleMethods; diff --git a/packages/babel-plugin-transform-classes/test/fixtures/spec/super-class-id-member-expression/output.js b/packages/babel-plugin-transform-classes/test/fixtures/spec/super-class-id-member-expression/output.js index d656ac9528ab..2fad79c71d0a 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/spec/super-class-id-member-expression/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/spec/super-class-id-member-expression/output.js @@ -5,9 +5,11 @@ function (_Chaplin$Controller) { babelHelpers.inherits(BaseController, _Chaplin$Controller); + var _super = babelHelpers.createSuper(BaseController); + function BaseController() { babelHelpers.classCallCheck(this, BaseController); - return babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(BaseController).apply(this, arguments)); + return _super.apply(this, arguments); } return BaseController; @@ -20,9 +22,11 @@ function (_Chaplin$Controller$A) { babelHelpers.inherits(BaseController2, _Chaplin$Controller$A); + var _super2 = babelHelpers.createSuper(BaseController2); + function BaseController2() { babelHelpers.classCallCheck(this, BaseController2); - return babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(BaseController2).apply(this, arguments)); + return _super2.apply(this, arguments); } return BaseController2; diff --git a/packages/babel-plugin-transform-classes/test/fixtures/spec/super-class/output.js b/packages/babel-plugin-transform-classes/test/fixtures/spec/super-class/output.js index 8a994335e8d7..0dc53cebc861 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/spec/super-class/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/spec/super-class/output.js @@ -5,9 +5,11 @@ function (_Foo) { babelHelpers.inherits(Test, _Foo); + var _super = babelHelpers.createSuper(Test); + function Test() { babelHelpers.classCallCheck(this, Test); - return babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Test).apply(this, arguments)); + return _super.apply(this, arguments); } return Test; diff --git a/packages/babel-plugin-transform-classes/test/fixtures/spec/super-reference-before-bare-super-inline/output.js b/packages/babel-plugin-transform-classes/test/fixtures/spec/super-reference-before-bare-super-inline/output.js index 5c63d332cc3e..3bd67b0b5b46 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/spec/super-reference-before-bare-super-inline/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/spec/super-reference-before-bare-super-inline/output.js @@ -1,9 +1,13 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } @@ -21,12 +25,14 @@ function (_Bar) { _inherits(Foo, _Bar); + var _super = _createSuper(Foo); + function Foo() { var _this; _classCallCheck(this, Foo); - _get(_getPrototypeOf(Foo.prototype), "foo", _assertThisInitialized(_this)).call(_assertThisInitialized(_this), _this = _possibleConstructorReturn(this, _getPrototypeOf(Foo).call(this))); + _get(_getPrototypeOf(Foo.prototype), "foo", _assertThisInitialized(_this)).call(_assertThisInitialized(_this), _this = _super.call(this)); return _this; } diff --git a/packages/babel-plugin-transform-classes/test/fixtures/spec/super-reference-before-bare-super/output.js b/packages/babel-plugin-transform-classes/test/fixtures/spec/super-reference-before-bare-super/output.js index 9ad7dc9e277c..7a21514a3241 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/spec/super-reference-before-bare-super/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/spec/super-reference-before-bare-super/output.js @@ -1,9 +1,13 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } @@ -21,6 +25,8 @@ function (_Bar) { _inherits(Foo, _Bar); + var _super = _createSuper(Foo); + function Foo() { var _this; @@ -28,7 +34,7 @@ function (_Bar) { _get(_getPrototypeOf(Foo.prototype), "foo", _assertThisInitialized(_this)).call(_assertThisInitialized(_this)); - return _this = _possibleConstructorReturn(this, _getPrototypeOf(Foo).call(this)); + return _this = _super.call(this); } return Foo; diff --git a/packages/babel-plugin-transform-classes/test/fixtures/spec/super-reference-before-in-lambda-2/options.json b/packages/babel-plugin-transform-classes/test/fixtures/spec/super-reference-before-in-lambda-2/options.json index 93725c3c0e72..4b2ee4905cff 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/spec/super-reference-before-in-lambda-2/options.json +++ b/packages/babel-plugin-transform-classes/test/fixtures/spec/super-reference-before-in-lambda-2/options.json @@ -1,6 +1,6 @@ { "plugins": [ - "external-helpers", + ["external-helpers", { "helperVersion": "7.100.0" }], "transform-classes", "transform-block-scoping" ] diff --git a/packages/babel-plugin-transform-classes/test/fixtures/spec/super-reference-before-in-lambda-2/output.js b/packages/babel-plugin-transform-classes/test/fixtures/spec/super-reference-before-in-lambda-2/output.js index a9d35599dfac..2bffc44cb70c 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/spec/super-reference-before-in-lambda-2/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/spec/super-reference-before-in-lambda-2/output.js @@ -5,6 +5,8 @@ function (_Bar) { babelHelpers.inherits(Foo, _Bar); + var _super = babelHelpers.createSuper(Foo); + function Foo() { var _this; @@ -13,7 +15,7 @@ function (_Bar) { var t = () => babelHelpers.get(babelHelpers.getPrototypeOf(Foo.prototype), "test", babelHelpers.assertThisInitialized(_this)).call(babelHelpers.assertThisInitialized(_this)); babelHelpers.get(babelHelpers.getPrototypeOf(Foo.prototype), "foo", babelHelpers.assertThisInitialized(_this)).call(babelHelpers.assertThisInitialized(_this)); - return _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Foo).call(this)); + return _this = _super.call(this); } return Foo; diff --git a/packages/babel-plugin-transform-classes/test/fixtures/spec/super-reference-before-in-lambda-3/options.json b/packages/babel-plugin-transform-classes/test/fixtures/spec/super-reference-before-in-lambda-3/options.json index 93725c3c0e72..4b2ee4905cff 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/spec/super-reference-before-in-lambda-3/options.json +++ b/packages/babel-plugin-transform-classes/test/fixtures/spec/super-reference-before-in-lambda-3/options.json @@ -1,6 +1,6 @@ { "plugins": [ - "external-helpers", + ["external-helpers", { "helperVersion": "7.100.0" }], "transform-classes", "transform-block-scoping" ] diff --git a/packages/babel-plugin-transform-classes/test/fixtures/spec/super-reference-before-in-lambda-3/output.js b/packages/babel-plugin-transform-classes/test/fixtures/spec/super-reference-before-in-lambda-3/output.js index 1058746336b6..15e9d9d58ac1 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/spec/super-reference-before-in-lambda-3/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/spec/super-reference-before-in-lambda-3/output.js @@ -5,6 +5,8 @@ function (_Bar) { babelHelpers.inherits(Foo, _Bar); + var _super = babelHelpers.createSuper(Foo); + function Foo() { var _this; @@ -12,7 +14,7 @@ function (_Bar) { var t = () => babelHelpers.get(babelHelpers.getPrototypeOf(Foo.prototype), "test", babelHelpers.assertThisInitialized(_this)).call(babelHelpers.assertThisInitialized(_this)); - _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Foo).call(this)); + _this = _super.call(this); t(); return _this; } diff --git a/packages/babel-plugin-transform-classes/test/fixtures/spec/super-reference-before-in-lambda/options.json b/packages/babel-plugin-transform-classes/test/fixtures/spec/super-reference-before-in-lambda/options.json index 93725c3c0e72..4b2ee4905cff 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/spec/super-reference-before-in-lambda/options.json +++ b/packages/babel-plugin-transform-classes/test/fixtures/spec/super-reference-before-in-lambda/options.json @@ -1,6 +1,6 @@ { "plugins": [ - "external-helpers", + ["external-helpers", { "helperVersion": "7.100.0" }], "transform-classes", "transform-block-scoping" ] diff --git a/packages/babel-plugin-transform-classes/test/fixtures/spec/super-reference-before-in-lambda/output.js b/packages/babel-plugin-transform-classes/test/fixtures/spec/super-reference-before-in-lambda/output.js index 6836413a2149..0f27f11ffce4 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/spec/super-reference-before-in-lambda/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/spec/super-reference-before-in-lambda/output.js @@ -5,6 +5,8 @@ function (_Bar) { babelHelpers.inherits(Foo, _Bar); + var _super = babelHelpers.createSuper(Foo); + function Foo() { var _this; @@ -12,7 +14,7 @@ function (_Bar) { var t = () => babelHelpers.get(babelHelpers.getPrototypeOf(Foo.prototype), "test", babelHelpers.assertThisInitialized(_this)).call(babelHelpers.assertThisInitialized(_this)); - return _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Foo).call(this)); + return _this = _super.call(this); } return Foo; diff --git a/packages/babel-plugin-transform-classes/test/fixtures/spec/super-reference-in-prop-exression/output.js b/packages/babel-plugin-transform-classes/test/fixtures/spec/super-reference-in-prop-exression/output.js index c501dacfaf95..299f08ed026b 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/spec/super-reference-in-prop-exression/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/spec/super-reference-in-prop-exression/output.js @@ -5,11 +5,13 @@ function (_Bar) { babelHelpers.inherits(Foo, _Bar); + var _super = babelHelpers.createSuper(Foo); + function Foo() { var _this; babelHelpers.classCallCheck(this, Foo); - babelHelpers.get(babelHelpers.getPrototypeOf(Foo.prototype), (_this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Foo).call(this))).method, babelHelpers.assertThisInitialized(_this)).call(babelHelpers.assertThisInitialized(_this)); + babelHelpers.get(babelHelpers.getPrototypeOf(Foo.prototype), (_this = _super.call(this)).method, babelHelpers.assertThisInitialized(_this)).call(babelHelpers.assertThisInitialized(_this)); return _this; } diff --git a/packages/babel-plugin-transform-classes/test/fixtures/spec/this-not-allowed-before-super-in-derived-classes-2/output.js b/packages/babel-plugin-transform-classes/test/fixtures/spec/this-not-allowed-before-super-in-derived-classes-2/output.js index ec1d652c8dad..61d32568cd84 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/spec/this-not-allowed-before-super-in-derived-classes-2/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/spec/this-not-allowed-before-super-in-derived-classes-2/output.js @@ -5,11 +5,13 @@ function (_Bar) { babelHelpers.inherits(Foo, _Bar); + var _super = babelHelpers.createSuper(Foo); + function Foo() { var _this; babelHelpers.classCallCheck(this, Foo); - return _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Foo).call(this, babelHelpers.assertThisInitialized(_this))); + return _this = _super.call(this, babelHelpers.assertThisInitialized(_this)); } return Foo; diff --git a/packages/babel-plugin-transform-classes/test/fixtures/spec/this-not-allowed-before-super-in-derived-classes-3/output.js b/packages/babel-plugin-transform-classes/test/fixtures/spec/this-not-allowed-before-super-in-derived-classes-3/output.js index 06e41b47d3a1..b4b25eb60a16 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/spec/this-not-allowed-before-super-in-derived-classes-3/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/spec/this-not-allowed-before-super-in-derived-classes-3/output.js @@ -5,6 +5,8 @@ function (_Bar) { babelHelpers.inherits(Foo, _Bar); + var _super = babelHelpers.createSuper(Foo); + function Foo() { var _this; @@ -13,7 +15,7 @@ function (_Bar) { var fn = () => babelHelpers.assertThisInitialized(_this); fn(); - return _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Foo).call(this)); + return _this = _super.call(this); } return Foo; diff --git a/packages/babel-plugin-transform-classes/test/fixtures/spec/this-not-allowed-before-super-in-derived-classes-4/output.js b/packages/babel-plugin-transform-classes/test/fixtures/spec/this-not-allowed-before-super-in-derived-classes-4/output.js index 2bce474839d1..1ffbe80027c7 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/spec/this-not-allowed-before-super-in-derived-classes-4/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/spec/this-not-allowed-before-super-in-derived-classes-4/output.js @@ -5,6 +5,8 @@ function (_Bar) { babelHelpers.inherits(Foo, _Bar); + var _super = babelHelpers.createSuper(Foo); + function Foo() { var _this; @@ -12,7 +14,7 @@ function (_Bar) { var fn = () => babelHelpers.assertThisInitialized(_this); - _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Foo).call(this)); + _this = _super.call(this); fn(); return _this; } diff --git a/packages/babel-plugin-transform-classes/test/fixtures/spec/this-not-allowed-before-super-in-derived-classes-5/output.js b/packages/babel-plugin-transform-classes/test/fixtures/spec/this-not-allowed-before-super-in-derived-classes-5/output.js index a49d2be8091e..53ae9d79e2a7 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/spec/this-not-allowed-before-super-in-derived-classes-5/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/spec/this-not-allowed-before-super-in-derived-classes-5/output.js @@ -5,6 +5,8 @@ function (_Bar) { babelHelpers.inherits(Foo, _Bar); + var _super = babelHelpers.createSuper(Foo); + function Foo() { var _this; diff --git a/packages/babel-plugin-transform-classes/test/fixtures/spec/this-not-allowed-before-super-in-derived-classes/output.js b/packages/babel-plugin-transform-classes/test/fixtures/spec/this-not-allowed-before-super-in-derived-classes/output.js index cab6da87e8a7..e6440aa6f1f0 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/spec/this-not-allowed-before-super-in-derived-classes/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/spec/this-not-allowed-before-super-in-derived-classes/output.js @@ -5,12 +5,14 @@ function (_Bar) { babelHelpers.inherits(Foo, _Bar); + var _super = babelHelpers.createSuper(Foo); + function Foo() { var _this; babelHelpers.classCallCheck(this, Foo); _this.foo = "bar"; - return _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Foo).call(this)); + return _this = _super.call(this); } return Foo; diff --git a/packages/babel-plugin-transform-function-name/test/fixtures/function-name/modules-3/output.js b/packages/babel-plugin-transform-function-name/test/fixtures/function-name/modules-3/output.js index 79a6de9fc32f..91490a24f939 100644 --- a/packages/babel-plugin-transform-function-name/test/fixtures/function-name/modules-3/output.js +++ b/packages/babel-plugin-transform-function-name/test/fixtures/function-name/modules-3/output.js @@ -7,14 +7,20 @@ exports.default = void 0; var _store = require("./store"); +function _createSuper(Derived) { return function () { var Super = babelHelpers.getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = babelHelpers.getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return babelHelpers.possibleConstructorReturn(this, result); }; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + let Login = /*#__PURE__*/ function (_React$Component) { babelHelpers.inherits(Login, _React$Component); + var _super = _createSuper(Login); + function Login() { babelHelpers.classCallCheck(this, Login); - return babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Login).apply(this, arguments)); + return _super.apply(this, arguments); } babelHelpers.createClass(Login, [{ diff --git a/packages/babel-plugin-transform-parameters/test/fixtures/parameters/rest-nested-iife/output.js b/packages/babel-plugin-transform-parameters/test/fixtures/parameters/rest-nested-iife/output.js index d11588d86bb9..ad352262c590 100644 --- a/packages/babel-plugin-transform-parameters/test/fixtures/parameters/rest-nested-iife/output.js +++ b/packages/babel-plugin-transform-parameters/test/fixtures/parameters/rest-nested-iife/output.js @@ -1,3 +1,7 @@ +function _createSuper(Derived) { return function () { var Super = babelHelpers.getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = babelHelpers.getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return babelHelpers.possibleConstructorReturn(this, result); }; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + function broken(x) { if (true) { var Foo = @@ -7,9 +11,11 @@ function broken(x) { babelHelpers.inherits(Foo, _Bar); + var _super = _createSuper(Foo); + function Foo() { babelHelpers.classCallCheck(this, Foo); - return babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Foo).apply(this, arguments)); + return _super.apply(this, arguments); } return Foo; diff --git a/packages/babel-plugin-transform-parameters/test/fixtures/regression/6057-expanded/output.js b/packages/babel-plugin-transform-parameters/test/fixtures/regression/6057-expanded/output.js index 451673e683d4..840ecd0ea3f2 100644 --- a/packages/babel-plugin-transform-parameters/test/fixtures/regression/6057-expanded/output.js +++ b/packages/babel-plugin-transform-parameters/test/fixtures/regression/6057-expanded/output.js @@ -17,12 +17,16 @@ function _defineProperties(target, props) { for (var i = 0; i < props.length; i+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } -function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } -function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } @@ -34,9 +38,9 @@ var App = function (_Component) { _inherits(App, _Component); - function App() { - var _getPrototypeOf2; + var _super = _createSuper(App); + function App() { var _this; _classCallCheck(this, App); @@ -45,7 +49,7 @@ function (_Component) { args[_key] = arguments[_key]; } - _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(App)).call.apply(_getPrototypeOf2, [this].concat(args))); + _this = _super.call.apply(_super, [this].concat(args)); _defineProperty(_assertThisInitialized(_this), "exportType", ''); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/optimisation.react.constant-elements/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/optimisation.react.constant-elements/output.js index 1af954e46867..334a6695d2fe 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/optimisation.react.constant-elements/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/optimisation.react.constant-elements/output.js @@ -1,3 +1,7 @@ +function _createSuper(Derived) { return function () { var Super = babelHelpers.getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = babelHelpers.getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return babelHelpers.possibleConstructorReturn(this, result); }; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + var _ref = /*#__PURE__*/
@@ -13,9 +17,11 @@ function (_React$Component) { babelHelpers.inherits(App, _React$Component); + var _super = _createSuper(App); + function App() { babelHelpers.classCallCheck(this, App); - return babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(App).apply(this, arguments)); + return _super.apply(this, arguments); } babelHelpers.createClass(App, [{ diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejs-useES6Modules/output.mjs b/packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejs-useES6Modules/output.mjs index 828c9aa787ef..33e459db48e2 100644 --- a/packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejs-useES6Modules/output.mjs +++ b/packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejs-useES6Modules/output.mjs @@ -1,17 +1,24 @@ +import _Reflect$construct from "@babel/runtime-corejs2/core-js/reflect/construct"; import _classCallCheck from "@babel/runtime-corejs2/helpers/esm/classCallCheck"; import _possibleConstructorReturn from "@babel/runtime-corejs2/helpers/esm/possibleConstructorReturn"; import _getPrototypeOf from "@babel/runtime-corejs2/helpers/esm/getPrototypeOf"; import _inherits from "@babel/runtime-corejs2/helpers/esm/inherits"; +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(_Reflect$construct(Date, [], function () {})); return true; } catch (e) { return false; } } + let Foo = /*#__PURE__*/ function (_Bar) { _inherits(Foo, _Bar); + var _super = _createSuper(Foo); + function Foo() { _classCallCheck(this, Foo); - return _possibleConstructorReturn(this, _getPrototypeOf(Foo).apply(this, arguments)); + return _super.apply(this, arguments); } return Foo; diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejs/output.mjs b/packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejs/output.mjs index 44f4d72a0409..669829d14771 100644 --- a/packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejs/output.mjs +++ b/packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejs/output.mjs @@ -1,17 +1,24 @@ +import _Reflect$construct from "@babel/runtime-corejs2/core-js/reflect/construct"; import _classCallCheck from "@babel/runtime-corejs2/helpers/classCallCheck"; import _possibleConstructorReturn from "@babel/runtime-corejs2/helpers/possibleConstructorReturn"; import _getPrototypeOf from "@babel/runtime-corejs2/helpers/getPrototypeOf"; import _inherits from "@babel/runtime-corejs2/helpers/inherits"; +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(_Reflect$construct(Date, [], function () {})); return true; } catch (e) { return false; } } + let Foo = /*#__PURE__*/ function (_Bar) { _inherits(Foo, _Bar); + var _super = _createSuper(Foo); + function Foo() { _classCallCheck(this, Foo); - return _possibleConstructorReturn(this, _getPrototypeOf(Foo).apply(this, arguments)); + return _super.apply(this, arguments); } return Foo; diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/use-options/useESModules-cjs-auto/output.js b/packages/babel-plugin-transform-runtime/test/fixtures/use-options/useESModules-cjs-auto/output.js index 39882dcd466a..bbd058a6314e 100644 --- a/packages/babel-plugin-transform-runtime/test/fixtures/use-options/useESModules-cjs-auto/output.js +++ b/packages/babel-plugin-transform-runtime/test/fixtures/use-options/useESModules-cjs-auto/output.js @@ -6,6 +6,10 @@ var _getPrototypeOf = require("@babel/runtime/helpers/getPrototypeOf"); var _inherits = require("@babel/runtime/helpers/inherits"); +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + let Foo = /*#__PURE__*/ function (_Bar) { @@ -13,10 +17,12 @@ function (_Bar) { _inherits(Foo, _Bar); + var _super = _createSuper(Foo); + function Foo() { _classCallCheck(this, Foo); - return _possibleConstructorReturn(this, _getPrototypeOf(Foo).apply(this, arguments)); + return _super.apply(this, arguments); } return Foo; diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/use-options/useESModules-cjs/output.js b/packages/babel-plugin-transform-runtime/test/fixtures/use-options/useESModules-cjs/output.js index 39882dcd466a..bbd058a6314e 100644 --- a/packages/babel-plugin-transform-runtime/test/fixtures/use-options/useESModules-cjs/output.js +++ b/packages/babel-plugin-transform-runtime/test/fixtures/use-options/useESModules-cjs/output.js @@ -6,6 +6,10 @@ var _getPrototypeOf = require("@babel/runtime/helpers/getPrototypeOf"); var _inherits = require("@babel/runtime/helpers/inherits"); +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + let Foo = /*#__PURE__*/ function (_Bar) { @@ -13,10 +17,12 @@ function (_Bar) { _inherits(Foo, _Bar); + var _super = _createSuper(Foo); + function Foo() { _classCallCheck(this, Foo); - return _possibleConstructorReturn(this, _getPrototypeOf(Foo).apply(this, arguments)); + return _super.apply(this, arguments); } return Foo; diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/use-options/useESModules-mjs-auto/output.mjs b/packages/babel-plugin-transform-runtime/test/fixtures/use-options/useESModules-mjs-auto/output.mjs index 0247fa0b5556..ccf7b4246655 100644 --- a/packages/babel-plugin-transform-runtime/test/fixtures/use-options/useESModules-mjs-auto/output.mjs +++ b/packages/babel-plugin-transform-runtime/test/fixtures/use-options/useESModules-mjs-auto/output.mjs @@ -3,15 +3,21 @@ import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConst import _getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf"; import _inherits from "@babel/runtime/helpers/esm/inherits"; +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + let Foo = /*#__PURE__*/ function (_Bar) { _inherits(Foo, _Bar); + var _super = _createSuper(Foo); + function Foo() { _classCallCheck(this, Foo); - return _possibleConstructorReturn(this, _getPrototypeOf(Foo).apply(this, arguments)); + return _super.apply(this, arguments); } return Foo; diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/use-options/useESModules-mjs/output.mjs b/packages/babel-plugin-transform-runtime/test/fixtures/use-options/useESModules-mjs/output.mjs index 0247fa0b5556..ccf7b4246655 100644 --- a/packages/babel-plugin-transform-runtime/test/fixtures/use-options/useESModules-mjs/output.mjs +++ b/packages/babel-plugin-transform-runtime/test/fixtures/use-options/useESModules-mjs/output.mjs @@ -3,15 +3,21 @@ import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConst import _getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf"; import _inherits from "@babel/runtime/helpers/esm/inherits"; +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + let Foo = /*#__PURE__*/ function (_Bar) { _inherits(Foo, _Bar); + var _super = _createSuper(Foo); + function Foo() { _classCallCheck(this, Foo); - return _possibleConstructorReturn(this, _getPrototypeOf(Foo).apply(this, arguments)); + return _super.apply(this, arguments); } return Foo; diff --git a/packages/babel-plugin-transform-typescript/test/fixtures/class/parameter-properties-with-class-and-super/output.js b/packages/babel-plugin-transform-typescript/test/fixtures/class/parameter-properties-with-class-and-super/output.js index 0d266ddf94e6..7252b6af3e0a 100644 --- a/packages/babel-plugin-transform-typescript/test/fixtures/class/parameter-properties-with-class-and-super/output.js +++ b/packages/babel-plugin-transform-typescript/test/fixtures/class/parameter-properties-with-class-and-super/output.js @@ -1,9 +1,13 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } @@ -17,12 +21,14 @@ function (_Person) { _inherits(Employee, _Person); + var _super = _createSuper(Employee); + function Employee(name) { var _this; _classCallCheck(this, Employee); - _this = _possibleConstructorReturn(this, _getPrototypeOf(Employee).call(this)); + _this = _super.call(this); _this.name = name; return _this; } diff --git a/packages/babel-preset-env/test/fixtures/plugins-integration/issue-7527/output.js b/packages/babel-preset-env/test/fixtures/plugins-integration/issue-7527/output.js index d0111f1a27ab..02b1e3d9b476 100644 --- a/packages/babel-preset-env/test/fixtures/plugins-integration/issue-7527/output.js +++ b/packages/babel-preset-env/test/fixtures/plugins-integration/issue-7527/output.js @@ -4,6 +4,8 @@ function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterat function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { for (var l = arguments.length, args = new Array(l), i = 0; i < l; i++) { args[i] = arguments[i]; } var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, args, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } @@ -12,9 +14,9 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function" function _wrapNativeSuper(Class) { var _cache = typeof Map === "function" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== "function") { throw new TypeError("Super expression must either be null or a function"); } if (typeof _cache !== "undefined") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); } -function isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } +function _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); } -function _construct(Parent, args, Class) { if (isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); } +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _isNativeFunction(fn) { return Function.toString.call(fn).indexOf("[native code]") !== -1; } @@ -27,10 +29,12 @@ var MyDate = function (_Date) { _inherits(MyDate, _Date); + var _super = _createSuper(MyDate); + function MyDate(time) { _classCallCheck(this, MyDate); - return _possibleConstructorReturn(this, _getPrototypeOf(MyDate).call(this, time)); + return _super.call(this, time); } return MyDate;