LibJS: Handle non-string primitive values in Object::to_string()

This commit is contained in:
Linus Groh 2020-04-29 16:36:38 +01:00 committed by Andreas Kling
parent 2c6e7dbd07
commit 4bdb6daac5
Notes: sideshowbarker 2024-07-19 07:11:02 +09:00

View file

@ -361,12 +361,12 @@ Value Object::to_string() const
&& to_string_property.as_object().is_function()) {
auto& to_string_function = static_cast<Function&>(to_string_property.as_object());
auto& interpreter = const_cast<Object*>(this)->interpreter();
auto string_value = interpreter.call(to_string_function, const_cast<Object*>(this));
if (!string_value.is_string())
auto to_string_result = interpreter.call(to_string_function, const_cast<Object*>(this));
if (to_string_result.is_object())
interpreter.throw_exception<TypeError>("Cannot convert object to string");
if (interpreter.exception())
return {};
return string_value;
return js_string(heap(), to_string_result.to_string());
}
return js_string(heap(), String::format("[object %s]", class_name()));
}