2 * Any copyright is dedicated to the Public Domain.
3 * http://creativecommons.org/licenses/publicdomain/
6 var gTestfile = 'redefine-arguments-length.js';
7 //-----------------------------------------------------------------------------
8 var BUGNUMBER = 539766;
10 "Object.defineProperty sets arguments.length without setting the " +
11 "length-overridden bit";
13 print(BUGNUMBER + ": " + summary);
19 function test_JSOP_ARGCNT()
21 var length = "length";
22 Object.defineProperty(arguments, length, { value: 17 });
23 assertEq(arguments.length, 17);
24 assertEq(arguments[length], 17);
28 function test_js_fun_apply()
30 var length = "length";
31 Object.defineProperty(arguments, length, { value: 17 });
35 assertEq(arguments.length, 17);
36 assertEq(arguments[length], 17);
37 assertEq(arguments[0], "foo");
38 for (var i = 1; i < 17; i++)
39 assertEq(arguments[i], undefined);
41 fun.apply(null, arguments);
43 test_js_fun_apply("foo");
45 function test_array_toString_sub_1()
47 Object.defineProperty(arguments, "length", { value: 1 });
48 arguments.join = [].join;
49 assertEq([].toString.call(arguments), "1");
51 test_array_toString_sub_1(1, 2);
53 function test_array_toString_sub_2()
55 Object.defineProperty(arguments, "length", { value: 1 });
56 assertEq([].toLocaleString.call(arguments), "1");
58 test_array_toString_sub_2(1, 2);
61 /******************************************************************************/
63 reportCompare(true, true);
65 print("All tests passed!");