| // test against future pic support for symbols |
| |
| // assignments to watched objects must not be cached |
| var obj = {}; |
| var x = Symbol.for("x"); |
| obj[x] = 0; |
| var hits = 0; |
| obj.watch(x, function (id, oldval, newval) { hits++; return newval; }); |
| for (var i = 0; i < 10; i++) |
| obj[x] = i; |
| assertEq(hits, 10); |
| |
| // assignments to watched properties via ++ must not be cached |
| hits = 0; |
| for (var i = 0; i < 10; i++) |
| obj[x]++; |
| assertEq(hits, 10); |
| |
| // adding assignment + watchpoint vs. caching |
| hits = 0; |
| obj = {}; |
| obj.watch(x, function (id, oldval, newval) { hits++; return newval; }); |
| for (var i = 0; i < 10; i++) { |
| obj[x] = 1; |
| delete obj[x]; |
| } |
| assertEq(hits, 10); |