class-field-on-frozen-objects-strict.js (796B)
1 'use strict'; 2 // Copyright (C) 2019 Caio Lima. All rights reserved. 3 // This code is governed by the BSD license found in the LICENSE file. 4 5 /*--- 6 description: Public class field initialization fails on frozen object 7 esid: sec-define-field 8 info: | 9 DefineField(receiver, fieldRecord) 10 ... 11 8. If fieldName is a Private Name, 12 a. Perform ? PrivateFieldAdd(fieldName, receiver, initValue). 13 9. Else, 14 a. Assert: IsPropertyKey(fieldName) is true. 15 b. Perform ? CreateDataPropertyOrThrow(receiver, fieldName, initValue). 16 10. Return. 17 features: [class, class-fields-public] 18 flags: [onlyStrict] 19 ---*/ 20 21 class Test { 22 f = Object.freeze(this); 23 g = "Test262"; 24 } 25 26 assert.throws(TypeError, function() { 27 new Test(); 28 }, "Frozen objects can't be changed"); 29 30 reportCompare(0, 0);