mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-07-29 04:09:13 +00:00
LibJS: Add static initializers to classes
This commit is contained in:
parent
1245512c50
commit
6b2accce31
Notes:
sideshowbarker
2024-07-18 02:08:17 +09:00
Author: https://github.com/davidot
Commit: 6b2accce31
Pull-request: https://github.com/SerenityOS/serenity/pull/10470
Issue: https://github.com/SerenityOS/serenity/issues/7044
Issue: https://github.com/SerenityOS/serenity/issues/8574
Reviewed-by: https://github.com/linusg
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