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
This commit is contained in:
committed by
Nicolò Ribaudo
parent
da0af5fd99
commit
3e4889d649
@@ -1,6 +1,7 @@
|
||||
class Cl {
|
||||
constructor() {
|
||||
Object.defineProperty(this, _privateFieldValue, {
|
||||
get: void 0,
|
||||
set: _set_privateFieldValue
|
||||
});
|
||||
Object.defineProperty(this, _privateField, {
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
class Cl {
|
||||
constructor() {
|
||||
Object.defineProperty(this, _privateFieldValue, {
|
||||
get: _get_privateFieldValue
|
||||
get: _get_privateFieldValue,
|
||||
set: void 0
|
||||
});
|
||||
Object.defineProperty(this, _privateField, {
|
||||
writable: true,
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
class Cl {
|
||||
constructor() {
|
||||
_privateFieldValue.set(this, {
|
||||
get: void 0,
|
||||
set: _set_privateFieldValue
|
||||
});
|
||||
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
class Cl {
|
||||
constructor() {
|
||||
_privateFieldValue.set(this, {
|
||||
get: _get_privateFieldValue
|
||||
get: _get_privateFieldValue,
|
||||
set: void 0
|
||||
});
|
||||
|
||||
_privateField.set(this, {
|
||||
|
||||
@@ -20,6 +20,10 @@ var _getA = babelHelpers.classPrivateFieldLooseKey("getA");
|
||||
|
||||
var _getB = babelHelpers.classPrivateFieldLooseKey("getB");
|
||||
|
||||
var _getB2 = function _getB2() {
|
||||
return this.b;
|
||||
};
|
||||
|
||||
var _getA2 = function _getA2() {
|
||||
return A.a;
|
||||
};
|
||||
@@ -27,11 +31,6 @@ var _getA2 = function _getA2() {
|
||||
Object.defineProperty(B, _getA, {
|
||||
value: _getA2
|
||||
});
|
||||
|
||||
var _getB2 = function _getB2() {
|
||||
return this.b;
|
||||
};
|
||||
|
||||
Object.defineProperty(B, _getB, {
|
||||
value: _getB2
|
||||
});
|
||||
|
||||
@@ -16,12 +16,12 @@ class B extends A {
|
||||
|
||||
}
|
||||
|
||||
var _getA = function _getA() {
|
||||
return babelHelpers.get(babelHelpers.getPrototypeOf(B), "a", this);
|
||||
};
|
||||
|
||||
var _getB = function _getB() {
|
||||
return this.b;
|
||||
};
|
||||
|
||||
var _getA = function _getA() {
|
||||
return babelHelpers.get(babelHelpers.getPrototypeOf(B), "a", this);
|
||||
};
|
||||
|
||||
var [getA, getB] = B.extract();
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
class Cl {
|
||||
static #PRIVATE_STATIC_FIELD = "top secret string";
|
||||
|
||||
static get #privateStaticFieldValue() {
|
||||
return Cl.#PRIVATE_STATIC_FIELD;
|
||||
}
|
||||
|
||||
static set #privateStaticFieldValue(newValue) {
|
||||
Cl.#PRIVATE_STATIC_FIELD = `Updated: ${newValue}`;
|
||||
}
|
||||
|
||||
static getValue() {
|
||||
return Cl.#privateStaticFieldValue;
|
||||
}
|
||||
|
||||
static setValue() {
|
||||
Cl.#privateStaticFieldValue = "dank";
|
||||
}
|
||||
}
|
||||
|
||||
expect(Cl.getValue()).toEqual("top secret string");
|
||||
Cl.setValue();
|
||||
expect(Cl.getValue()).toEqual("Updated: dank");
|
||||
@@ -0,0 +1,19 @@
|
||||
class Cl {
|
||||
static #PRIVATE_STATIC_FIELD = "top secret string";
|
||||
|
||||
static get #privateStaticFieldValue() {
|
||||
return Cl.#PRIVATE_STATIC_FIELD;
|
||||
}
|
||||
|
||||
static set #privateStaticFieldValue(newValue) {
|
||||
Cl.#PRIVATE_STATIC_FIELD = `Updated: ${newValue}`;
|
||||
}
|
||||
|
||||
static getValue() {
|
||||
return Cl.#privateStaticFieldValue;
|
||||
}
|
||||
|
||||
static setValue() {
|
||||
Cl.#privateStaticFieldValue = "dank";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
class Cl {
|
||||
static getValue() {
|
||||
return babelHelpers.classPrivateFieldLooseBase(Cl, _privateStaticFieldValue)[_privateStaticFieldValue];
|
||||
}
|
||||
|
||||
static setValue() {
|
||||
babelHelpers.classPrivateFieldLooseBase(Cl, _privateStaticFieldValue)[_privateStaticFieldValue] = "dank";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
var _PRIVATE_STATIC_FIELD = babelHelpers.classPrivateFieldLooseKey("PRIVATE_STATIC_FIELD");
|
||||
|
||||
var _privateStaticFieldValue = babelHelpers.classPrivateFieldLooseKey("privateStaticFieldValue");
|
||||
|
||||
var _set_privateStaticFieldValue = function (newValue) {
|
||||
babelHelpers.classPrivateFieldLooseBase(Cl, _PRIVATE_STATIC_FIELD)[_PRIVATE_STATIC_FIELD] = `Updated: ${newValue}`;
|
||||
};
|
||||
|
||||
var _get_privateStaticFieldValue = function () {
|
||||
return babelHelpers.classPrivateFieldLooseBase(Cl, _PRIVATE_STATIC_FIELD)[_PRIVATE_STATIC_FIELD];
|
||||
};
|
||||
|
||||
Object.defineProperty(Cl, _PRIVATE_STATIC_FIELD, {
|
||||
writable: true,
|
||||
value: "top secret string"
|
||||
});
|
||||
Object.defineProperty(Cl, _privateStaticFieldValue, {
|
||||
get: _get_privateStaticFieldValue,
|
||||
set: _set_privateStaticFieldValue
|
||||
});
|
||||
@@ -0,0 +1,13 @@
|
||||
class Cl {
|
||||
static #PRIVATE_STATIC_FIELD = 0;
|
||||
|
||||
static set #privateStaticFieldValue(newValue) {
|
||||
Cl.#PRIVATE_STATIC_FIELD = newValue;
|
||||
}
|
||||
|
||||
static getPrivateStaticFieldValue() {
|
||||
return Cl.#privateStaticFieldValue;
|
||||
}
|
||||
}
|
||||
|
||||
expect(Cl.getPrivateStaticFieldValue()).toBeUndefined();
|
||||
@@ -0,0 +1,11 @@
|
||||
class Cl {
|
||||
static #PRIVATE_STATIC_FIELD = 0;
|
||||
|
||||
static set #privateStaticFieldValue(newValue) {
|
||||
Cl.#PRIVATE_STATIC_FIELD = newValue;
|
||||
}
|
||||
|
||||
static getPrivateStaticFieldValue() {
|
||||
return Cl.#privateStaticFieldValue;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
class Cl {
|
||||
static getPrivateStaticFieldValue() {
|
||||
return babelHelpers.classPrivateFieldLooseBase(Cl, _privateStaticFieldValue)[_privateStaticFieldValue];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
var _PRIVATE_STATIC_FIELD = babelHelpers.classPrivateFieldLooseKey("PRIVATE_STATIC_FIELD");
|
||||
|
||||
var _privateStaticFieldValue = babelHelpers.classPrivateFieldLooseKey("privateStaticFieldValue");
|
||||
|
||||
var _set_privateStaticFieldValue = function (newValue) {
|
||||
babelHelpers.classPrivateFieldLooseBase(Cl, _PRIVATE_STATIC_FIELD)[_PRIVATE_STATIC_FIELD] = newValue;
|
||||
};
|
||||
|
||||
Object.defineProperty(Cl, _PRIVATE_STATIC_FIELD, {
|
||||
writable: true,
|
||||
value: 0
|
||||
});
|
||||
Object.defineProperty(Cl, _privateStaticFieldValue, {
|
||||
get: void 0,
|
||||
set: _set_privateStaticFieldValue
|
||||
});
|
||||
14
packages/babel-plugin-proposal-private-methods/test/fixtures/static-accessors-loose/options.json
vendored
Normal file
14
packages/babel-plugin-proposal-private-methods/test/fixtures/static-accessors-loose/options.json
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"plugins": [
|
||||
[
|
||||
"external-helpers",
|
||||
{
|
||||
"helperVersion": "7.1000.0"
|
||||
}
|
||||
],
|
||||
["proposal-private-methods", { "loose": true }],
|
||||
["proposal-class-properties", { "loose": true }],
|
||||
"transform-block-scoping",
|
||||
"syntax-class-properties"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
class Cl {
|
||||
static #PRIVATE_STATIC_FIELD = 0;
|
||||
|
||||
static get #privateStaticFieldValue() {
|
||||
return Cl.#PRIVATE_STATIC_FIELD;
|
||||
}
|
||||
|
||||
static setPrivateStaticFieldValue() {
|
||||
Cl.#privateStaticFieldValue = 1;
|
||||
}
|
||||
}
|
||||
|
||||
expect(() => Cl.setPrivateStaticFieldValue()).toThrow(TypeError);
|
||||
@@ -0,0 +1,11 @@
|
||||
class Cl {
|
||||
static #PRIVATE_STATIC_FIELD = 0;
|
||||
|
||||
static get #privateStaticFieldValue() {
|
||||
return Cl.#PRIVATE_STATIC_FIELD;
|
||||
}
|
||||
|
||||
static setPrivateStaticFieldValue() {
|
||||
Cl.#privateStaticFieldValue = 1;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
class Cl {
|
||||
static setPrivateStaticFieldValue() {
|
||||
babelHelpers.classPrivateFieldLooseBase(Cl, _privateStaticFieldValue)[_privateStaticFieldValue] = 1;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
var _PRIVATE_STATIC_FIELD = babelHelpers.classPrivateFieldLooseKey("PRIVATE_STATIC_FIELD");
|
||||
|
||||
var _privateStaticFieldValue = babelHelpers.classPrivateFieldLooseKey("privateStaticFieldValue");
|
||||
|
||||
var _get_privateStaticFieldValue = function () {
|
||||
return babelHelpers.classPrivateFieldLooseBase(Cl, _PRIVATE_STATIC_FIELD)[_PRIVATE_STATIC_FIELD];
|
||||
};
|
||||
|
||||
Object.defineProperty(Cl, _PRIVATE_STATIC_FIELD, {
|
||||
writable: true,
|
||||
value: 0
|
||||
});
|
||||
Object.defineProperty(Cl, _privateStaticFieldValue, {
|
||||
get: _get_privateStaticFieldValue,
|
||||
set: void 0
|
||||
});
|
||||
@@ -0,0 +1,46 @@
|
||||
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();
|
||||
@@ -0,0 +1,44 @@
|
||||
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++;
|
||||
|
||||
++Cl.#privateFieldValue;
|
||||
++Cl.publicFieldValue;
|
||||
|
||||
Cl.#privateFieldValue += 1;
|
||||
Cl.publicFieldValue += 1;
|
||||
|
||||
Cl.#privateFieldValue = -(Cl.#privateFieldValue ** Cl.#privateFieldValue);
|
||||
Cl.publicFieldValue = -(Cl.publicFieldValue ** Cl.publicFieldValue);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
class Cl {
|
||||
static publicGetPrivateField() {
|
||||
return babelHelpers.classPrivateFieldLooseBase(Cl, _privateFieldValue)[_privateFieldValue];
|
||||
}
|
||||
|
||||
static publicSetPrivateField(newValue) {
|
||||
babelHelpers.classPrivateFieldLooseBase(Cl, _privateFieldValue)[_privateFieldValue] = newValue;
|
||||
}
|
||||
|
||||
static get publicFieldValue() {
|
||||
return Cl.publicField;
|
||||
}
|
||||
|
||||
static set publicFieldValue(newValue) {
|
||||
Cl.publicField = newValue;
|
||||
}
|
||||
|
||||
static testUpdates() {
|
||||
babelHelpers.classPrivateFieldLooseBase(Cl, _privateField)[_privateField] = 0;
|
||||
Cl.publicField = 0;
|
||||
babelHelpers.classPrivateFieldLooseBase(Cl, _privateFieldValue)[_privateFieldValue] = babelHelpers.classPrivateFieldLooseBase(Cl, _privateFieldValue)[_privateFieldValue]++;
|
||||
Cl.publicFieldValue = Cl.publicFieldValue++;
|
||||
++babelHelpers.classPrivateFieldLooseBase(Cl, _privateFieldValue)[_privateFieldValue];
|
||||
++Cl.publicFieldValue;
|
||||
babelHelpers.classPrivateFieldLooseBase(Cl, _privateFieldValue)[_privateFieldValue] += 1;
|
||||
Cl.publicFieldValue += 1;
|
||||
babelHelpers.classPrivateFieldLooseBase(Cl, _privateFieldValue)[_privateFieldValue] = -(babelHelpers.classPrivateFieldLooseBase(Cl, _privateFieldValue)[_privateFieldValue] ** babelHelpers.classPrivateFieldLooseBase(Cl, _privateFieldValue)[_privateFieldValue]);
|
||||
Cl.publicFieldValue = -(Cl.publicFieldValue ** Cl.publicFieldValue);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
var _privateField = babelHelpers.classPrivateFieldLooseKey("privateField");
|
||||
|
||||
var _privateFieldValue = babelHelpers.classPrivateFieldLooseKey("privateFieldValue");
|
||||
|
||||
var _set_privateFieldValue = function (newValue) {
|
||||
babelHelpers.classPrivateFieldLooseBase(Cl, _privateField)[_privateField] = newValue;
|
||||
};
|
||||
|
||||
var _get_privateFieldValue = function () {
|
||||
return babelHelpers.classPrivateFieldLooseBase(Cl, _privateField)[_privateField];
|
||||
};
|
||||
|
||||
Object.defineProperty(Cl, _privateField, {
|
||||
writable: true,
|
||||
value: "top secret string"
|
||||
});
|
||||
Cl.publicField = "not secret string";
|
||||
Object.defineProperty(Cl, _privateFieldValue, {
|
||||
get: _get_privateFieldValue,
|
||||
set: _set_privateFieldValue
|
||||
});
|
||||
23
packages/babel-plugin-proposal-private-methods/test/fixtures/static-accessors/basic/exec.js
vendored
Normal file
23
packages/babel-plugin-proposal-private-methods/test/fixtures/static-accessors/basic/exec.js
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
class Cl {
|
||||
static #PRIVATE_STATIC_FIELD = "top secret string";
|
||||
|
||||
static get #privateStaticFieldValue() {
|
||||
return Cl.#PRIVATE_STATIC_FIELD;
|
||||
}
|
||||
|
||||
static set #privateStaticFieldValue(newValue) {
|
||||
Cl.#PRIVATE_STATIC_FIELD = `Updated: ${newValue}`;
|
||||
}
|
||||
|
||||
static getValue() {
|
||||
return Cl.#privateStaticFieldValue;
|
||||
}
|
||||
|
||||
static setValue() {
|
||||
Cl.#privateStaticFieldValue = "dank";
|
||||
}
|
||||
}
|
||||
|
||||
expect(Cl.getValue()).toEqual("top secret string");
|
||||
Cl.setValue();
|
||||
expect(Cl.getValue()).toEqual("Updated: dank");
|
||||
19
packages/babel-plugin-proposal-private-methods/test/fixtures/static-accessors/basic/input.js
vendored
Normal file
19
packages/babel-plugin-proposal-private-methods/test/fixtures/static-accessors/basic/input.js
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
class Cl {
|
||||
static #PRIVATE_STATIC_FIELD = "top secret string";
|
||||
|
||||
static get #privateStaticFieldValue() {
|
||||
return Cl.#PRIVATE_STATIC_FIELD;
|
||||
}
|
||||
|
||||
static set #privateStaticFieldValue(newValue) {
|
||||
Cl.#PRIVATE_STATIC_FIELD = `Updated: ${newValue}`;
|
||||
}
|
||||
|
||||
static getValue() {
|
||||
return Cl.#privateStaticFieldValue;
|
||||
}
|
||||
|
||||
static setValue() {
|
||||
Cl.#privateStaticFieldValue = "dank";
|
||||
}
|
||||
}
|
||||
27
packages/babel-plugin-proposal-private-methods/test/fixtures/static-accessors/basic/output.js
vendored
Normal file
27
packages/babel-plugin-proposal-private-methods/test/fixtures/static-accessors/basic/output.js
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
class Cl {
|
||||
static getValue() {
|
||||
return babelHelpers.classStaticPrivateFieldSpecGet(Cl, Cl, _privateStaticFieldValue);
|
||||
}
|
||||
|
||||
static setValue() {
|
||||
babelHelpers.classStaticPrivateFieldSpecSet(Cl, Cl, _privateStaticFieldValue, "dank");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
var _set_privateStaticFieldValue = function (newValue) {
|
||||
babelHelpers.classStaticPrivateFieldSpecSet(Cl, Cl, _PRIVATE_STATIC_FIELD, `Updated: ${newValue}`);
|
||||
};
|
||||
|
||||
var _get_privateStaticFieldValue = function () {
|
||||
return babelHelpers.classStaticPrivateFieldSpecGet(Cl, Cl, _PRIVATE_STATIC_FIELD);
|
||||
};
|
||||
|
||||
var _PRIVATE_STATIC_FIELD = {
|
||||
writable: true,
|
||||
value: "top secret string"
|
||||
};
|
||||
var _privateStaticFieldValue = {
|
||||
get: _get_privateStaticFieldValue,
|
||||
set: _set_privateStaticFieldValue
|
||||
};
|
||||
@@ -0,0 +1,13 @@
|
||||
class Cl {
|
||||
static #PRIVATE_STATIC_FIELD = 0;
|
||||
|
||||
static set #privateStaticFieldValue(newValue) {
|
||||
Cl.#PRIVATE_STATIC_FIELD = newValue;
|
||||
}
|
||||
|
||||
static getPrivateStaticFieldValue() {
|
||||
return Cl.#privateStaticFieldValue;
|
||||
}
|
||||
}
|
||||
|
||||
expect(Cl.getPrivateStaticFieldValue()).toBeUndefined();
|
||||
@@ -0,0 +1,11 @@
|
||||
class Cl {
|
||||
static #PRIVATE_STATIC_FIELD = 0;
|
||||
|
||||
static set #privateStaticFieldValue(newValue) {
|
||||
Cl.#PRIVATE_STATIC_FIELD = newValue;
|
||||
}
|
||||
|
||||
static getPrivateStaticFieldValue() {
|
||||
return Cl.#privateStaticFieldValue;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
class Cl {
|
||||
static getPrivateStaticFieldValue() {
|
||||
return babelHelpers.classStaticPrivateFieldSpecGet(Cl, Cl, _privateStaticFieldValue);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
var _set_privateStaticFieldValue = function (newValue) {
|
||||
babelHelpers.classStaticPrivateFieldSpecSet(Cl, Cl, _PRIVATE_STATIC_FIELD, newValue);
|
||||
};
|
||||
|
||||
var _PRIVATE_STATIC_FIELD = {
|
||||
writable: true,
|
||||
value: 0
|
||||
};
|
||||
var _privateStaticFieldValue = {
|
||||
get: void 0,
|
||||
set: _set_privateStaticFieldValue
|
||||
};
|
||||
14
packages/babel-plugin-proposal-private-methods/test/fixtures/static-accessors/options.json
vendored
Normal file
14
packages/babel-plugin-proposal-private-methods/test/fixtures/static-accessors/options.json
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"plugins": [
|
||||
[
|
||||
"external-helpers",
|
||||
{
|
||||
"helperVersion": "7.1000.0"
|
||||
}
|
||||
],
|
||||
"proposal-private-methods",
|
||||
"proposal-class-properties",
|
||||
"transform-block-scoping",
|
||||
"syntax-class-properties"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
class Cl {
|
||||
static #PRIVATE_STATIC_FIELD = 0;
|
||||
|
||||
static get #privateStaticFieldValue() {
|
||||
return Cl.#PRIVATE_STATIC_FIELD;
|
||||
}
|
||||
|
||||
static setPrivateStaticFieldValue() {
|
||||
Cl.#privateStaticFieldValue = 1;
|
||||
}
|
||||
}
|
||||
|
||||
expect(() => Cl.setPrivateStaticFieldValue()).toThrow(TypeError);
|
||||
@@ -0,0 +1,11 @@
|
||||
class Cl {
|
||||
static #PRIVATE_STATIC_FIELD = 0;
|
||||
|
||||
static get #privateStaticFieldValue() {
|
||||
return Cl.#PRIVATE_STATIC_FIELD;
|
||||
}
|
||||
|
||||
static setPrivateStaticFieldValue() {
|
||||
Cl.#privateStaticFieldValue = 1;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
class Cl {
|
||||
static setPrivateStaticFieldValue() {
|
||||
babelHelpers.classStaticPrivateFieldSpecSet(Cl, Cl, _privateStaticFieldValue, 1);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
var _get_privateStaticFieldValue = function () {
|
||||
return babelHelpers.classStaticPrivateFieldSpecGet(Cl, Cl, _PRIVATE_STATIC_FIELD);
|
||||
};
|
||||
|
||||
var _PRIVATE_STATIC_FIELD = {
|
||||
writable: true,
|
||||
value: 0
|
||||
};
|
||||
var _privateStaticFieldValue = {
|
||||
get: _get_privateStaticFieldValue,
|
||||
set: void 0
|
||||
};
|
||||
46
packages/babel-plugin-proposal-private-methods/test/fixtures/static-accessors/updates/exec.js
vendored
Normal file
46
packages/babel-plugin-proposal-private-methods/test/fixtures/static-accessors/updates/exec.js
vendored
Normal file
@@ -0,0 +1,46 @@
|
||||
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();
|
||||
44
packages/babel-plugin-proposal-private-methods/test/fixtures/static-accessors/updates/input.js
vendored
Normal file
44
packages/babel-plugin-proposal-private-methods/test/fixtures/static-accessors/updates/input.js
vendored
Normal file
@@ -0,0 +1,44 @@
|
||||
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++;
|
||||
|
||||
++Cl.#privateFieldValue;
|
||||
++Cl.publicFieldValue;
|
||||
|
||||
Cl.#privateFieldValue += 1;
|
||||
Cl.publicFieldValue += 1;
|
||||
|
||||
Cl.#privateFieldValue = -(Cl.#privateFieldValue ** Cl.#privateFieldValue);
|
||||
Cl.publicFieldValue = -(Cl.publicFieldValue ** Cl.publicFieldValue);
|
||||
}
|
||||
}
|
||||
51
packages/babel-plugin-proposal-private-methods/test/fixtures/static-accessors/updates/output.js
vendored
Normal file
51
packages/babel-plugin-proposal-private-methods/test/fixtures/static-accessors/updates/output.js
vendored
Normal file
@@ -0,0 +1,51 @@
|
||||
class Cl {
|
||||
static publicGetPrivateField() {
|
||||
return babelHelpers.classStaticPrivateFieldSpecGet(Cl, Cl, _privateFieldValue);
|
||||
}
|
||||
|
||||
static publicSetPrivateField(newValue) {
|
||||
babelHelpers.classStaticPrivateFieldSpecSet(Cl, Cl, _privateFieldValue, newValue);
|
||||
}
|
||||
|
||||
static get publicFieldValue() {
|
||||
return Cl.publicField;
|
||||
}
|
||||
|
||||
static set publicFieldValue(newValue) {
|
||||
Cl.publicField = newValue;
|
||||
}
|
||||
|
||||
static testUpdates() {
|
||||
var _Cl$privateFieldValue, _Cl$privateFieldValue2;
|
||||
|
||||
babelHelpers.classStaticPrivateFieldSpecSet(Cl, Cl, _privateField, 0);
|
||||
Cl.publicField = 0;
|
||||
babelHelpers.classStaticPrivateFieldSpecSet(Cl, Cl, _privateFieldValue, (babelHelpers.classStaticPrivateFieldSpecSet(Cl, Cl, _privateFieldValue, (_Cl$privateFieldValue2 = +babelHelpers.classStaticPrivateFieldSpecGet(Cl, Cl, _privateFieldValue)) + 1), _Cl$privateFieldValue2));
|
||||
Cl.publicFieldValue = Cl.publicFieldValue++;
|
||||
babelHelpers.classStaticPrivateFieldSpecSet(Cl, Cl, _privateFieldValue, +babelHelpers.classStaticPrivateFieldSpecGet(Cl, Cl, _privateFieldValue) + 1);
|
||||
++Cl.publicFieldValue;
|
||||
babelHelpers.classStaticPrivateFieldSpecSet(Cl, Cl, _privateFieldValue, babelHelpers.classStaticPrivateFieldSpecGet(Cl, Cl, _privateFieldValue) + 1);
|
||||
Cl.publicFieldValue += 1;
|
||||
babelHelpers.classStaticPrivateFieldSpecSet(Cl, Cl, _privateFieldValue, -(babelHelpers.classStaticPrivateFieldSpecGet(Cl, Cl, _privateFieldValue) ** babelHelpers.classStaticPrivateFieldSpecGet(Cl, Cl, _privateFieldValue)));
|
||||
Cl.publicFieldValue = -(Cl.publicFieldValue ** Cl.publicFieldValue);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
var _set_privateFieldValue = function (newValue) {
|
||||
babelHelpers.classStaticPrivateFieldSpecSet(Cl, Cl, _privateField, newValue);
|
||||
};
|
||||
|
||||
var _get_privateFieldValue = function () {
|
||||
return babelHelpers.classStaticPrivateFieldSpecGet(Cl, Cl, _privateField);
|
||||
};
|
||||
|
||||
var _privateField = {
|
||||
writable: true,
|
||||
value: "top secret string"
|
||||
};
|
||||
babelHelpers.defineProperty(Cl, "publicField", "not secret string");
|
||||
var _privateFieldValue = {
|
||||
get: _get_privateFieldValue,
|
||||
set: _set_privateFieldValue
|
||||
};
|
||||
Reference in New Issue
Block a user