| Index: test/mjsunit/harmony/proxies-enumerate.js
|
| diff --git a/test/mjsunit/harmony/proxies-enumerate.js b/test/mjsunit/harmony/proxies-enumerate.js
|
| index 0da706d9e101f0814ba5c0dab2ed4f815fa78b67..82464d0c7fed29a3f6ec1a984aab8c9f03bb2833 100644
|
| --- a/test/mjsunit/harmony/proxies-enumerate.js
|
| +++ b/test/mjsunit/harmony/proxies-enumerate.js
|
| @@ -72,3 +72,38 @@ TestNonStringKey({bad: "value"});
|
| TestNonStringKey(null);
|
| TestNonStringKey(undefined);
|
| TestNonStringKey(true);
|
| +
|
| +(function testProtoProxyEnumerate() {
|
| + var keys = ['a', 'b', 'c', 'd'];
|
| + var handler = {
|
| + enumerate() { return keys[Symbol.iterator]() },
|
| + has(target, key) { return false }
|
| + };
|
| + var proxy = new Proxy({}, handler);
|
| + var seen_keys = [];
|
| + for (var i in proxy) {
|
| + seen_keys.push(i);
|
| + }
|
| + assertEquals([], seen_keys);
|
| +
|
| + handler.has = function(target, key) { return true };
|
| + for (var i in proxy) {
|
| + seen_keys.push(i);
|
| + }
|
| + assertEquals(keys, seen_keys);
|
| +
|
| + o = {__proto__:proxy};
|
| + handler.has = function(target, key) { return false };
|
| + seen_keys = [];
|
| + for (var i in o) {
|
| + seen_keys.push(i);
|
| + }
|
| + assertEquals([], seen_keys);
|
| +
|
| + handler.has = function(target, key) { return true };
|
| + seen_keys = [];
|
| + for (var i in o) {
|
| + seen_keys.push(i);
|
| + }
|
| + assertEquals(keys, seen_keys);
|
| +})();
|
|
|