check descriptor before private field access (#12910)

* fix: check descriptor before private field access

* add test cases
This commit is contained in:
Huáng Jùnliàng
2021-03-03 15:06:38 -05:00
committed by GitHub
parent b12a4de457
commit 70c77e550c
6 changed files with 154 additions and 0 deletions

View File

@@ -0,0 +1,29 @@
expect(() => {
class C {
static #_ = new C;
static #p;
constructor() {
C.#p;
}
}
}).toThrow(/attempted to use private field on non-instance/);
expect(() => {
class C {
static #_ = new C;
static #p;
constructor() {
C.#p = 0;
}
}
}).toThrow(/attempted to use private field on non-instance/);
expect(() => {
class C {
static #_ = new C;
static #p;
constructor() {
for (C.#p of [0]);
}
}
}).toThrow(/attempted to use private field on non-instance/);

View File

@@ -0,0 +1,29 @@
expect(() => {
class C {
static #_ = new C;
static #p;
constructor() {
C.#p;
}
}
}).toThrow(/attempted to get private static field before its declaration/);
expect(() => {
class C {
static #_ = new C;
static #p;
constructor() {
C.#p = 0;
}
}
}).toThrow(/attempted to set private static field before its declaration/);
expect(() => {
class C {
static #_ = new C;
static #p;
constructor() {
for (C.#p of [0]);
}
}
}).toThrow(/attempted to set private static field before its declaration/);