| // Recursion through the get hook works; runaway recursion is checked. | |
| load(libdir + "asserts.js"); | |
| var hits = 0, limit = 10; | |
| var proto = new Proxy({}, { | |
| get(t, id, r) { | |
| assertEq(r, obj); | |
| if (hits++ >= limit) | |
| return "ding"; | |
| return obj[id]; | |
| } | |
| }); | |
| var obj = Object.create(proto); | |
| assertEq(obj.prop, "ding"); | |
| hits = 0; | |
| limit = Infinity; | |
| assertThrowsInstanceOf(() => obj.prop, InternalError); | |
| assertEq(hits > 10, true); |