Implement assumptions defined in the babel/rfcs#5 RFC

- `mutableTemplateObject` and `ignoreToPrimitiveHint` (#12408)
- `setClassMethods` (#12407)
- `setComputedProperties` (#12490)
- `ignoreFunctionLength` (#12491)
- `noDocumentAll` (#12481)
- `iterableIsArray` and `arrayLikeIsIterable` (#12489)
- `pureGetters` (#12504)
- `skipForOfIteratorClosing` (#12496)
- `objectRestNoSymbols`, `setSpreadProperties` and `pureGetters` (#12505)
- `noNewArrows` (#12613, #12793)
- `setPublicClassFields` and `privateFieldsAsProperties` (#12497)
- `constantReexports` and `enumerableModuleMeta` (#12618)
- `constantSuper`, `superIsCallableConstructor` and `noClassCalls` (#12726)

Co-authored-by: Justin Ridgewell <justin@ridgewell.name>
Co-authored-by: Huáng Jùnliàng <JLHwung@users.noreply.github.com>
This commit is contained in:
Nicolò Ribaudo
2020-12-11 20:28:38 +01:00
parent 7965c15557
commit 6ef7b51a11
586 changed files with 5747 additions and 201 deletions

View File

@@ -0,0 +1,13 @@
class Test extends Foo {
constructor() {
woops.super.test();
super();
super.test();
super(...arguments);
super("test", ...arguments);
super.test(...arguments);
super.test("test", ...arguments);
}
}

View File

@@ -0,0 +1,30 @@
var Test = /*#__PURE__*/function (_Foo) {
"use strict";
babelHelpers.inherits(Test, _Foo);
var _super = babelHelpers.createSuper(Test);
function Test() {
var _Foo$prototype$test;
var _this;
babelHelpers.classCallCheck(this, Test);
woops.super.test();
_this = _super.call(this);
_Foo.prototype.test.call(babelHelpers.assertThisInitialized(_this));
_this = _super.apply(this, arguments);
_this = _super.call.apply(_super, [this, "test"].concat(Array.prototype.slice.call(arguments)));
_Foo.prototype.test.apply(babelHelpers.assertThisInitialized(_this), arguments);
(_Foo$prototype$test = _Foo.prototype.test).call.apply(_Foo$prototype$test, [babelHelpers.assertThisInitialized(_this), "test"].concat(Array.prototype.slice.call(arguments)));
return _this;
}
return Test;
}(Foo);

View File

@@ -0,0 +1,7 @@
class Test extends Foo {
constructor() {
super();
super.test;
super.test.whatever;
}
}

View File

@@ -0,0 +1,19 @@
var Test = /*#__PURE__*/function (_Foo) {
"use strict";
babelHelpers.inherits(Test, _Foo);
var _super = babelHelpers.createSuper(Test);
function Test() {
var _this;
babelHelpers.classCallCheck(this, Test);
_this = _super.call(this);
_Foo.prototype.test;
_Foo.prototype.test.whatever;
return _this;
}
return Test;
}(Foo);

View File

@@ -0,0 +1,6 @@
class Test extends Foo {
constructor() {
super.foo?.bar;
super.foo?.();
}
}

View File

@@ -0,0 +1,10 @@
{
"plugins": [
["external-helpers", { "helperVersion": "7.100.0" }],
["proposal-optional-chaining", { "loose": true }],
"transform-function-name",
["transform-classes", { "loose": true }],
["transform-spread", { "loose": true }],
"transform-block-scoping"
]
}

View File

@@ -0,0 +1,17 @@
var Test = /*#__PURE__*/function (_Foo) {
"use strict";
babelHelpers.inheritsLoose(Test, _Foo);
function Test() {
var _Foo$prototype$foo, _Foo$prototype$foo2;
var _this;
(_Foo$prototype$foo = _Foo.prototype.foo) == null ? void 0 : _Foo$prototype$foo.bar;
(_Foo$prototype$foo2 = _Foo.prototype.foo) == null ? void 0 : _Foo$prototype$foo2.call(babelHelpers.assertThisInitialized(_this));
return babelHelpers.assertThisInitialized(_this);
}
return Test;
}(Foo);

View File

@@ -0,0 +1,11 @@
class Test extends Foo {
constructor() {
super();
super.test.whatever();
super.test();
}
static test() {
return super.wow();
}
}

View File

@@ -0,0 +1,28 @@
var Test = /*#__PURE__*/function (_Foo) {
"use strict";
babelHelpers.inherits(Test, _Foo);
var _super = babelHelpers.createSuper(Test);
function Test() {
var _this;
babelHelpers.classCallCheck(this, Test);
_this = _super.call(this);
_Foo.prototype.test.whatever();
_Foo.prototype.test.call(babelHelpers.assertThisInitialized(_this));
return _this;
}
babelHelpers.createClass(Test, null, [{
key: "test",
value: function test() {
return _Foo.wow.call(this);
}
}]);
return Test;
}(Foo);

View File

@@ -0,0 +1,17 @@
class Test {
constructor() {
return super.constructor;
}
static test() {
return super.constructor;
}
}
// Instances
expect(Object.getPrototypeOf(Test.prototype)).toBe(Object.prototype);
expect(new Test()).toBe(Object);
// Static
expect(Object.getPrototypeOf(Test)).toBe(Function.prototype);
expect(Test.test()).toBe(Function);

View File

@@ -0,0 +1,23 @@
var Test = /*#__PURE__*/function () {
"use strict";
function Test() {
babelHelpers.classCallCheck(this, Test);
return Object.prototype.constructor;
}
babelHelpers.createClass(Test, null, [{
key: "test",
value: function test() {
return Function.prototype.constructor;
}
}]);
return Test;
}(); // Instances
expect(Object.getPrototypeOf(Test.prototype)).toBe(Object.prototype);
expect(new Test()).toBe(Object); // Static
expect(Object.getPrototypeOf(Test)).toBe(Function.prototype);
expect(Test.test()).toBe(Function);

View File

@@ -0,0 +1,12 @@
{
"plugins": [
["external-helpers", { "helperVersion": "7.100.0" }],
"transform-function-name",
"transform-classes",
["transform-spread", { "loose": true }],
"transform-block-scoping"
],
"assumptions": {
"constantSuper": true
}
}

View File

@@ -0,0 +1,5 @@
class Test {
constructor() {
super.hasOwnProperty("test");
}
}

View File

@@ -0,0 +1,6 @@
var Test = function Test() {
"use strict";
babelHelpers.classCallCheck(this, Test);
Object.prototype.hasOwnProperty.call(this, "test");
};

View File

@@ -0,0 +1 @@
class A {}

View File

@@ -0,0 +1,3 @@
var A = function A() {
"use strict";
};

View File

@@ -0,0 +1,12 @@
{
"plugins": [
["external-helpers", { "helperVersion": "7.100.0" }],
"transform-function-name",
"transform-classes",
["transform-spread", { "loose": true }],
"transform-block-scoping"
],
"assumptions": {
"noClassCalls": true
}
}

View File

@@ -0,0 +1,11 @@
class A {
constructor() {
console.log('a');
}
}
class B {
b() {
console.log('b');
}
}

View File

@@ -0,0 +1,19 @@
var A = function A() {
"use strict";
console.log('a');
};
var B = /*#__PURE__*/function () {
"use strict";
function B() {}
babelHelpers.createClass(B, [{
key: "b",
value: function b() {
console.log('b');
}
}]);
return B;
}();

View File

@@ -0,0 +1,8 @@
class B {}
class A extends B {
constructor(track) {
if (track !== undefined) super(track);
else super();
}
}

View File

@@ -0,0 +1,20 @@
var B = function B() {
"use strict";
};
var A = /*#__PURE__*/function (_B) {
"use strict";
babelHelpers.inherits(A, _B);
var _super = babelHelpers.createSuper(A);
function A(track) {
var _this;
if (track !== undefined) _this = _super.call(this, track);else _this = _super.call(this);
return babelHelpers.possibleConstructorReturn(_this);
}
return A;
}(B);

View File

@@ -0,0 +1,5 @@
class Foo {
"bar"() {
}
}

View File

@@ -0,0 +1,13 @@
var Foo = /*#__PURE__*/function () {
"use strict";
function Foo() {
babelHelpers.classCallCheck(this, Foo);
}
var _proto = Foo.prototype;
_proto["bar"] = function bar() {};
return Foo;
}();

View File

@@ -0,0 +1,6 @@
// @flow
class C {
m(x: number): string {
return 'a';
}
}

View File

@@ -0,0 +1,10 @@
{
"plugins": [
"external-helpers",
"transform-function-name",
["transform-classes", { "loose": true }],
"transform-spread",
"transform-block-scoping",
"syntax-flow"
]
}

View File

@@ -0,0 +1,14 @@
// @flow
var C = /*#__PURE__*/function () {
"use strict";
function C() {}
var _proto = C.prototype;
_proto.m = function m(x: number): string {
return 'a';
};
return C;
}();

View File

@@ -0,0 +1,5 @@
class Test {
a() {}
static b() {}
c() {}
}

View File

@@ -0,0 +1,17 @@
var Test = /*#__PURE__*/function () {
"use strict";
function Test() {
babelHelpers.classCallCheck(this, Test);
}
var _proto = Test.prototype;
_proto.a = function a() {};
Test.b = function b() {};
_proto.c = function c() {};
return Test;
}();

View File

@@ -0,0 +1,12 @@
{
"plugins": [
["external-helpers", { "helperVersion": "7.100.0" }],
"transform-function-name",
"transform-classes",
["transform-spread", { "loose": true }],
"transform-block-scoping"
],
"assumptions": {
"setClassMethods": true
}
}

View File

@@ -0,0 +1,7 @@
"use strict";
class Foo {
method() {
}
}

View File

@@ -0,0 +1,13 @@
"use strict";
var Foo = /*#__PURE__*/function () {
function Foo() {
babelHelpers.classCallCheck(this, Foo);
}
var _proto = Foo.prototype;
_proto.method = function method() {};
return Foo;
}();

View File

@@ -0,0 +1,12 @@
{
"plugins": [
["external-helpers", { "helperVersion": "7.100.0" }],
"transform-function-name",
"transform-classes",
["transform-spread", { "loose": true }],
"transform-block-scoping"
],
"assumptions": {
"superIsCallableConstructor": true
}
}

View File

@@ -0,0 +1,7 @@
class BaseController extends Chaplin.Controller {
}
class BaseController2 extends Chaplin.Controller.Another {
}

View File

@@ -0,0 +1,25 @@
var BaseController = /*#__PURE__*/function (_Chaplin$Controller) {
"use strict";
babelHelpers.inherits(BaseController, _Chaplin$Controller);
function BaseController() {
babelHelpers.classCallCheck(this, BaseController);
return _Chaplin$Controller.apply(this, arguments) || this;
}
return BaseController;
}(Chaplin.Controller);
var BaseController2 = /*#__PURE__*/function (_Chaplin$Controller$A) {
"use strict";
babelHelpers.inherits(BaseController2, _Chaplin$Controller$A);
function BaseController2() {
babelHelpers.classCallCheck(this, BaseController2);
return _Chaplin$Controller$A.apply(this, arguments) || this;
}
return BaseController2;
}(Chaplin.Controller.Another);

View File

@@ -0,0 +1,9 @@
class Test extends Foo {
constructor() {
super();
this;
this.prop = 1;
}
}

View File

@@ -0,0 +1,17 @@
var Test = /*#__PURE__*/function (_Foo) {
"use strict";
babelHelpers.inherits(Test, _Foo);
function Test() {
var _this;
babelHelpers.classCallCheck(this, Test);
_this = _Foo.call(this) || this;
babelHelpers.assertThisInitialized(_this);
_this.prop = 1;
return _this;
}
return Test;
}(Foo);

View File

@@ -0,0 +1 @@
class Test extends Foo { }

View File

@@ -0,0 +1,12 @@
var Test = /*#__PURE__*/function (_Foo) {
"use strict";
babelHelpers.inherits(Test, _Foo);
function Test() {
babelHelpers.classCallCheck(this, Test);
return _Foo.apply(this, arguments) || this;
}
return Test;
}(Foo);