property-mutation-3.js (664B)
1 function test() { 2 assertEq(getFuseState().ArrayPrototypeIteratorFuse.intact, true); 3 4 // This defineProperty doesn't change the value so the fuse stays intact. 5 let proto = Array.prototype; 6 let desc = Object.getOwnPropertyDescriptor(proto, Symbol.iterator); 7 Object.defineProperty(proto, Symbol.iterator, desc); 8 assertEq(getFuseState().ArrayPrototypeIteratorFuse.intact, true); 9 10 // Changing the property to an accessor property must pop the fuse. 11 desc.get = desc.value; 12 delete desc.value; 13 delete desc.writable; 14 Object.defineProperty(proto, Symbol.iterator, desc); 15 assertEq(getFuseState().ArrayPrototypeIteratorFuse.intact, false); 16 } 17 test();