splice-delete-non-configurable-during-shrink.js (787B)
1 /* Test that splice causing deletion of a non-configurable property stops at exactly step 12(v) of ES5 15.4.4.12 */ 2 3 var O = [1,2,3,4,5,6]; 4 var A = undefined; 5 Object.defineProperty(O, 3, { configurable: false }); 6 7 try 8 { 9 A = O.splice(0, 6); 10 throw new Error("didn't throw, returned " + A); 11 } 12 catch (e) 13 { 14 assertEq(e instanceof TypeError, true, 15 "deleting O[3] should have caused a TypeError"); 16 } 17 18 assertEq(O.length, 6); // setting length not reached 19 assertEq(A, undefined); // return value not reached 20 21 assertEq(O[5], undefined); // deletion reached 22 assertEq(O[4], undefined); // deletion reached 23 assertEq(O[3], 4); // deletion caused exception 24 assertEq(O[2], 3); // deletion not reached 25 assertEq(O[1], 2); // deletion not reached 26 assertEq(O[0], 1); // deletion not reached