Properly implement static class fields. (#4221)
JerryScript-DCO-1.0-Signed-off-by: Zoltan Herczeg zherczeg.u-szeged@partner.samsung.com
This commit is contained in:
@@ -51,3 +51,33 @@ check_property(C1, 23, 11)
|
||||
check_property(C1, "a b", undefined)
|
||||
assert(res === "msg")
|
||||
assert(counter === 2)
|
||||
|
||||
counter = 0
|
||||
class C2 {
|
||||
static a = (assert(++counter === 6), "x")
|
||||
static [(assert(++counter === 1), "b")]
|
||||
static [(assert(++counter === 2), "f")]() {}
|
||||
static [(assert(++counter === 3), "c")] = (assert(++counter === 7), this);
|
||||
[(assert(++counter === 4), "a")]
|
||||
static [(assert(++counter === 5), "d")];static e = (assert(++counter === 8), C2)
|
||||
}
|
||||
|
||||
assert(counter === 8)
|
||||
check_property(C2, "a", "x")
|
||||
check_property(C2, "b", undefined)
|
||||
check_property(C2, "c", C2)
|
||||
check_property(C2, "d", undefined)
|
||||
check_property(C2, "e", C2)
|
||||
|
||||
res = new C2
|
||||
check_property(res, "a", undefined)
|
||||
|
||||
let C3 = class C4 {
|
||||
static f() {}
|
||||
static xx = C4
|
||||
static yy = this
|
||||
}
|
||||
|
||||
assert(Reflect.ownKeys(C3).toString() === "length,prototype,f,name,xx,yy")
|
||||
check_property(C3, "xx", C3)
|
||||
check_property(C3, "yy", C3)
|
||||
|
||||
@@ -6082,9 +6082,7 @@
|
||||
<test id="language/expressions/class/elements/async-gen-private-method/yield-star-sync-return.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/async-gen-private-method/yield-star-sync-throw.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/class-name-static-initializer-anonymous.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/class-name-static-initializer-decl.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/class-name-static-initializer-default-export.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/class-name-static-initializer-expr.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/derived-cls-direct-eval-contains-superproperty-1.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/derived-cls-direct-eval-contains-superproperty-2.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/direct-eval-err-contains-newtarget.js"><reason></reason></test>
|
||||
@@ -6098,7 +6096,6 @@
|
||||
<test id="language/expressions/class/elements/gen-private-method/yield-spread-arr-single.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/gen-private-method/yield-spread-obj.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/grammar-private-field-optional-chaining.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/intercalated-static-non-static-computed-fields.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/multiple-definitions-grammar-privatename-identifier-semantics-stringvalue.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/multiple-definitions-private-field-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/multiple-definitions-private-method-getter-usage.js"><reason></reason></test>
|
||||
@@ -6531,9 +6528,6 @@
|
||||
<test id="language/expressions/class/elements/same-line-method-static-private-methods.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/static-field-anonymous-function-length.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/static-field-anonymous-function-name.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/static-field-init-this-inside-arrow-function.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/static-field-init-with-this.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/static-field-redeclaration.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/static-private-fields-proxy-default-handler-throws.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/static-private-getter-access-on-inner-arrow-function.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/static-private-getter-access-on-inner-class.js"><reason></reason></test>
|
||||
@@ -7705,7 +7699,6 @@
|
||||
<test id="language/statements/class/elements/get-access-of-missing-private-getter.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/get-access-of-missing-shadowed-private-getter.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/grammar-private-field-optional-chaining.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/intercalated-static-non-static-computed-fields.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/multiple-definitions-grammar-privatename-identifier-semantics-stringvalue.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/multiple-definitions-private-field-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/multiple-definitions-private-method-getter-usage.js"><reason></reason></test>
|
||||
@@ -8197,9 +8190,6 @@
|
||||
<test id="language/statements/class/elements/set-access-of-shadowed-private-method.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/static-field-anonymous-function-length.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/static-field-anonymous-function-name.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/static-field-init-this-inside-arrow-function.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/static-field-init-with-this.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/static-field-redeclaration.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/static-private-fields-proxy-default-handler-throws.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/static-private-getter-access-on-inner-arrow-function.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/static-private-getter-access-on-inner-class.js"><reason></reason></test>
|
||||
|
||||
Reference in New Issue
Block a user