1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 08:47:34 +00:00

js: Coerce assert() argument to boolean

It's JavaScript after all :^)
This commit is contained in:
Linus Groh 2020-04-12 19:42:19 +01:00 committed by Andreas Kling
parent 62d0fa5af8
commit 6d5d668585

View file

@ -360,16 +360,13 @@ void repl(JS::Interpreter& interpreter)
JS::Value assert_impl(JS::Interpreter& interpreter) JS::Value assert_impl(JS::Interpreter& interpreter)
{ {
if (!interpreter.argument_count()) if (!interpreter.argument_count())
return interpreter.throw_exception<JS::Error>("TypeError", "No arguments specified"); return interpreter.throw_exception<JS::TypeError>("No arguments specified");
auto assertion_value = interpreter.argument(0); auto assertion_value = interpreter.argument(0).to_boolean();
if (!assertion_value.is_boolean()) if (!assertion_value)
return interpreter.throw_exception<JS::Error>("TypeError", "The first argument is not a boolean");
if (!assertion_value.to_boolean())
return interpreter.throw_exception<JS::Error>("AssertionError", "The assertion failed!"); return interpreter.throw_exception<JS::Error>("AssertionError", "The assertion failed!");
return assertion_value; return JS::Value(assertion_value);
} }
int main(int argc, char** argv) int main(int argc, char** argv)