reviver-wrapper.js (1080B)
1 // Copyright (C) 2019 Alexey Shvayka. All rights reserved. 2 // This code is governed by the BSD license found in the LICENSE file. 3 /*--- 4 esid: sec-json.parse 5 description: > 6 Wrapper is plain extensible object with single data property. 7 info: | 8 JSON.parse ( text [ , reviver ] ) 9 10 [...] 11 7. If IsCallable(reviver) is true, then 12 a. Let root be ObjectCreate(%Object.prototype%). 13 b. Let rootName be the empty String. 14 c. Perform ! CreateDataPropertyOrThrow(root, rootName, unfiltered). 15 includes: [propertyHelper.js] 16 ---*/ 17 18 Object.defineProperty(Object.prototype, '', { 19 set: function() { 20 throw new Test262Error('[[Set]] should not be called.'); 21 }, 22 }); 23 24 var wrapper; 25 JSON.parse('2', function() { 26 wrapper = this; 27 }); 28 29 assert.sameValue(typeof wrapper, 'object'); 30 assert.sameValue(Object.getPrototypeOf(wrapper), Object.prototype); 31 assert.sameValue(Object.getOwnPropertyNames(wrapper).length, 1); 32 assert(Object.isExtensible(wrapper)); 33 34 verifyProperty(wrapper, '', { 35 value: 2, 36 writable: true, 37 enumerable: true, 38 configurable: true, 39 }); 40 41 reportCompare(0, 0);