public-class-field-initialization-on-super-class-with-setter.js (920B)
1 // Copyright (C) 2019 Caio Lima. All rights reserved. 2 // This code is governed by the BSD license found in the LICENSE file. 3 4 /*--- 5 description: Public class field initialization calls [[DefineOwnProperty]] and don't execute super's getter 6 esid: sec-define-field 7 info: | 8 DefineField(receiver, fieldRecord) 9 ... 10 8. If fieldName is a Private Name, 11 a. Perform ? PrivateFieldAdd(fieldName, receiver, initValue). 12 9. Else, 13 a. Assert: IsPropertyKey(fieldName) is true. 14 b. Perform ? CreateDataPropertyOrThrow(receiver, fieldName, initValue). 15 10. Return. 16 includes: [propertyHelper.js] 17 features: [class, class-fields-public] 18 ---*/ 19 20 class Super { 21 set f(v) { 22 throw new Test262Error(); 23 } 24 } 25 26 class Base extends Super { 27 f = "Test262"; 28 } 29 30 let o = new Base(); 31 32 verifyProperty(o, "f", { 33 value: "Test262", 34 enumerable: true, 35 writable: true, 36 configurable: true, 37 }); 38 39 reportCompare(0, 0);