js/src/tests/ecma_5/extensions/array-toString-recursion.js

branch
TOR_BUG_3246
changeset 7
129ffea94266
equal deleted inserted replaced
-1:000000000000 0:97ff8b12eb53
1 /*
2 * Any copyright is dedicated to the Public Domain.
3 * http://creativecommons.org/licenses/publicdomain/
4 */
5
6 //-----------------------------------------------------------------------------
7 var BUGNUMBER = 635389;
8 var summary = 'Infinite recursion via [].{toString,toLocaleString,join}';
9
10 print(BUGNUMBER + ": " + summary);
11
12 /**************
13 * BEGIN TEST *
14 **************/
15
16 try
17 {
18 var x = [];
19 x.join = Array.prototype.toString;
20 "" + x;
21 throw new Error("should have thrown");
22 }
23 catch (e)
24 {
25 assertEq(e instanceof InternalError, true,
26 "should have thrown for over-recursion");
27 }
28
29 try
30 {
31 var x = { toString: Array.prototype.toString, join: Array.prototype.toString };
32 "" + x;
33 throw new Error("should have thrown");
34 }
35 catch (e)
36 {
37 assertEq(e instanceof InternalError, true,
38 "should have thrown for over-recursion");
39 }
40
41 /******************************************************************************/
42
43 if (typeof reportCompare === "function")
44 reportCompare(true, true);
45
46 print("All tests passed!");

mercurial