| OLD | NEW |
| 1 // Copyright 2016 the V8 project authors. All rights reserved. | 1 // Copyright 2016 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 --harmony-reflect --allow-natives-syntax | 5 // Flags: --harmony-proxies --harmony-reflect --allow-natives-syntax |
| 6 | 6 |
| 7 | 7 |
| 8 var symbol = %CreatePrivateSymbol("private"); | 8 var symbol = %CreatePrivateSymbol("private"); |
| 9 | 9 |
| 10 | 10 |
| 11 // Private symbols must never be listed. | 11 // Private symbols must never be listed. |
| 12 | 12 |
| 13 var object = {}; | 13 var object = {}; |
| 14 object[symbol] = 42; | 14 object[symbol] = 42; |
| 15 for (var key of Object.keys(object)) assertUnreachable(); | 15 for (var key of Object.keys(object)) assertUnreachable(); |
| 16 for (var key of Object.getOwnPropertySymbols(object)) assertUnreachable(); | 16 for (var key of Object.getOwnPropertySymbols(object)) assertUnreachable(); |
| 17 for (var key of Object.getOwnPropertyNames(object)) assertUnreachable(); | 17 for (var key of Object.getOwnPropertyNames(object)) assertUnreachable(); |
| 18 for (var key of Reflect.ownKeys(object)) assertUnreachable(); | 18 for (var key of Reflect.ownKeys(object)) assertUnreachable(); |
| 19 for (var key of Reflect.enumerate(object)) assertUnreachable(); | |
| 20 for (var key in object) assertUnreachable(); | 19 for (var key in object) assertUnreachable(); |
| 21 | 20 |
| 22 var object2 = {__proto__: object}; | 21 var object2 = {__proto__: object}; |
| 23 for (var key of Object.keys(object2)) assertUnreachable(); | 22 for (var key of Object.keys(object2)) assertUnreachable(); |
| 24 for (var key of Object.getOwnPropertySymbols(object2)) assertUnreachable(); | 23 for (var key of Object.getOwnPropertySymbols(object2)) assertUnreachable(); |
| 25 for (var key of Object.getOwnPropertyNames(object2)) assertUnreachable(); | 24 for (var key of Object.getOwnPropertyNames(object2)) assertUnreachable(); |
| 26 for (var key of Reflect.ownKeys(object2)) assertUnreachable(); | 25 for (var key of Reflect.ownKeys(object2)) assertUnreachable(); |
| 27 for (var key of Reflect.enumerate(object2)) assertUnreachable(); | |
| 28 for (var key in object2) assertUnreachable(); | 26 for (var key in object2) assertUnreachable(); |
| 29 | 27 |
| 30 | 28 |
| 31 // Private symbols must never leak to proxy traps. | 29 // Private symbols must never leak to proxy traps. |
| 32 | 30 |
| 33 var proxy = new Proxy({}, new Proxy({}, {get() {return () => {throw 666}}})); | 31 var proxy = new Proxy({}, new Proxy({}, {get() {return () => {throw 666}}})); |
| 34 var object = {__proto__: proxy}; | 32 var object = {__proto__: proxy}; |
| 35 | 33 |
| 36 // [[Set]] | 34 // [[Set]] |
| 37 assertEquals(42, proxy[symbol] = 42); | 35 assertEquals(42, proxy[symbol] = 42); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 69 assertFalse(symbol in object); | 67 assertFalse(symbol in object); |
| 70 assertFalse(Reflect.has(object, symbol)); | 68 assertFalse(Reflect.has(object, symbol)); |
| 71 | 69 |
| 72 // [[Get]] | 70 // [[Get]] |
| 73 assertEquals(undefined, proxy[symbol]); | 71 assertEquals(undefined, proxy[symbol]); |
| 74 assertEquals(undefined, Reflect.get(proxy, symbol)); | 72 assertEquals(undefined, Reflect.get(proxy, symbol)); |
| 75 assertEquals(undefined, Reflect.get(proxy, symbol, 42)); | 73 assertEquals(undefined, Reflect.get(proxy, symbol, 42)); |
| 76 assertEquals(undefined, object[symbol]); | 74 assertEquals(undefined, object[symbol]); |
| 77 assertEquals(undefined, Reflect.get(object, symbol)); | 75 assertEquals(undefined, Reflect.get(object, symbol)); |
| 78 assertEquals(undefined, Reflect.get(object, symbol, 42)); | 76 assertEquals(undefined, Reflect.get(object, symbol, 42)); |
| OLD | NEW |