mapped-arguments-nonconfigurable-strict-delete-4.js (929B)
1 // Copyright (C) 2015 André Bargull. All rights reserved. 2 // This code is governed by the BSD license found in the LICENSE file. 3 4 /*--- 5 info: Mapped arguments object with non-configurable property 6 description: > 7 Mapping works when property is non-configurable, arguments property 8 was not deleted. [[Delete]] operations throws TypeError if called 9 from strict-mode code. Arguments property is changed with [[Set]]. 10 flags: [noStrict] 11 ---*/ 12 13 function argumentsAndStrictDeleteSet(a) { 14 Object.defineProperty(arguments, "0", {configurable: false}); 15 16 // Precondition: Delete is unsuccessful and doesn't affect mapping. 17 var args = arguments; 18 assert.throws(TypeError, function() { "use strict"; delete args[0]; }); 19 assert.sameValue(a, 1); 20 assert.sameValue(arguments[0], 1); 21 22 arguments[0] = 2; 23 assert.sameValue(a, 2); 24 assert.sameValue(arguments[0], 2); 25 } 26 argumentsAndStrictDeleteSet(1); 27 28 reportCompare(0, 0);