blob: 5ec54e0f5cf184d341aa63d1034d96cb9448abb0 [file] [log] [blame]
"use strict";
description('Tests ES6 %ThrowTypeError% intrinsic is unique');
class ThrowTypeErrorSource {
constructor(context, base, names)
{
this.context = context;
this.base = base;
this.names = names;
}
checkTypeErrorFunctions(throwTypeErrorFunction)
{
let errors = 0;
for (let name of this.names) {
let desc = Object.getOwnPropertyDescriptor(this.base, name);
if (!desc)
return 0;
for (let accessorType of ["get", "set"]) {
let accessor = desc[accessorType];
if (accessor && accessor !== throwTypeErrorFunction) {
testFailed(this.context + " " + accessorType + "ter for \"" + name + "\" is not the same %ThrowTypeError% intrinsic");
errors++;
}
}
}
return errors;
}
}
class A { };
let arrayProtoPush = Array.prototype.push;
function strictArguments()
{
return arguments;
}
let sloppyArguments = Function("return arguments;");
function test()
{
let baseThrowTypeErrorFunction = Object.getOwnPropertyDescriptor(arguments, "callee").get;
let sources = [
new ThrowTypeErrorSource("Strict arguments", strictArguments(), ["callee"]),
new ThrowTypeErrorSource("Sloppy arguments", sloppyArguments(), ["callee"]),
];
let errors = 0;
for (let source of sources)
errors += source.checkTypeErrorFunctions(baseThrowTypeErrorFunction);
if (!errors)
testPassed("%ThrowTypeError% intrinsic is unique");
}
test();