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-tostring | 5 // Flags: --harmony-tostring |
| 6 | 6 |
| 7 'use strict'; | 7 'use strict'; |
| 8 | 8 |
| 9 function assertGetterName(expected, object, name) { | 9 function GetPropertyDescriptor(object, field, indirect) { |
| 10 var descr = Object.getOwnPropertyDescriptor(object, name); | 10 if (!indirect) |
| 11 return Object.getOwnPropertyDescriptor(object, field); | |
| 12 var descriptor; | |
| 13 while (descriptor === undefined && object !== Object.prototype) { | |
| 14 descriptor = Object.getOwnPropertyDescriptor(object, field); | |
| 15 object = object.__proto__; | |
| 16 } | |
| 17 return descriptor; | |
| 18 } | |
| 19 | |
| 20 function assertGetterName(expected, object, name, indirect) { | |
| 21 var descr = GetPropertyDescriptor(object, name, indirect); | |
| 11 assertSame(expected, descr.get.name); | 22 assertSame(expected, descr.get.name); |
| 12 } | 23 } |
| 13 | 24 |
| 14 | 25 |
| 15 function assertSetterName(expected, object, name) { | 26 function assertSetterName(expected, object, name, indirect) { |
| 16 var descr = Object.getOwnPropertyDescriptor(object, name); | 27 var descr = GetPropertyDescriptor(object, name); |
| 17 assertSame(expected, descr.set.name); | 28 assertSame(expected, descr.set.name); |
| 18 } | 29 } |
| 19 | 30 |
| 20 | 31 |
| 21 assertGetterName('get byteLength', ArrayBuffer.prototype, 'byteLength'); | 32 assertGetterName('get byteLength', ArrayBuffer.prototype, 'byteLength'); |
| 22 assertGetterName('get size', Set.prototype, 'size'); | 33 assertGetterName('get size', Set.prototype, 'size'); |
| 23 assertGetterName('get size', Map.prototype, 'size'); | 34 assertGetterName('get size', Map.prototype, 'size'); |
| 24 | 35 |
| 25 | 36 |
| 26 let typedArrays = [ | 37 let typedArrays = [ |
| 27 Uint8Array, | 38 Uint8Array, |
| 28 Int8Array, | 39 Int8Array, |
| 29 Uint16Array, | 40 Uint16Array, |
| 30 Int16Array, | 41 Int16Array, |
| 31 Uint32Array, | 42 Uint32Array, |
| 32 Int32Array, | 43 Int32Array, |
| 33 Float32Array, | 44 Float32Array, |
| 34 Float64Array, | 45 Float64Array, |
| 35 Uint8ClampedArray | 46 Uint8ClampedArray |
| 36 ]; | 47 ]; |
| 37 | 48 |
| 38 for (let f of typedArrays) { | 49 for (let f of typedArrays) { |
| 39 assertGetterName('get buffer', f.prototype, 'buffer'); | 50 assertGetterName('get buffer', f.prototype, 'buffer', true); |
|
adamk
2015/06/13 00:49:38
Wouldn't this work with the old code just changed
Dan Ehrenberg
2015/06/13 05:54:09
I thought it was nicer to do the proto walk becaus
| |
| 40 assertGetterName('get byteOffset', f.prototype, 'byteOffset'); | 51 assertGetterName('get byteOffset', f.prototype, 'byteOffset', true); |
| 41 assertGetterName('get byteLength', f.prototype, 'byteLength'); | 52 assertGetterName('get byteLength', f.prototype, 'byteLength', true); |
| 42 assertGetterName('get length', f.prototype, 'length'); | 53 assertGetterName('get length', f.prototype, 'length', true); |
| 43 assertGetterName('get [Symbol.toStringTag]', f.prototype, Symbol.toStringTag); | 54 assertGetterName('get [Symbol.toStringTag]', f.prototype, Symbol.toStringTag, true); |
| 44 } | 55 } |
| 45 | 56 |
| 46 | 57 |
| 47 assertGetterName('get buffer', DataView.prototype, 'buffer'); | 58 assertGetterName('get buffer', DataView.prototype, 'buffer'); |
| 48 assertGetterName('get byteOffset', DataView.prototype, 'byteOffset'); | 59 assertGetterName('get byteOffset', DataView.prototype, 'byteOffset'); |
| 49 assertGetterName('get byteLength', DataView.prototype, 'byteLength'); | 60 assertGetterName('get byteLength', DataView.prototype, 'byteLength'); |
| 50 | 61 |
| 51 | 62 |
| 52 assertGetterName('get __proto__', Object.prototype, '__proto__'); | 63 assertGetterName('get __proto__', Object.prototype, '__proto__'); |
| 53 assertSetterName('set __proto__', Object.prototype, '__proto__'); | 64 assertSetterName('set __proto__', Object.prototype, '__proto__'); |
| OLD | NEW |