mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 13:18:13 +00:00
LibJS: Add static initializers to classes
This commit is contained in:
parent
1245512c50
commit
6b2accce31
4 changed files with 134 additions and 13 deletions
|
@ -0,0 +1,48 @@
|
|||
test("basic functionality", () => {
|
||||
var called = false;
|
||||
class A {
|
||||
static {
|
||||
expect(called).toBeFalse();
|
||||
expect(this.name).toBe("A");
|
||||
called = true;
|
||||
}
|
||||
}
|
||||
|
||||
expect(called).toBeTrue();
|
||||
new A();
|
||||
expect(called).toBeTrue();
|
||||
});
|
||||
|
||||
test("called in order", () => {
|
||||
var i = 0;
|
||||
class A {
|
||||
static {
|
||||
expect(i).toBe(0);
|
||||
i++;
|
||||
}
|
||||
|
||||
static method() {
|
||||
return 2;
|
||||
}
|
||||
|
||||
static {
|
||||
expect(i).toBe(1);
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
expect(i).toBe(2);
|
||||
new A();
|
||||
expect(i).toBe(2);
|
||||
});
|
||||
|
||||
test("correct this", () => {
|
||||
var thisValue = null;
|
||||
class A {
|
||||
static {
|
||||
thisValue = this;
|
||||
}
|
||||
}
|
||||
|
||||
expect(thisValue).toBe(A);
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue