]>
Commit | Line | Data |
---|---|---|
ed1e77d3 A |
1 | // WeakSet constructor with adder change. |
2 | ||
3 | var originalAdder = WeakSet.prototype.add; | |
4 | var counter = 0; | |
5 | ||
6 | WeakSet.prototype.add = function (key) { | |
7 | counter++; | |
8 | return originalAdder.call(this, key); | |
9 | }; | |
10 | ||
11 | var obj0 = {}; | |
12 | var obj1 = {}; | |
13 | var obj2 = []; | |
14 | var obj3 = new Date(); | |
15 | var obj4 = new Error(); | |
16 | var obj5 = JSON; | |
17 | ||
18 | var values = [ | |
19 | obj0, | |
20 | obj1, | |
21 | obj2, | |
22 | obj3, | |
23 | obj4, | |
24 | obj5, | |
25 | obj4, | |
26 | obj3, | |
27 | obj2, | |
28 | obj1, | |
29 | obj0, | |
30 | ]; | |
31 | var set = new WeakSet(values); | |
32 | if (counter !== values.length) | |
33 | throw new Error("bad counter " + counter); | |
34 | ||
35 | WeakSet.prototype.add = function () { | |
36 | throw new Error("adder called"); | |
37 | }; | |
38 | ||
39 | var set = new WeakSet(); | |
40 | var set = new WeakSet([]); | |
41 | var error = null; | |
42 | try { | |
43 | var set = new WeakSet([ 0 ]); | |
44 | } catch (e) { | |
45 | error = e; | |
46 | } | |
47 | if (!error) | |
48 | throw new Error("error not thrown"); | |
49 | if (String(error) !== "Error: adder called") | |
50 | throw new Error("bad error " + String(error)); | |
51 |