Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(46)

Unified Diff: test/mjsunit/harmony/proxies-enumerate.js

Issue 1717893002: Remove the Proxy enumerate trap (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fix tests Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « test/mjsunit/harmony/debug-stepin-proxies.js ('k') | test/mjsunit/harmony/proxies-for.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/mjsunit/harmony/proxies-enumerate.js
diff --git a/test/mjsunit/harmony/proxies-enumerate.js b/test/mjsunit/harmony/proxies-enumerate.js
deleted file mode 100644
index 82464d0c7fed29a3f6ec1a984aab8c9f03bb2833..0000000000000000000000000000000000000000
--- a/test/mjsunit/harmony/proxies-enumerate.js
+++ /dev/null
@@ -1,109 +0,0 @@
-// Copyright 2015 the V8 project authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Flags: --harmony-proxies
-
-var target = {
- "target_one": 1
-};
-target.__proto__ = {
- "target_two": 2
-};
-var handler = {
- enumerate: function(target) {
- function* keys() {
- yield "foo";
- yield "bar";
- }
- return keys();
- },
- // For-in calls "has" on every iteration, so for TestForIn() below to
- // detect all results of the "enumerate" trap, "has" must return true.
- has: function(target, name) {
- return true;
- }
-}
-
-var proxy = new Proxy(target, handler);
-
-function TestForIn(receiver, expected) {
- var result = [];
- for (var k in receiver) {
- result.push(k);
- }
- assertEquals(expected, result);
-}
-
-TestForIn(proxy, ["foo", "bar"]);
-
-// Test revoked proxy.
-var pair = Proxy.revocable(target, handler);
-TestForIn(pair.proxy, ["foo", "bar"]);
-pair.revoke();
-assertThrows(()=>{ TestForIn(pair.proxy, ["foo", "bar"]) }, TypeError);
-
-// Properly call traps on proxies on the prototype chain.
-var receiver = {
- "receiver_one": 1
-};
-receiver.__proto__ = proxy;
-TestForIn(receiver, ["receiver_one", "foo", "bar"]);
-
-// Fall through to default behavior when trap is undefined.
-handler.enumerate = undefined;
-TestForIn(proxy, ["target_one", "target_two"]);
-delete handler.enumerate;
-TestForIn(proxy, ["target_one", "target_two"]);
-
-// Non-string keys must be filtered.
-function TestNonStringKey(key) {
- handler.enumerate = function(target) {
- function* keys() { yield key; }
- return keys();
- }
- assertThrows("for (var k in proxy) {}", TypeError);
-}
-
-TestNonStringKey(1);
-TestNonStringKey(3.14);
-TestNonStringKey(Symbol("foo"));
-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);
-})();
« no previous file with comments | « test/mjsunit/harmony/debug-stepin-proxies.js ('k') | test/mjsunit/harmony/proxies-for.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698