spread-obj-spread-order.js (1573B)
1 // This file was procedurally generated from the following sources: 2 // - src/spread/obj-spread-order.case 3 // - src/spread/default/member-expr.template 4 /*--- 5 description: Spread operation follows [[OwnPropertyKeys]] order (`new` operator) 6 esid: sec-new-operator-runtime-semantics-evaluation 7 features: [Symbol, object-spread] 8 flags: [generated] 9 includes: [compareArray.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 Pending Runtime Semantics: PropertyDefinitionEvaluation 23 24 PropertyDefinition:...AssignmentExpression 25 26 1. Let exprValue be the result of evaluating AssignmentExpression. 27 2. Let fromValue be GetValue(exprValue). 28 3. ReturnIfAbrupt(fromValue). 29 4. Let excludedNames be a new empty List. 30 5. Return CopyDataProperties(object, fromValue, excludedNames). 31 32 ---*/ 33 var calls = []; 34 var o = { get z() { calls.push('z') }, get a() { calls.push('a') } }; 35 Object.defineProperty(o, 1, { get: () => { calls.push(1) }, enumerable: true }); 36 Object.defineProperty(o, Symbol('foo'), { get: () => { calls.push("Symbol(foo)") }, enumerable: true }); 37 38 39 var callCount = 0; 40 41 new function(obj) { 42 assert.compareArray(calls, [1, 'z', 'a', "Symbol(foo)"]); 43 assert.sameValue(Object.keys(obj).length, 3); 44 callCount += 1; 45 }({...o}); 46 47 assert.sameValue(callCount, 1); 48 49 reportCompare(0, 0);