blob: c3df7f31ddb5cb31d5b373f1d30d756fccab1a5e [file] [log] [blame]
/*
* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/licenses/publicdomain/
*/
function checkConstruct(thing) {
try {
new thing();
assertEq(0, 1, "not reached " + thing);
} catch (e) {
assertEq(String(e.message).indexOf(" is not a constructor") === -1, false);
}
}
var re = /aaa/
checkConstruct(re);
var boundFunctionPrototype = Function.prototype.bind();
checkConstruct(boundFunctionPrototype);
var boundBuiltin = Math.sin.bind();
checkConstruct(boundBuiltin);
/* We set the proxies construct trap to undefined,
* so the call trap is used as constructor.
*/
var handler = {
getPropertyDescriptor(name) {
/* toSource may be called to generate error message. */
assertEq(name, "toSource");
return { value: () => "foo" };
}
};
var proxiedFunctionPrototype = Proxy.create(handler, Function.prototype, undefined);
checkConstruct(proxiedFunctionPrototype);
var proxiedBuiltin = Proxy.create(handler, parseInt, undefined);
checkConstruct(proxiedBuiltin);
if (typeof reportCompare == 'function')
reportCompare(0, 0, "ok");