Home | History | Annotate | Download | only in harmony
      1 // Copyright 2015 the V8 project authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 // Flags: --harmony-proxies
      6 
      7 var handler = {};
      8 var target = {a:1};
      9 var proxy = new Proxy(target, handler);
     10 
     11 assertTrue(target.hasOwnProperty('a'));
     12 assertTrue(proxy.hasOwnProperty('a'));
     13 assertFalse(target.hasOwnProperty('b'));
     14 assertFalse(proxy.hasOwnProperty('b'));
     15 
     16 
     17 handler.has = function() { assertUnreachable() }
     18 handler.getOwnPropertyDescriptor = function () {}
     19 
     20 assertTrue(target.hasOwnProperty('a'));
     21 assertFalse(proxy.hasOwnProperty('a'));
     22 assertFalse(target.hasOwnProperty('b'));
     23 assertFalse(proxy.hasOwnProperty('b'));
     24 
     25 
     26 handler.getOwnPropertyDescriptor = function() { return {configurable: true} }
     27 
     28 assertTrue(target.hasOwnProperty('a'));
     29 assertTrue(proxy.hasOwnProperty('a'));
     30 assertFalse(target.hasOwnProperty('b'));
     31 assertTrue(proxy.hasOwnProperty('b'));
     32 
     33 
     34 handler.getOwnPropertyDescriptor = function() { throw Error(); }
     35 
     36 assertTrue(target.hasOwnProperty('a'));
     37 assertThrows(function(){ proxy.hasOwnProperty('a') }, Error);
     38 assertFalse(target.hasOwnProperty('b'));
     39 assertThrows(function(){ proxy.hasOwnProperty('b') }, Error);
     40