| function tryGetOwnPropertyDescriptorGetName(obj, property, expectedName) |
| { |
| let descriptor = Object.getOwnPropertyDescriptor(obj, property); |
| if (!descriptor) |
| throw "Couldn't find property descriptor on object " + obj.toString() + " for property " + property.toString(); |
| |
| let getter = descriptor.get; |
| if (!getter) |
| throw "Property " + property.toString() + " on object " + obj.toString() + " is not a getter"; |
| |
| let getterName = getter.name; |
| if (getterName !== expectedName) |
| throw "Wrong getter name for property " + property.toString() + " on object " + obj.toString() + " expected " + expectedName + " got " + getterName; |
| } |
| |
| tryGetOwnPropertyDescriptorGetName(Array, Symbol.species, "get [Symbol.species]"); |
| tryGetOwnPropertyDescriptorGetName(Map, Symbol.species, "get [Symbol.species]"); |
| tryGetOwnPropertyDescriptorGetName(Set, Symbol.species, "get [Symbol.species]"); |
| tryGetOwnPropertyDescriptorGetName(RegExp, Symbol.species, "get [Symbol.species]"); |
| tryGetOwnPropertyDescriptorGetName(Promise, Symbol.species, "get [Symbol.species]"); |
| tryGetOwnPropertyDescriptorGetName(Map.prototype, "size", "get size"); |
| tryGetOwnPropertyDescriptorGetName(Set.prototype, "size", "get size"); |
| tryGetOwnPropertyDescriptorGetName(RegExp.prototype, "flags", "get flags"); |
| tryGetOwnPropertyDescriptorGetName(RegExp.prototype, "sticky", "get sticky"); |
| tryGetOwnPropertyDescriptorGetName(RegExp.prototype, "source", "get source"); |
| |
| if (Object.__lookupGetter__("__proto__").name !== "get __proto__") |
| throw "Expected Object __proto__ getter to be named \"get __proto\""; |
| |
| if (Object.__lookupSetter__("__proto__").name !== "set __proto__") |
| throw "Expected Object __proto__ setter to be named \"set __proto\""; |
| |
| if (Int32Array.prototype.__lookupGetter__("byteOffset").name !== "get byteOffset") |
| throw "Expected TypedArray.prototype byteOffset getter to be named \"get byteOffset\""; |