mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 20:17:44 +00:00
LibJS: Throw a TypeError when an arrow function is used as a constructor
This commit is contained in:
parent
1110b1b444
commit
3ffb0a4e87
2 changed files with 9 additions and 0 deletions
|
@ -125,6 +125,8 @@ Value ScriptFunction::call(Interpreter& interpreter)
|
||||||
|
|
||||||
Value ScriptFunction::construct(Interpreter& interpreter)
|
Value ScriptFunction::construct(Interpreter& interpreter)
|
||||||
{
|
{
|
||||||
|
if (m_is_arrow_function)
|
||||||
|
return interpreter.throw_exception<TypeError>(String::format("%s is not a constructor", m_name.characters()));
|
||||||
return call(interpreter);
|
return call(interpreter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -81,6 +81,13 @@ try {
|
||||||
|
|
||||||
assert(Baz.prototype === undefined);
|
assert(Baz.prototype === undefined);
|
||||||
|
|
||||||
|
assertThrowsError(() => {
|
||||||
|
new Baz();
|
||||||
|
}, {
|
||||||
|
error: TypeError,
|
||||||
|
message: "Baz is not a constructor"
|
||||||
|
});
|
||||||
|
|
||||||
(() => {
|
(() => {
|
||||||
"use strict";
|
"use strict";
|
||||||
assert(isStrictMode());
|
assert(isStrictMode());
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue