/* Any copyright is dedicated to the Public Domain. * http://creativecommons.org/licenses/publicdomain/ */ // Symbol(symbol) throws a TypeError. var sym = Symbol(); assertThrowsInstanceOf(() => Symbol(sym), TypeError); // Symbol(undefined) is equivalent to Symbol(). assertEq(Symbol(undefined).toString(), "Symbol()"); // Otherwise, Symbol(v) means Symbol(ToString(v)). assertEq(Symbol(7).toString(), "Symbol(7)"); assertEq(Symbol(true).toString(), "Symbol(true)"); assertEq(Symbol(null).toString(), "Symbol(null)"); assertEq(Symbol([1, 2]).toString(), "Symbol(1,2)"); var symobj = Object(sym); assertThrowsInstanceOf(() => Symbol(symobj), TypeError); var hits = 0; var obj = { toString: function () { hits++; return "ponies"; } }; assertEq(Symbol(obj).toString(), "Symbol(ponies)"); assertEq(hits, 1); assertEq(Object.getPrototypeOf(Symbol.prototype), Object.prototype); // Symbol.prototype is not itself a Symbol object. assertThrowsInstanceOf(() => Symbol.prototype.valueOf(), TypeError); if (typeof reportCompare === "function") reportCompare(0, 0);