Tim McClure 3e4889d649 Class Private Static Accessors (#10217)
* Remove error for static private accessors

* Private static accessors strict

* Add loose mode support

* Move `value` decl for early return

* Reuse getter/setter template

* Reuse getter/setter templates

* Use `buildUndefinedNode` in accessor templates

* Extract `isAccessor` variable
2019-09-06 18:08:10 +02:00

46 lines
1.0 KiB
JavaScript

class Cl {
static #privateField = "top secret string";
static publicField = "not secret string";
static get #privateFieldValue() {
return Cl.#privateField;
}
static set #privateFieldValue(newValue) {
Cl.#privateField = newValue;
}
static publicGetPrivateField() {
return Cl.#privateFieldValue;
}
static publicSetPrivateField(newValue) {
Cl.#privateFieldValue = newValue;
}
static get publicFieldValue() {
return Cl.publicField;
}
static set publicFieldValue(newValue) {
Cl.publicField = newValue;
}
static testUpdates() {
Cl.#privateField = 0;
Cl.publicField = 0;
Cl.#privateFieldValue = Cl.#privateFieldValue++;
Cl.publicFieldValue = Cl.publicFieldValue++;
expect(Cl.#privateField).toEqual(Cl.publicField);
++Cl.#privateFieldValue;
++Cl.publicFieldValue;
expect(Cl.#privateField).toEqual(Cl.publicField);
Cl.#privateFieldValue += 1;
Cl.publicFieldValue += 1;
expect(Cl.#privateField).toEqual(Cl.publicField);
}
}
Cl.testUpdates();