property-mutation-2.js (927B)
1 function test() { 2 assertEq(getFuseState().ArrayPrototypeIteratorFuse.intact, true); 3 4 // Redefine Array.prototype properties but don't change their values. 5 // This shouldn't pop the fuse. 6 let proto = Array.prototype; 7 for (let i = 0; i < 3; i++) { 8 for (let p of Reflect.ownKeys(proto)) { 9 let desc = Object.getOwnPropertyDescriptor(proto, p); 10 if (desc.configurable) { 11 // Change desc.enumerable to ensure this isn't a no-op. 12 desc.enumerable = !desc.enumerable; 13 Object.defineProperty(proto, p, desc); 14 } 15 } 16 } 17 assertEq(getFuseState().ArrayPrototypeIteratorFuse.intact, true); 18 19 // Now actually change the value. This pops the fuse. 20 let desc = Object.getOwnPropertyDescriptor(proto, Symbol.iterator); 21 desc.value = function() {}; 22 Object.defineProperty(proto, Symbol.iterator, desc); 23 assertEq(getFuseState().ArrayPrototypeIteratorFuse.intact, false); 24 } 25 test();