// Any copyright is dedicated to the Public Domain. // http://creativecommons.org/licenses/publicdomain/ //----------------------------------------------------------------------------- var BUGNUMBER = 1197097; var summary = "JSON.stringify shouldn't use context-wide cycle detection"; print(BUGNUMBER + ": " + summary); /************** * BEGIN TEST * **************/ var arr; // Nested yet separate JSON.stringify is okay. arr = [{}]; assertEq(JSON.stringify(arr, function(k, v) { assertEq(JSON.stringify(arr), "[{}]"); return v; }), "[{}]"); // SpiderMonkey censors cycles in array-joining. This mechanism must not // interfere with the cycle detection in JSON.stringify. arr = [{ toString: function() { var s = JSON.stringify(arr); assertEq(s, "[{}]"); return s; } }]; assertEq(arr.join(), "[{}]"); /******************************************************************************/ if (typeof reportCompare === "function") reportCompare(true, true); print("Tests complete");