| /* Any copyright is dedicated to the Public Domain. |
| * http://creativecommons.org/licenses/publicdomain/ */ |
| |
| // To JSON.stringify, symbols are the same as undefined. |
| |
| var symbols = [ |
| Symbol(), |
| Symbol.for("ponies"), |
| Symbol.iterator |
| ]; |
| |
| for (var sym of symbols) { |
| assertEq(JSON.stringify(sym), undefined); |
| assertEq(JSON.stringify([sym]), "[null]"); |
| |
| // JSON.stringify skips symbol-valued properties! |
| assertEq(JSON.stringify({x: sym}), '{}'); |
| |
| // However such properties are passed to the replacerFunction if any. |
| var replacer = function (key, val) { |
| assertEq(typeof this, "object"); |
| if (typeof val === "symbol") { |
| assertEq(val, sym); |
| return "ding"; |
| } |
| return val; |
| }; |
| assertEq(JSON.stringify(sym, replacer), '"ding"'); |
| assertEq(JSON.stringify({x: sym}, replacer), '{"x":"ding"}'); |
| } |
| |
| if (typeof reportCompare === 'function') |
| reportCompare(0, 0, 'ok'); |