set-value-on-accessor-descriptor.js (1246B)
1 // Copyright (C) 2015 the V8 project authors. All rights reserved. 2 // This code is governed by the BSD license found in the LICENSE file. 3 /*--- 4 es6id: 26.1.13 5 description: > 6 Set value on an accessor descriptor property. 7 info: | 8 26.1.13 Reflect.set ( target, propertyKey, V [ , receiver ] ) 9 10 ... 11 4. If receiver is not present, then 12 a. Let receiver be target. 13 5. Return target.[[Set]](key, V, receiver). 14 15 9.1.9 [[Set]] ( P, V, Receiver) 16 17 ... 18 6. Assert: IsAccessorDescriptor(ownDesc) is true. 19 7. Let setter be ownDesc.[[Set]]. 20 8. If setter is undefined, return false. 21 9. Let setterResult be Call(setter, Receiver, «V»). 22 10. ReturnIfAbrupt(setterResult). 23 11. Return true. 24 features: [Reflect, Reflect.set] 25 ---*/ 26 27 var args; 28 var count = 0 29 var o1 = {}; 30 Object.defineProperty(o1, 'p', { 31 set: function(a) { 32 count++; 33 args = arguments; 34 return false; 35 } 36 }); 37 38 var result = Reflect.set(o1, 'p', 42); 39 assert.sameValue( 40 result, true, 41 'returns true if target.p has an accessor descriptor' 42 ); 43 assert.sameValue(args.length, 1, 'target.p set is called with 1 argument'); 44 assert.sameValue(args[0], 42, 'target.p set is called with V'); 45 assert.sameValue(count, 1, 'target.p set is called once'); 46 47 reportCompare(0, 0);