Index: test/mjsunit/strong/load-proxy.js |
diff --git a/test/mjsunit/strong/load-proxy.js b/test/mjsunit/strong/load-proxy.js |
deleted file mode 100644 |
index 417a41faf8dfd0f9f313ba14b6c9ea7c579ddc49..0000000000000000000000000000000000000000 |
--- a/test/mjsunit/strong/load-proxy.js |
+++ /dev/null |
@@ -1,100 +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 --strong-mode |
- |
-// Forwarding proxies adapted from proposal definition |
-function handlerMaker1(obj) { |
- return { |
- getPropertyDescriptor: function(name) { |
- var desc; |
- var searchObj = obj; |
- while (desc === undefined && searchObj != null) { |
- desc = Object.getOwnPropertyDescriptor(searchObj, name); |
- searchObj = searchObj.__proto__; |
- } |
- // a trapping proxy's properties must always be configurable |
- if (desc !== undefined) { desc.configurable = true; } |
- return desc; |
- }, |
- fix: function() { |
- if (Object.isFrozen(obj)) { |
- var result = {}; |
- Object.getOwnPropertyNames(obj).forEach(function(name) { |
- result[name] = Object.getOwnPropertyDescriptor(obj, name); |
- }); |
- return result; |
- } |
- // As long as obj is not frozen, the proxy won't allow itself to be fixed |
- return undefined; // will cause a TypeError to be thrown |
- } |
- }; |
-} |
-function handlerMaker2(obj) { |
- return { |
- get: function(receiver, name) { |
- return obj[name]; |
- }, |
- fix: function() { |
- if (Object.isFrozen(obj)) { |
- var result = {}; |
- Object.getOwnPropertyNames(obj).forEach(function(name) { |
- result[name] = Object.getOwnPropertyDescriptor(obj, name); |
- }); |
- return result; |
- } |
- // As long as obj is not frozen, the proxy won't allow itself to be fixed |
- return undefined; // will cause a TypeError to be thrown |
- } |
- }; |
-} |
-var baseObj = {}; |
-var proxy1 = new Proxy({}, handlerMaker1(baseObj)); |
-var proxy2 = new Proxy({}, handlerMaker2(baseObj)); |
-var childObj1 = { __proto__: proxy1 }; |
-var childObj2 = { __proto__: proxy2 }; |
-var childObjAccessor1 = { set foo(_){}, set "1"(_){}, __proto__: proxy1 }; |
-var childObjAccessor2 = { set foo(_){}, set "1"(_){}, __proto__: proxy2 }; |
- |
-(function() { |
- "use strong"; |
- // TODO(conradw): These asserts are sanity checking V8's proxy implementation. |
- // Strong mode semantics for ES6 proxies still need to be explored. |
- assertDoesNotThrow(function(){proxy1.foo}); |
- assertDoesNotThrow(function(){proxy1[1]}); |
- assertDoesNotThrow(function(){proxy2.foo}); |
- assertDoesNotThrow(function(){proxy2[1]}); |
- assertDoesNotThrow(function(){childObj1.foo}); |
- assertDoesNotThrow(function(){childObj1[1]}); |
- assertDoesNotThrow(function(){childObj2.foo}); |
- assertDoesNotThrow(function(){childObj2[1]}); |
- assertThrows(function(){baseObj.foo}, TypeError); |
- assertThrows(function(){baseObj[1]}, TypeError); |
- assertThrows(function(){childObjAccessor1.foo}, TypeError); |
- assertThrows(function(){childObjAccessor1[1]}, TypeError); |
- assertThrows(function(){childObjAccessor2.foo}, TypeError); |
- assertThrows(function(){childObjAccessor2[1]}, TypeError); |
- |
- // Once the proxy is no longer trapping, property access should have strong |
- // semantics. |
- Object.freeze(baseObj); |
- |
- // TODO(neis): Reenable once proxies properly support freeze. |
- // |
- // Object.freeze(proxy1); |
- // assertThrows(function(){proxy1.foo}, TypeError); |
- // assertThrows(function(){proxy1[1]}, TypeError); |
- // assertThrows(function(){childObj1.foo}, TypeError); |
- // assertThrows(function(){childObj1[1]}, TypeError); |
- // assertThrows(function(){childObjAccessor1.foo}, TypeError); |
- // assertThrows(function(){childObjAccessor1[1]}, TypeError); |
- // |
- // Object.freeze(proxy2); |
- // assertThrows(function(){proxy2.foo}, TypeError); |
- // assertThrows(function(){proxy2[1]}, TypeError); |
- // assertThrows(function(){childObj2.foo}, TypeError); |
- // assertThrows(function(){childObj2[1]}, TypeError); |
- // assertThrows(function(){childObjAccessor2.foo}, TypeError); |
- // assertThrows(function(){childObjAccessor2[1]}, TypeError); |
-})(); |