spread-obj-override-immutable.js (1223B)
1 // This file was procedurally generated from the following sources: 2 // - src/spread/obj-override-immutable.case 3 // - src/spread/default/member-expr.template 4 /*--- 5 description: Object Spread overriding immutable properties (`new` operator) 6 esid: sec-new-operator-runtime-semantics-evaluation 7 features: [object-spread] 8 flags: [generated] 9 includes: [propertyHelper.js] 10 info: | 11 MemberExpression : new MemberExpression Arguments 12 13 1. Return EvaluateNew(MemberExpression, Arguments). 14 15 12.3.3.1.1 Runtime Semantics: EvaluateNew 16 17 6. If arguments is empty, let argList be an empty List. 18 7. Else, 19 a. Let argList be ArgumentListEvaluation of arguments. 20 [...] 21 ---*/ 22 23 let o = {b: 2}; 24 Object.defineProperty(o, "a", {value: 1, enumerable: true, writable: false, configurable: true}); 25 26 27 var callCount = 0; 28 29 new function(obj) { 30 assert.sameValue(obj.a, 3) 31 assert.sameValue(obj.b, 2); 32 33 verifyProperty(obj, "a", { 34 enumerable: true, 35 writable: true, 36 configurable: true, 37 value: 3 38 }); 39 40 verifyProperty(obj, "b", { 41 enumerable: true, 42 writable: true, 43 configurable: true, 44 value: 2 45 }); 46 callCount += 1; 47 }({...o, a: 3}); 48 49 assert.sameValue(callCount, 1); 50 51 reportCompare(0, 0);