Support multiple static blocks (#12738)
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
class Foo {
|
||||
static bar = 42;
|
||||
static {
|
||||
this.foo = Foo.bar;
|
||||
}
|
||||
static bar = 42;
|
||||
}
|
||||
expect(Foo.foo).toBe(42);
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
class Foo {
|
||||
static bar = 42;
|
||||
static {
|
||||
this.foo = Foo.bar;
|
||||
}
|
||||
}
|
||||
expect(Foo.foo).toBe(42);
|
||||
@@ -0,0 +1,8 @@
|
||||
class Foo {
|
||||
static bar = 42;
|
||||
static #_ = (() => {
|
||||
this.foo = Foo.bar;
|
||||
})();
|
||||
}
|
||||
|
||||
expect(Foo.foo).toBe(42);
|
||||
@@ -1,7 +1,7 @@
|
||||
class Foo {
|
||||
static bar = 42;
|
||||
static {
|
||||
this.foo = this.bar;
|
||||
}
|
||||
static bar = 42;
|
||||
}
|
||||
expect(Foo.foo).toBe(42);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
class Foo {
|
||||
static bar = 42;
|
||||
static {
|
||||
this.foo = this.bar;
|
||||
}
|
||||
static bar = 42;
|
||||
}
|
||||
expect(Foo.foo).toBe(42);
|
||||
|
||||
@@ -1,8 +1,14 @@
|
||||
class Foo {
|
||||
static #bar = 21;
|
||||
static {
|
||||
this.foo = this.#bar + this.qux;
|
||||
this.foo = this.#bar;
|
||||
this.qux1 = this.qux;
|
||||
}
|
||||
static qux = 21;
|
||||
static {
|
||||
this.qux2 = this.qux;
|
||||
}
|
||||
}
|
||||
expect(Foo.foo).toBe(42);
|
||||
expect(Foo.foo).toBe(21);
|
||||
expect(Foo.qux1).toBe(undefined);
|
||||
expect(Foo.qux2).toBe(21);
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
class Foo {
|
||||
static #bar = 21;
|
||||
static {
|
||||
this.foo = this.#bar;
|
||||
this.qux1 = this.qux;
|
||||
}
|
||||
static qux = 21;
|
||||
static {
|
||||
this.qux2 = this.qux;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
class Foo {
|
||||
static #bar = 21;
|
||||
static #_ = (() => {
|
||||
this.foo = this.#bar;
|
||||
this.qux1 = this.qux;
|
||||
})();
|
||||
static qux = 21;
|
||||
static #_2 = (() => {
|
||||
this.qux2 = this.qux;
|
||||
})();
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
class Base {
|
||||
constructor() {
|
||||
this.Foo = class {
|
||||
static {
|
||||
this.foo = new.target;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
expect((new Base).Foo.foo).toBe(undefined);
|
||||
@@ -0,0 +1,10 @@
|
||||
class Base {
|
||||
constructor() {
|
||||
this.Foo = class {
|
||||
static {
|
||||
this.foo = new.target;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
expect((new Base).Foo.foo).toBe(undefined);
|
||||
@@ -0,0 +1,12 @@
|
||||
class Base {
|
||||
constructor() {
|
||||
this.Foo = class {
|
||||
static #_ = (() => {
|
||||
this.foo = new.target;
|
||||
})();
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
expect(new Base().Foo.foo).toBe(undefined);
|
||||
@@ -0,0 +1,10 @@
|
||||
class Base {
|
||||
constructor() {
|
||||
this.Foo = class {
|
||||
static {
|
||||
this.foo = new.target;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
expect((new Base).Foo.foo).toBe(undefined);
|
||||
@@ -0,0 +1,10 @@
|
||||
class Base {
|
||||
constructor() {
|
||||
this.Foo = class {
|
||||
static {
|
||||
this.foo = new.target;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
expect((new Base).Foo.foo).toBe(undefined);
|
||||
@@ -1,7 +1,7 @@
|
||||
class Foo {
|
||||
static bar = 42;
|
||||
static {
|
||||
this.foo = Foo.bar;
|
||||
}
|
||||
static bar = 42;
|
||||
}
|
||||
expect(Foo.foo).toBe(42);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
class Foo {
|
||||
static bar = 42;
|
||||
static {
|
||||
this.foo = Foo.bar;
|
||||
}
|
||||
static bar = 42;
|
||||
}
|
||||
expect(Foo.foo).toBe(42);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
class Foo {
|
||||
static bar = 42;
|
||||
static {
|
||||
this.foo = this.bar;
|
||||
}
|
||||
static bar = 42;
|
||||
}
|
||||
expect(Foo.foo).toBe(42);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
class Foo {
|
||||
static bar = 42;
|
||||
static {
|
||||
this.foo = this.bar;
|
||||
}
|
||||
static bar = 42;
|
||||
}
|
||||
expect(Foo.foo).toBe(42);
|
||||
|
||||
@@ -1,8 +1,14 @@
|
||||
class Foo {
|
||||
static #bar = 21;
|
||||
static {
|
||||
this.foo = this.#bar + this.qux;
|
||||
this.foo = this.#bar;
|
||||
this.qux1 = this.qux;
|
||||
}
|
||||
static qux = 21;
|
||||
static {
|
||||
this.qux2 = this.qux;
|
||||
}
|
||||
}
|
||||
expect(Foo.foo).toBe(42);
|
||||
expect(Foo.foo).toBe(21);
|
||||
expect(Foo.qux1).toBe(undefined);
|
||||
expect(Foo.qux2).toBe(21);
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
class Foo {
|
||||
static #bar = 21;
|
||||
static {
|
||||
this.foo = this.#bar;
|
||||
this.qux1 = this.qux;
|
||||
}
|
||||
static qux = 21;
|
||||
static {
|
||||
this.qux2 = this.qux;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
var _bar = babelHelpers.classPrivateFieldLooseKey("bar");
|
||||
|
||||
var _ = babelHelpers.classPrivateFieldLooseKey("_");
|
||||
|
||||
var _2 = babelHelpers.classPrivateFieldLooseKey("_2");
|
||||
|
||||
class Foo {}
|
||||
|
||||
Object.defineProperty(Foo, _bar, {
|
||||
writable: true,
|
||||
value: 21
|
||||
});
|
||||
Object.defineProperty(Foo, _, {
|
||||
writable: true,
|
||||
value: (() => {
|
||||
Foo.foo = babelHelpers.classPrivateFieldLooseBase(Foo, _bar)[_bar];
|
||||
Foo.qux1 = Foo.qux;
|
||||
})()
|
||||
});
|
||||
Foo.qux = 21;
|
||||
Object.defineProperty(Foo, _2, {
|
||||
writable: true,
|
||||
value: (() => {
|
||||
Foo.qux2 = Foo.qux;
|
||||
})()
|
||||
});
|
||||
10
packages/babel-plugin-proposal-class-static-block/test/fixtures/integration/.new-target/exec.js
vendored
Normal file
10
packages/babel-plugin-proposal-class-static-block/test/fixtures/integration/.new-target/exec.js
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
class Base {
|
||||
constructor() {
|
||||
this.Foo = class {
|
||||
static {
|
||||
this.foo = new.target;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
expect((new Base).Foo.foo).toBe(undefined);
|
||||
11
packages/babel-plugin-proposal-class-static-block/test/fixtures/integration/.new-target/input.js
vendored
Normal file
11
packages/babel-plugin-proposal-class-static-block/test/fixtures/integration/.new-target/input.js
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
class Base {
|
||||
constructor() {
|
||||
this.Foo = class {
|
||||
static {
|
||||
// fixme: new.target should be undefined after transformed
|
||||
this.foo = new.target;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
expect((new Base).Foo.foo).toBe(undefined);
|
||||
@@ -1,7 +1,7 @@
|
||||
class Foo {
|
||||
static bar = 42;
|
||||
static {
|
||||
this.foo = Foo.bar;
|
||||
}
|
||||
static bar = 42;
|
||||
}
|
||||
expect(Foo.foo).toBe(42);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
class Foo {
|
||||
static bar = 42;
|
||||
static {
|
||||
this.foo = Foo.bar;
|
||||
}
|
||||
static bar = 42;
|
||||
}
|
||||
expect(Foo.foo).toBe(42);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
class Foo {
|
||||
static bar = 42;
|
||||
static {
|
||||
this.foo = this.bar;
|
||||
}
|
||||
static bar = 42;
|
||||
}
|
||||
expect(Foo.foo).toBe(42);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
class Foo {
|
||||
static bar = 42;
|
||||
static {
|
||||
this.foo = this.bar;
|
||||
}
|
||||
static bar = 42;
|
||||
}
|
||||
expect(Foo.foo).toBe(42);
|
||||
|
||||
@@ -1,8 +1,14 @@
|
||||
class Foo {
|
||||
static #bar = 21;
|
||||
static {
|
||||
this.foo = this.#bar + this.qux;
|
||||
this.foo = this.#bar;
|
||||
this.qux1 = this.qux;
|
||||
}
|
||||
static qux = 21;
|
||||
static {
|
||||
this.qux2 = this.qux;
|
||||
}
|
||||
}
|
||||
expect(Foo.foo).toBe(42);
|
||||
expect(Foo.foo).toBe(21);
|
||||
expect(Foo.qux1).toBe(undefined);
|
||||
expect(Foo.qux2).toBe(21);
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
class Foo {
|
||||
static #bar = 21;
|
||||
static {
|
||||
this.foo = this.#bar;
|
||||
this.qux1 = this.qux;
|
||||
}
|
||||
static qux = 21;
|
||||
static {
|
||||
this.qux2 = this.qux;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
class Foo {}
|
||||
|
||||
var _bar = {
|
||||
writable: true,
|
||||
value: 21
|
||||
};
|
||||
var _ = {
|
||||
writable: true,
|
||||
value: (() => {
|
||||
Foo.foo = babelHelpers.classStaticPrivateFieldSpecGet(Foo, Foo, _bar);
|
||||
Foo.qux1 = Foo.qux;
|
||||
})()
|
||||
};
|
||||
babelHelpers.defineProperty(Foo, "qux", 21);
|
||||
var _2 = {
|
||||
writable: true,
|
||||
value: (() => {
|
||||
Foo.qux2 = Foo.qux;
|
||||
})()
|
||||
};
|
||||
Reference in New Issue
Block a user