Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2015 the V8 project authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Flags: --harmony-proxies | 5 // Flags: --harmony-proxies --harmony-reflect --allow-natives-syntax |
| 6 | 6 |
| 7 (function testBasicFunctionality() { | 7 (function testBasicFunctionality() { |
| 8 var target = { | 8 var target = { |
| 9 target_one: 1, | 9 target_one: 1, |
| 10 property: "value" | 10 property: "value" |
| 11 }; | 11 }; |
| 12 | 12 |
| 13 var handler = {handler:1}; | 13 var handler = {handler:1}; |
| 14 | 14 |
| 15 var proxy = new Proxy(target, handler); | 15 var proxy = new Proxy(target, handler); |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 86 // target for which the handler will return a value. | 86 // target for which the handler will return a value. |
| 87 Object.defineProperty(target, "key3", { | 87 Object.defineProperty(target, "key3", { |
| 88 configurable: false, | 88 configurable: false, |
| 89 set: function() { } | 89 set: function() { } |
| 90 }); | 90 }); |
| 91 assertEquals("value", proxy.property); | 91 assertEquals("value", proxy.property); |
| 92 assertThrows(function(){ proxy.key }, TypeError); | 92 assertThrows(function(){ proxy.key }, TypeError); |
| 93 assertEquals("value", proxy.key2); | 93 assertEquals("value", proxy.key2); |
| 94 assertThrows(function(){ proxy.key3 }, TypeError); | 94 assertThrows(function(){ proxy.key3 }, TypeError); |
| 95 })(); | 95 })(); |
| 96 | |
| 97 (function testGetPrivateSymbol() { | |
| 98 var symbol = %CreatePrivateSymbol("secret"); | |
| 99 var O = { [symbol]: "value" }; | |
| 100 var proxy = new Proxy(O, { get(t, name) { assertUnreachable(); }}); | |
| 101 assertEquals(undefined, proxy[symbol]); | |
| 102 assertEquals(undefined, Reflect.get(proxy, symbol)); | |
| 103 assertEquals("value", O[symbol]); | |
| 104 assertEquals("value", Reflect.get(O, symbol)); | |
| 105 })(); | |
| 106 | |
| 107 (function testGetInternalIterators() { | |
| 108 var log = []; | |
| 109 assertThrows(function() { | |
|
neis
2015/12/03 12:01:24
Can you move the assertThrows down to the line tha
| |
| 110 var array = [1,2,3,4,5] | |
| 111 var origIt = array[Symbol.iterator](); | |
| 112 var it = new Proxy(origIt, { | |
| 113 get(t, name) { | |
| 114 log.push(`[[Get]](iterator, ${String(name)})`); | |
| 115 return Reflect.get(t, name); | |
| 116 }, | |
| 117 set(t, name, val) { | |
| 118 log.push(`[[Set]](iterator, ${String(name)}, ${String(val)})`); | |
| 119 return Reflect.set(t, name, val); | |
| 120 } | |
| 121 }); | |
| 122 | |
| 123 for (var v of it) log.push(v); | |
| 124 }, TypeError); | |
| 125 assertEquals([ | |
| 126 "[[Get]](iterator, Symbol(Symbol.iterator))", | |
| 127 "[[Get]](iterator, next)" | |
| 128 ], log); | |
| 129 })(); | |
| OLD | NEW |