diff --git a/Libraries/LibJS/Runtime/Value.cpp b/Libraries/LibJS/Runtime/Value.cpp index 7e7c9c054b..37a5d9e3a7 100644 --- a/Libraries/LibJS/Runtime/Value.cpp +++ b/Libraries/LibJS/Runtime/Value.cpp @@ -231,8 +231,8 @@ Value Value::to_number(Interpreter& interpreter) const return Value(parsed_double); } case Type::Symbol: - // FIXME: Get access to the interpreter and throw a TypeError - ASSERT_NOT_REACHED(); + interpreter.throw_exception("Can't convert symbol to number"); + return {}; case Type::Object: auto primitive = m_value.as_object->to_primitive(Object::PreferredType::Number); if (interpreter.exception()) diff --git a/Libraries/LibJS/Tests/Symbol.prototype.toString.js b/Libraries/LibJS/Tests/Symbol.prototype.toString.js index cdbcae073e..02abeb2ba1 100644 --- a/Libraries/LibJS/Tests/Symbol.prototype.toString.js +++ b/Libraries/LibJS/Tests/Symbol.prototype.toString.js @@ -14,13 +14,12 @@ try { message: "Can't convert symbol to string", }); - // FIXME: Uncomment when this doesn't assert - // assertThrowsError(() => { - // s1 + 1; - // }, { - // error: TypeError, - // message: "Can't convert symbol to number", - // }); + assertThrowsError(() => { + s1 + 1; + }, { + error: TypeError, + message: "Can't convert symbol to number", + }); console.log("PASS"); } catch (e) {