diff --git a/src/class-fields/initializer-eval-arguments/cls-decl-private-fields-eval.template b/src/class-fields/initializer-eval-arguments/cls-decl-private-fields-eval.template new file mode 100644 index 0000000000000000000000000000000000000000..27551d328be9e9373422f860d7e264e466293634 --- /dev/null +++ b/src/class-fields/initializer-eval-arguments/cls-decl-private-fields-eval.template @@ -0,0 +1,20 @@ +// Copyright (C) 2017 Valerie Young. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-performeval-rules-in-initializer +path: language/statements/class/fields-private-direct- +name: direct eval +features: [class, class-fields-private] +---*/ + +var executed = false; +class C { + #x = eval('executed = true; /*{ initializer }*/;'); +} + +assert.throws(/*{ earlyerror }*/, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/src/class-fields/initializer-eval-arguments/cls-decl-private-fields-indirect-eval.template b/src/class-fields/initializer-eval-arguments/cls-decl-private-fields-indirect-eval.template new file mode 100644 index 0000000000000000000000000000000000000000..6a77ba9f22fa9377e035dc4d2d4625d22ce33a85 --- /dev/null +++ b/src/class-fields/initializer-eval-arguments/cls-decl-private-fields-indirect-eval.template @@ -0,0 +1,20 @@ +// Copyright (C) 2017 Valerie Young. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-performeval-rules-in-initializer +path: language/statements/class/fields-private-indirect- +name: indirect eval +features: [class, class-fields-private] +---*/ + +var executed = false; +class C { + #x = (0, eval)('executed = true; /*{ initializer }*/;'); +} + +assert.throws(/*{ executionerror }*/, function() { + new C(); +}); + +assert.sameValue(executed, true); diff --git a/src/class-fields/initializer-eval-arguments/cls-expr-private-fields-eval.template b/src/class-fields/initializer-eval-arguments/cls-expr-private-fields-eval.template new file mode 100644 index 0000000000000000000000000000000000000000..656a7c81a0d2c38ddbdf7c0f2595072994bce4fc --- /dev/null +++ b/src/class-fields/initializer-eval-arguments/cls-expr-private-fields-eval.template @@ -0,0 +1,20 @@ +// Copyright (C) 2017 Valerie Young. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-performeval-rules-in-initializer +path: language/expressions/class/fields-private-direct- +name: direct eval +features: [class, class-fields-private] +---*/ + +var executed = false; +var C = class { + #x = eval('executed = true; /*{ initializer }*/;'); +} + +assert.throws(/*{ earlyerror }*/, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/src/class-fields/initializer-eval-arguments/cls-expr-private-fields-indirect-eval.template b/src/class-fields/initializer-eval-arguments/cls-expr-private-fields-indirect-eval.template new file mode 100644 index 0000000000000000000000000000000000000000..4127bd1a86a0633856f420b78b75013517bbd016 --- /dev/null +++ b/src/class-fields/initializer-eval-arguments/cls-expr-private-fields-indirect-eval.template @@ -0,0 +1,20 @@ +// Copyright (C) 2017 Valerie Young. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-performeval-rules-in-initializer +path: language/expressions/class/fields-private-indirect- +name: indirect eval +features: [class, class-fields-private] +---*/ + +var executed = false; +var C = class { + #x = (0, eval)('executed = true; /*{ initializer }*/;'); +} + +assert.throws(/*{ executionerror }*/, function() { + new C(); +}); + +assert.sameValue(executed, true); diff --git a/src/class-fields/initializer-eval-newtarget/cls-decl-private-fields-eval.template b/src/class-fields/initializer-eval-newtarget/cls-decl-private-fields-eval.template new file mode 100644 index 0000000000000000000000000000000000000000..14cdf6b266348cacec8f227062916be4a25ef187 --- /dev/null +++ b/src/class-fields/initializer-eval-newtarget/cls-decl-private-fields-eval.template @@ -0,0 +1,19 @@ +// Copyright (C) 2017 Valerie Young. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-performeval-rules-in-initializer +path: language/statements/class/fields-private-direct- +name: direct eval +features: [class, class-fields-private] +---*/ + +var executed = false; +class C { + #x = eval('executed = true; /*{ initializer }*/;'); +} + +var c = new C(); + +assert.sameValue(executed, true); +assert.sameValue(c.x, undefined); diff --git a/src/class-fields/initializer-eval-newtarget/cls-decl-private-fields-indirect-eval.template b/src/class-fields/initializer-eval-newtarget/cls-decl-private-fields-indirect-eval.template new file mode 100644 index 0000000000000000000000000000000000000000..bb7eb64337576a3f72bf78a5d832d28fdbf0b01c --- /dev/null +++ b/src/class-fields/initializer-eval-newtarget/cls-decl-private-fields-indirect-eval.template @@ -0,0 +1,20 @@ +// Copyright (C) 2017 Valerie Young. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-performeval-rules-in-initializer +path: language/statements/class/fields-private-indirect- +name: indirect eval +features: [class, class-fields-private] +---*/ + +var executed = false; +class C { + #x = (0, eval)('executed = true; /*{ initializer }*/;'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/src/class-fields/initializer-eval-newtarget/cls-expr-private-fields-eval.template b/src/class-fields/initializer-eval-newtarget/cls-expr-private-fields-eval.template new file mode 100644 index 0000000000000000000000000000000000000000..3efe9eb6ee5281f1ac693d5107b0b65a0df46690 --- /dev/null +++ b/src/class-fields/initializer-eval-newtarget/cls-expr-private-fields-eval.template @@ -0,0 +1,19 @@ +// Copyright (C) 2017 Valerie Young. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-performeval-rules-in-initializer +path: language/expressions/class/fields-private-direct- +name: direct eval +features: [class, class-fields-private] +---*/ + +var executed = false; +var C = class { + #x = eval('executed = true; /*{ initializer }*/;'); +} + +var c = new C(); + +assert.sameValue(executed, true); +assert.sameValue(c.x, undefined); diff --git a/src/class-fields/initializer-eval-newtarget/cls-expr-private-fields-indirect-eval.template b/src/class-fields/initializer-eval-newtarget/cls-expr-private-fields-indirect-eval.template new file mode 100644 index 0000000000000000000000000000000000000000..032852f7b3d2c432663fb229e579539a7077b1b5 --- /dev/null +++ b/src/class-fields/initializer-eval-newtarget/cls-expr-private-fields-indirect-eval.template @@ -0,0 +1,20 @@ +// Copyright (C) 2017 Valerie Young. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-performeval-rules-in-initializer +path: language/expressions/class/fields-private-indirect- +name: indirect eval +features: [class, class-fields-private] +---*/ + +var executed = false; +var C = class { + #x = (0, eval)('executed = true; /*{ initializer }*/;'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/src/class-fields/initializer-eval-super-call/cls-decl-private-fields-eval.template b/src/class-fields/initializer-eval-super-call/cls-decl-private-fields-eval.template new file mode 100644 index 0000000000000000000000000000000000000000..2b52bf407e43bc25a98b5ee7ab0e0cdb9d5a659a --- /dev/null +++ b/src/class-fields/initializer-eval-super-call/cls-decl-private-fields-eval.template @@ -0,0 +1,20 @@ +// Copyright (C) 2017 Valerie Young. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-performeval-rules-in-initializer +path: language/statements/class/fields-derived-cls-direct- +name: direct eval +---*/ + +var executed = false; +class A {} +class C extends A { + #x = eval('executed = true; /*{ initializer }*/;'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/src/class-fields/initializer-eval-super-call/cls-decl-private-fields-indirect-eval.template b/src/class-fields/initializer-eval-super-call/cls-decl-private-fields-indirect-eval.template new file mode 100644 index 0000000000000000000000000000000000000000..20c2d861568222c8c5efa624f0a346c619aaa219 --- /dev/null +++ b/src/class-fields/initializer-eval-super-call/cls-decl-private-fields-indirect-eval.template @@ -0,0 +1,20 @@ +// Copyright (C) 2017 Valerie Young. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-performeval-rules-in-initializer +path: language/statements/class/fields-derived-cls-indirect- +name: indirect eval +---*/ + +var executed = false; +class A {} +class C extends A { + #x = (0, eval)('executed = true; /*{ initializer }*/;'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/src/class-fields/initializer-eval-super-call/cls-expr-private-fields-eval.template b/src/class-fields/initializer-eval-super-call/cls-expr-private-fields-eval.template new file mode 100644 index 0000000000000000000000000000000000000000..d1953958ec98e8b9d5972d56877e2687a0601c40 --- /dev/null +++ b/src/class-fields/initializer-eval-super-call/cls-expr-private-fields-eval.template @@ -0,0 +1,20 @@ +// Copyright (C) 2017 Valerie Young. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-performeval-rules-in-initializer +path: language/expressions/class/fields-derived-cls-direct- +name: direct eval +---*/ + +var executed = false; +var A = class {} +var C = class extends A { + #x = eval('executed = true; /*{ initializer }*/;'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/src/class-fields/initializer-eval-super-call/cls-expr-private-fields-indirect-eval.template b/src/class-fields/initializer-eval-super-call/cls-expr-private-fields-indirect-eval.template new file mode 100644 index 0000000000000000000000000000000000000000..fef18bb5f1362af75bcef266ed0153edeeaf0542 --- /dev/null +++ b/src/class-fields/initializer-eval-super-call/cls-expr-private-fields-indirect-eval.template @@ -0,0 +1,20 @@ +// Copyright (C) 2017 Valerie Young. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-performeval-rules-in-initializer +path: language/expressions/class/fields-derived-cls-indirect- +name: indirect eval +---*/ + +var executed = false; +var A = class {} +var C = class extends A { + #x = (0, eval)('executed = true; /*{ initializer }*/;'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/src/class-fields/initializer-eval-super-property/cls-decl-private-fields-eval.template b/src/class-fields/initializer-eval-super-property/cls-decl-private-fields-eval.template new file mode 100644 index 0000000000000000000000000000000000000000..250b36d4c1fe3ae7e9e3bc16b7f9f8c658d321cf --- /dev/null +++ b/src/class-fields/initializer-eval-super-property/cls-decl-private-fields-eval.template @@ -0,0 +1,18 @@ +// Copyright (C) 2017 Valerie Young. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-performeval-rules-in-initializer +path: language/statements/class/fields-derived-cls-direct- +name: direct eval +---*/ + +var executed = false; +class A {} +class C extends A { + #x = eval('executed = true; /*{ initializer }*/;'); +} + +new C(); + +assert.sameValue(executed, true); diff --git a/src/class-fields/initializer-eval-super-property/cls-decl-private-fields-indirect-eval.template b/src/class-fields/initializer-eval-super-property/cls-decl-private-fields-indirect-eval.template new file mode 100644 index 0000000000000000000000000000000000000000..20c2d861568222c8c5efa624f0a346c619aaa219 --- /dev/null +++ b/src/class-fields/initializer-eval-super-property/cls-decl-private-fields-indirect-eval.template @@ -0,0 +1,20 @@ +// Copyright (C) 2017 Valerie Young. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-performeval-rules-in-initializer +path: language/statements/class/fields-derived-cls-indirect- +name: indirect eval +---*/ + +var executed = false; +class A {} +class C extends A { + #x = (0, eval)('executed = true; /*{ initializer }*/;'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/src/class-fields/initializer-eval-super-property/cls-expr-private-fields-eval.template b/src/class-fields/initializer-eval-super-property/cls-expr-private-fields-eval.template new file mode 100644 index 0000000000000000000000000000000000000000..b11847616d9d84efcbd346d43366f9b588dcfd16 --- /dev/null +++ b/src/class-fields/initializer-eval-super-property/cls-expr-private-fields-eval.template @@ -0,0 +1,18 @@ +// Copyright (C) 2017 Valerie Young. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-performeval-rules-in-initializer +path: language/expressions/class/fields-derived-cls-direct- +name: direct eval +---*/ + +var executed = false; +var A = class {} +var C = class extends A { + #x = eval('executed = true; /*{ initializer }*/;'); +}; + +new C(); + +assert.sameValue(executed, true); diff --git a/src/class-fields/initializer-eval-super-property/cls-expr-private-fields-indirect-eval.template b/src/class-fields/initializer-eval-super-property/cls-expr-private-fields-indirect-eval.template new file mode 100644 index 0000000000000000000000000000000000000000..9a0aec624febf94820ca31d5289effa0b628bdbd --- /dev/null +++ b/src/class-fields/initializer-eval-super-property/cls-expr-private-fields-indirect-eval.template @@ -0,0 +1,20 @@ +// Copyright (C) 2017 Valerie Young. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-performeval-rules-in-initializer +path: language/expressions/class/fields-derived-cls-indirect- +name: indirect eval +---*/ + +var executed = false; +var A = class {} +var C = class extends A { + #x = (0, eval)('executed = true; /*{ initializer }*/;'); +}; + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/src/class-fields/initializer-eval-super/cls-decl-private-fields-eval.template b/src/class-fields/initializer-eval-super/cls-decl-private-fields-eval.template new file mode 100644 index 0000000000000000000000000000000000000000..f536ad4266107110b13499106ef0e27cebcd8a10 --- /dev/null +++ b/src/class-fields/initializer-eval-super/cls-decl-private-fields-eval.template @@ -0,0 +1,21 @@ +// Copyright (C) 2017 Valerie Young. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-performeval-rules-in-initializer +path: language/statements/class/fields-private-derived-cls-direct- +name: direct eval +features: [class, class-fields-private] +---*/ + +var executed = false; +class A = {} +class C extends A { + #x = eval('executed = true; /*{ initializer }*/;'; +} + +assert.throws(/*{ earlyerror }*/, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/src/class-fields/initializer-eval-super/cls-decl-private-fields-indirect-eval.template b/src/class-fields/initializer-eval-super/cls-decl-private-fields-indirect-eval.template new file mode 100644 index 0000000000000000000000000000000000000000..1b4adf525cc4e3f3162218e59e308c1034bd3815 --- /dev/null +++ b/src/class-fields/initializer-eval-super/cls-decl-private-fields-indirect-eval.template @@ -0,0 +1,22 @@ +// Copyright (C) 2017 Valerie Young. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-performeval-rules-in-initializer +path: language/statements/class/fields-private-derived-cls-indirect- +name: indirect eval +features: [class, class-fields-private] +---*/ + +class A = {} + +var executed = false; +class C extends A { + #x = (0, eval)('executed = true; /*{ initializer }*/;'; +} + +assert.throws(/*{ executionerror }*/, function() { + new C(); +}); + +assert.sameValue(executed, true); diff --git a/src/class-fields/initializer-eval-super/cls-expr-private-fields-eval.template b/src/class-fields/initializer-eval-super/cls-expr-private-fields-eval.template new file mode 100644 index 0000000000000000000000000000000000000000..c55f04ad2ed05c1a6741bac54b931461be581a7f --- /dev/null +++ b/src/class-fields/initializer-eval-super/cls-expr-private-fields-eval.template @@ -0,0 +1,21 @@ +// Copyright (C) 2017 Valerie Young. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-performeval-rules-in-initializer +path: language/expressions/class/fields-private-derived-cls-direct- +name: direct eval +features: [class, class-fields-private] +---*/ + +var executed = false; +var A = class {} +var C = class extends A { + #x = eval('executed = true; /*{ initializer }*/;'; +}; + +assert.throws(/*{ earlyerror }*/, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/src/class-fields/initializer-eval-super/cls-expr-private-fields-indirect-eval.template b/src/class-fields/initializer-eval-super/cls-expr-private-fields-indirect-eval.template new file mode 100644 index 0000000000000000000000000000000000000000..5f22b7ac6fe044f14b00a0c19c4ae30637830cb9 --- /dev/null +++ b/src/class-fields/initializer-eval-super/cls-expr-private-fields-indirect-eval.template @@ -0,0 +1,21 @@ +// Copyright (C) 2017 Valerie Young. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-performeval-rules-in-initializer +path: language/expressions/class/fields-private-derived-cls-indirect- +name: indirect eval +features: [class, class-fields-private] +---*/ + +var executed = false; +var A = class {} +var C = class extends A { + #x = (0, eval)('executed = true; /*{ initializer }*/;'; +}; + +assert.throws(/*{ executionerror }*/, function() { + new C(); +}); + +assert.sameValue(executed, true); diff --git a/src/class-fields/initializer-eval/cls-decl-private-fields-eval.template b/src/class-fields/initializer-eval/cls-decl-private-fields-eval.template new file mode 100644 index 0000000000000000000000000000000000000000..27551d328be9e9373422f860d7e264e466293634 --- /dev/null +++ b/src/class-fields/initializer-eval/cls-decl-private-fields-eval.template @@ -0,0 +1,20 @@ +// Copyright (C) 2017 Valerie Young. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-performeval-rules-in-initializer +path: language/statements/class/fields-private-direct- +name: direct eval +features: [class, class-fields-private] +---*/ + +var executed = false; +class C { + #x = eval('executed = true; /*{ initializer }*/;'); +} + +assert.throws(/*{ earlyerror }*/, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/src/class-fields/initializer-eval/cls-decl-private-fields-indirect-eval.template b/src/class-fields/initializer-eval/cls-decl-private-fields-indirect-eval.template new file mode 100644 index 0000000000000000000000000000000000000000..6a77ba9f22fa9377e035dc4d2d4625d22ce33a85 --- /dev/null +++ b/src/class-fields/initializer-eval/cls-decl-private-fields-indirect-eval.template @@ -0,0 +1,20 @@ +// Copyright (C) 2017 Valerie Young. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-performeval-rules-in-initializer +path: language/statements/class/fields-private-indirect- +name: indirect eval +features: [class, class-fields-private] +---*/ + +var executed = false; +class C { + #x = (0, eval)('executed = true; /*{ initializer }*/;'); +} + +assert.throws(/*{ executionerror }*/, function() { + new C(); +}); + +assert.sameValue(executed, true); diff --git a/src/class-fields/initializer-eval/cls-expr-private-fields-eval.template b/src/class-fields/initializer-eval/cls-expr-private-fields-eval.template new file mode 100644 index 0000000000000000000000000000000000000000..656a7c81a0d2c38ddbdf7c0f2595072994bce4fc --- /dev/null +++ b/src/class-fields/initializer-eval/cls-expr-private-fields-eval.template @@ -0,0 +1,20 @@ +// Copyright (C) 2017 Valerie Young. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-performeval-rules-in-initializer +path: language/expressions/class/fields-private-direct- +name: direct eval +features: [class, class-fields-private] +---*/ + +var executed = false; +var C = class { + #x = eval('executed = true; /*{ initializer }*/;'); +} + +assert.throws(/*{ earlyerror }*/, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/src/class-fields/initializer-eval/cls-expr-private-fields-indirect-eval.template b/src/class-fields/initializer-eval/cls-expr-private-fields-indirect-eval.template new file mode 100644 index 0000000000000000000000000000000000000000..ade5a5749137d9009182705b8c7fc6a8aa9bd2b5 --- /dev/null +++ b/src/class-fields/initializer-eval/cls-expr-private-fields-indirect-eval.template @@ -0,0 +1,20 @@ +// Copyright (C) 2017 Valerie Young. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-performeval-rules-in-initializer +path: language/expressions/class/fields-private-indirect- +name: indirect eval +features: [class, class-fields-private] +---*/ + +var executed = false; +var C = class { + #x = (0, eval)('executed = true; /*{ initializer }*/;'); +}; + +assert.throws(/*{ executionerror }*/, function() { + new C(); +}); + +assert.sameValue(executed, true); diff --git a/src/class-fields/static-private-names.case b/src/class-fields/static-private-fields.case similarity index 100% rename from src/class-fields/static-private-names.case rename to src/class-fields/static-private-fields.case diff --git a/src/class-fields/static-private-methods.case b/src/class-fields/static-private-methods.case new file mode 100644 index 0000000000000000000000000000000000000000..9675c9d8afa20feaacfffcd6827b11eef21e6f78 --- /dev/null +++ b/src/class-fields/static-private-methods.case @@ -0,0 +1,59 @@ +// Copyright (C) 2017 Valerie Young. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +desc: literal private names +info: | + ClassElement: + ... + static FieldDefinition ; + + FieldDefinition: + ClassElementName Initializer_opt + + ClassElementName: + PrivateName + + PrivateName: + # IdentifierName + +template: default +features: [class-static-methods-private] +---*/ + +//- fields +static #xVal; static #yVal +//- privateinspectionfunctions + static #x(value) { + this.#xVal = value; + return this.#xVal; + } + static #y(value) { + this.#y = value; + return this.#yVal; + } + static x() { + return this.#x(42); + } + static y() { + return this.#y(43); + } + +//- assertions + +// Test the private methods do not appear as properties before set to value +assert.sameValue(Object.hasOwnProperty.call(C.prototype, "#xVal"), false, "test 1"); +assert.sameValue(Object.hasOwnProperty.call(C, "#xVal"), false, "test 2"); +assert.sameValue(Object.hasOwnProperty.call(c, "#xVal"), false, "test 3"); + +assert.sameValue(Object.hasOwnProperty.call(C.prototype, "#yVal"), false, "test 4"); +assert.sameValue(Object.hasOwnProperty.call(C, "#yVal"), false, "test 5"); +assert.sameValue(Object.hasOwnProperty.call(c, "#yVal"), false, "test 6"); + +// Test if private fields can be sucessfully accessed and set to value +assert.sameValue(C.x(), 42, "test 7"); +assert.sameValue(C.y(), 43, "test 8"); + +// Test the private fields do not appear as properties before after set to value +assert.sameValue(Object.hasOwnProperty.call(C, "#xVal"), false, "test 9"); +assert.sameValue(Object.hasOwnProperty.call(C, "#yVal"), false, "test 10");