// WeakSet constructor with adder change. var originalAdder = WeakSet.prototype.add; var counter = 0; WeakSet.prototype.add = function (key) { counter++; return originalAdder.call(this, key); }; var obj0 = {}; var obj1 = {}; var obj2 = []; var obj3 = new Date(); var obj4 = new Error(); var obj5 = JSON; var values = [ obj0, obj1, obj2, obj3, obj4, obj5, obj4, obj3, obj2, obj1, obj0, ]; var set = new WeakSet(values); if (counter !== values.length) throw new Error("bad counter " + counter); WeakSet.prototype.add = function () { throw new Error("adder called"); }; var set = new WeakSet(); var set = new WeakSet([]); var error = null; try { var set = new WeakSet([ 0 ]); } catch (e) { error = e; } if (!error) throw new Error("error not thrown"); if (String(error) !== "Error: adder called") throw new Error("bad error " + String(error));