28 lines
667 B
JavaScript
28 lines
667 B
JavaScript
// 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);
|