Ensure static private method init run before static property (#12918)
This commit is contained in:
parent
bdb207cb75
commit
ac758f7d70
@ -806,7 +806,7 @@ export function buildFieldsInitNodes(
|
||||
break;
|
||||
case isStatic && isPrivate && isMethod && !privateFieldsAsProperties:
|
||||
needsClassRef = true;
|
||||
staticNodes.push(
|
||||
staticNodes.unshift(
|
||||
buildPrivateStaticFieldInitSpec(prop, privateNamesMap),
|
||||
);
|
||||
staticNodes.unshift(
|
||||
@ -819,7 +819,7 @@ export function buildFieldsInitNodes(
|
||||
break;
|
||||
case isStatic && isPrivate && isMethod && privateFieldsAsProperties:
|
||||
needsClassRef = true;
|
||||
staticNodes.push(
|
||||
staticNodes.unshift(
|
||||
buildPrivateStaticMethodInitLoose(
|
||||
t.cloneNode(ref),
|
||||
prop,
|
||||
|
||||
@ -24,6 +24,10 @@ var _getB2 = function _getB2() {
|
||||
return this.b;
|
||||
};
|
||||
|
||||
Object.defineProperty(B, _getB, {
|
||||
value: _getB2
|
||||
});
|
||||
|
||||
var _getA2 = function _getA2() {
|
||||
return A.a;
|
||||
};
|
||||
@ -31,7 +35,4 @@ var _getA2 = function _getA2() {
|
||||
Object.defineProperty(B, _getA, {
|
||||
value: _getA2
|
||||
});
|
||||
Object.defineProperty(B, _getB, {
|
||||
value: _getB2
|
||||
});
|
||||
var [getA, getB] = B.extract();
|
||||
|
||||
@ -24,6 +24,10 @@ var _getB2 = function _getB2() {
|
||||
return this.b;
|
||||
};
|
||||
|
||||
Object.defineProperty(B, _getB, {
|
||||
value: _getB2
|
||||
});
|
||||
|
||||
var _getA2 = function _getA2() {
|
||||
return babelHelpers.get(babelHelpers.getPrototypeOf(B), "a", this);
|
||||
};
|
||||
@ -31,7 +35,4 @@ var _getA2 = function _getA2() {
|
||||
Object.defineProperty(B, _getA, {
|
||||
value: _getA2
|
||||
});
|
||||
Object.defineProperty(B, _getB, {
|
||||
value: _getB2
|
||||
});
|
||||
const [getA, getB] = B.extract();
|
||||
|
||||
@ -1,29 +0,0 @@
|
||||
expect(() => {
|
||||
class C {
|
||||
static #_ = new C;
|
||||
static get #p() { return C };
|
||||
constructor() {
|
||||
C.#p;
|
||||
}
|
||||
}
|
||||
}).toThrow(/attempted to use private field on non-instance/);
|
||||
|
||||
expect(() => {
|
||||
class C {
|
||||
static #_ = new C;
|
||||
static set #p(v) {};
|
||||
constructor() {
|
||||
C.#p = 0;
|
||||
}
|
||||
}
|
||||
}).toThrow(/attempted to use private field on non-instance/);
|
||||
|
||||
expect(() => {
|
||||
class C {
|
||||
static #_ = new C;
|
||||
static set #p(v) {};
|
||||
constructor() {
|
||||
for (C.#p of [0]);
|
||||
}
|
||||
}
|
||||
}).toThrow(/attempted to use private field on non-instance/);
|
||||
@ -0,0 +1,35 @@
|
||||
expect((() => {
|
||||
let r;
|
||||
class C {
|
||||
static #_ = new C;
|
||||
static get #p() { return 0 };
|
||||
constructor() {
|
||||
r = C.#p;
|
||||
}
|
||||
}
|
||||
return r;
|
||||
})()).toBe(0);
|
||||
|
||||
expect((() => {
|
||||
let r;
|
||||
class C {
|
||||
static #_ = new C;
|
||||
static set #p(v) { r = v; };
|
||||
constructor() {
|
||||
C.#p = 0;
|
||||
}
|
||||
}
|
||||
return r;
|
||||
})()).toBe(0);
|
||||
|
||||
expect((() => {
|
||||
let r;
|
||||
class C {
|
||||
static #_ = new C;
|
||||
static set #p(v) { r = v; };
|
||||
constructor() {
|
||||
for (C.#p of [0]);
|
||||
}
|
||||
}
|
||||
return r;
|
||||
})()).toBe(0);
|
||||
@ -21,11 +21,11 @@ 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
|
||||
});
|
||||
Object.defineProperty(Cl, _PRIVATE_STATIC_FIELD, {
|
||||
writable: true,
|
||||
value: "top secret string"
|
||||
});
|
||||
|
||||
@ -13,11 +13,11 @@ 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
|
||||
});
|
||||
Object.defineProperty(Cl, _PRIVATE_STATIC_FIELD, {
|
||||
writable: true,
|
||||
value: 0
|
||||
});
|
||||
|
||||
@ -14,12 +14,12 @@ var _get_privateFieldValue = function () {
|
||||
return babelHelpers.classPrivateFieldLooseBase(this, _privateField)[_privateField];
|
||||
};
|
||||
|
||||
Object.defineProperty(Cl, _privateField, {
|
||||
writable: true,
|
||||
value: 0
|
||||
});
|
||||
Object.defineProperty(Cl, _privateFieldValue, {
|
||||
get: _get_privateFieldValue,
|
||||
set: void 0
|
||||
});
|
||||
Object.defineProperty(Cl, _privateField, {
|
||||
writable: true,
|
||||
value: 0
|
||||
});
|
||||
var cl = new Cl();
|
||||
|
||||
@ -42,12 +42,12 @@ var _get_privateFieldValue = function () {
|
||||
return babelHelpers.classPrivateFieldLooseBase(Cl, _privateField)[_privateField];
|
||||
};
|
||||
|
||||
Object.defineProperty(Cl, _privateFieldValue, {
|
||||
get: _get_privateFieldValue,
|
||||
set: _set_privateFieldValue
|
||||
});
|
||||
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
|
||||
});
|
||||
|
||||
@ -1,29 +0,0 @@
|
||||
expect(() => {
|
||||
class C {
|
||||
static #_ = new C;
|
||||
static get #p() { return C };
|
||||
constructor() {
|
||||
C.#p;
|
||||
}
|
||||
}
|
||||
}).toThrow(/attempted to use private field on non-instance/);
|
||||
|
||||
expect(() => {
|
||||
class C {
|
||||
static #_ = new C;
|
||||
static set #p(v) {};
|
||||
constructor() {
|
||||
C.#p = 0;
|
||||
}
|
||||
}
|
||||
}).toThrow(/attempted to use private field on non-instance/);
|
||||
|
||||
expect(() => {
|
||||
class C {
|
||||
static #_ = new C;
|
||||
static set #p(v) {};
|
||||
constructor() {
|
||||
for (C.#p of [0]);
|
||||
}
|
||||
}
|
||||
}).toThrow(/attempted to use private field on non-instance/);
|
||||
@ -0,0 +1,35 @@
|
||||
expect((() => {
|
||||
let r;
|
||||
class C {
|
||||
static #_ = new C;
|
||||
static get #p() { return 0 };
|
||||
constructor() {
|
||||
r = C.#p;
|
||||
}
|
||||
}
|
||||
return r;
|
||||
})()).toBe(0);
|
||||
|
||||
expect((() => {
|
||||
let r;
|
||||
class C {
|
||||
static #_ = new C;
|
||||
static set #p(v) { r = v; };
|
||||
constructor() {
|
||||
C.#p = 0;
|
||||
}
|
||||
}
|
||||
return r;
|
||||
})()).toBe(0);
|
||||
|
||||
expect((() => {
|
||||
let r;
|
||||
class C {
|
||||
static #_ = new C;
|
||||
static set #p(v) { r = v; };
|
||||
constructor() {
|
||||
for (C.#p of [0]);
|
||||
}
|
||||
}
|
||||
return r;
|
||||
})()).toBe(0);
|
||||
@ -21,11 +21,11 @@ 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
|
||||
});
|
||||
Object.defineProperty(Cl, _PRIVATE_STATIC_FIELD, {
|
||||
writable: true,
|
||||
value: "top secret string"
|
||||
});
|
||||
|
||||
@ -13,11 +13,11 @@ 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
|
||||
});
|
||||
Object.defineProperty(Cl, _PRIVATE_STATIC_FIELD, {
|
||||
writable: true,
|
||||
value: 0
|
||||
});
|
||||
|
||||
@ -14,12 +14,12 @@ var _get_privateFieldValue = function () {
|
||||
return babelHelpers.classPrivateFieldLooseBase(this, _privateField)[_privateField];
|
||||
};
|
||||
|
||||
Object.defineProperty(Cl, _privateField, {
|
||||
writable: true,
|
||||
value: 0
|
||||
});
|
||||
Object.defineProperty(Cl, _privateFieldValue, {
|
||||
get: _get_privateFieldValue,
|
||||
set: void 0
|
||||
});
|
||||
Object.defineProperty(Cl, _privateField, {
|
||||
writable: true,
|
||||
value: 0
|
||||
});
|
||||
const cl = new Cl();
|
||||
|
||||
@ -42,12 +42,12 @@ var _get_privateFieldValue = function () {
|
||||
return babelHelpers.classPrivateFieldLooseBase(Cl, _privateField)[_privateField];
|
||||
};
|
||||
|
||||
Object.defineProperty(Cl, _privateFieldValue, {
|
||||
get: _get_privateFieldValue,
|
||||
set: _set_privateFieldValue
|
||||
});
|
||||
Object.defineProperty(Cl, _privateField, {
|
||||
writable: true,
|
||||
value: "top secret string"
|
||||
});
|
||||
babelHelpers.defineProperty(Cl, "publicField", "not secret string");
|
||||
Object.defineProperty(Cl, _privateFieldValue, {
|
||||
get: _get_privateFieldValue,
|
||||
set: _set_privateFieldValue
|
||||
});
|
||||
|
||||
@ -1,29 +0,0 @@
|
||||
expect(() => {
|
||||
class C {
|
||||
static #_ = new C;
|
||||
static get #p() { return C };
|
||||
constructor() {
|
||||
C.#p;
|
||||
}
|
||||
}
|
||||
}).toThrow(/attempted to get private static field before its declaration/);
|
||||
|
||||
expect(() => {
|
||||
class C {
|
||||
static #_ = new C;
|
||||
static set #p(v) {};
|
||||
constructor() {
|
||||
C.#p = 0;
|
||||
}
|
||||
}
|
||||
}).toThrow(/attempted to set private static field before its declaration/);
|
||||
|
||||
expect(() => {
|
||||
class C {
|
||||
static #_ = new C;
|
||||
static set #p(v) {};
|
||||
constructor() {
|
||||
for (C.#p of [0]);
|
||||
}
|
||||
}
|
||||
}).toThrow(/attempted to set private static field before its declaration/);
|
||||
@ -0,0 +1,35 @@
|
||||
expect((() => {
|
||||
let r;
|
||||
class C {
|
||||
static #_ = new C;
|
||||
static get #p() { return 0 };
|
||||
constructor() {
|
||||
r = C.#p;
|
||||
}
|
||||
}
|
||||
return r;
|
||||
})()).toBe(0);
|
||||
|
||||
expect((() => {
|
||||
let r;
|
||||
class C {
|
||||
static #_ = new C;
|
||||
static set #p(v) { r = v; };
|
||||
constructor() {
|
||||
C.#p = 0;
|
||||
}
|
||||
}
|
||||
return r;
|
||||
})()).toBe(0);
|
||||
|
||||
expect((() => {
|
||||
let r;
|
||||
class C {
|
||||
static #_ = new C;
|
||||
static set #p(v) { r = v; };
|
||||
constructor() {
|
||||
for (C.#p of [0]);
|
||||
}
|
||||
}
|
||||
return r;
|
||||
})()).toBe(0);
|
||||
@ -17,11 +17,11 @@ 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
|
||||
};
|
||||
var _PRIVATE_STATIC_FIELD = {
|
||||
writable: true,
|
||||
value: "top secret string"
|
||||
};
|
||||
|
||||
@ -9,11 +9,11 @@ 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
|
||||
};
|
||||
var _PRIVATE_STATIC_FIELD = {
|
||||
writable: true,
|
||||
value: 0
|
||||
};
|
||||
|
||||
@ -10,12 +10,12 @@ var _get_privateFieldValue = function () {
|
||||
return babelHelpers.classStaticPrivateFieldSpecGet(this, Cl, _privateField);
|
||||
};
|
||||
|
||||
var _privateField = {
|
||||
writable: true,
|
||||
value: 0
|
||||
};
|
||||
var _privateFieldValue = {
|
||||
get: _get_privateFieldValue,
|
||||
set: void 0
|
||||
};
|
||||
var _privateField = {
|
||||
writable: true,
|
||||
value: 0
|
||||
};
|
||||
var cl = new Cl();
|
||||
|
||||
@ -40,12 +40,12 @@ var _get_privateFieldValue = function () {
|
||||
return babelHelpers.classStaticPrivateFieldSpecGet(Cl, Cl, _privateField);
|
||||
};
|
||||
|
||||
var _privateFieldValue = {
|
||||
get: _get_privateFieldValue,
|
||||
set: _set_privateFieldValue
|
||||
};
|
||||
var _privateField = {
|
||||
writable: true,
|
||||
value: "top secret string"
|
||||
};
|
||||
babelHelpers.defineProperty(Cl, "publicField", "not secret string");
|
||||
var _privateFieldValue = {
|
||||
get: _get_privateFieldValue,
|
||||
set: _set_privateFieldValue
|
||||
};
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user