1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 13:27:35 +00:00

LibJS: Implement constructor/non-constructor function calls

This adds Function::construct() for constructor function calls via `new`
keyword. NativeFunction doesn't have constructor behaviour by default,
ScriptFunction simply calls call() in construct()
This commit is contained in:
Linus Groh 2020-04-01 18:31:24 +01:00 committed by Andreas Kling
parent a27884e4be
commit 849e2c77e4
11 changed files with 66 additions and 1 deletions

View file

@ -25,6 +25,27 @@ try {
assert(e.message === "undefined is not a function");
}
try {
Math();
} catch(e) {
assert(e.name === "TypeError");
assert(e.message === "[object MathObject] is not a function");
}
try {
new Math();
} catch(e) {
assert(e.name === "TypeError");
assert(e.message === "[object MathObject] is not a constructor");
}
try {
new isNaN();
} catch(e) {
assert(e.name === "TypeError");
assert(e.message === "[object NativeFunction] is not a constructor");
}
console.log("PASS");
} catch(e) {
console.log("FAIL: " + e);