mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 19:57:44 +00:00
LibJS: Convert is_loosely_equal() to ThrowCompletionOr
This commit is contained in:
parent
b5e28410c5
commit
48ac15758e
4 changed files with 8 additions and 8 deletions
|
@ -925,9 +925,9 @@ Value BinaryExpression::execute(Interpreter& interpreter, GlobalObject& global_o
|
|||
case BinaryOp::StrictlyInequals:
|
||||
return Value(!is_strictly_equal(lhs_result, rhs_result));
|
||||
case BinaryOp::LooselyEquals:
|
||||
return Value(is_loosely_equal(global_object, lhs_result, rhs_result));
|
||||
return Value(TRY_OR_DISCARD(is_loosely_equal(global_object, lhs_result, rhs_result)));
|
||||
case BinaryOp::LooselyInequals:
|
||||
return Value(!is_loosely_equal(global_object, lhs_result, rhs_result));
|
||||
return Value(!TRY_OR_DISCARD(is_loosely_equal(global_object, lhs_result, rhs_result)));
|
||||
case BinaryOp::GreaterThan:
|
||||
return greater_than(global_object, lhs_result, rhs_result);
|
||||
case BinaryOp::GreaterThanEquals:
|
||||
|
|
|
@ -57,12 +57,12 @@ void Store::execute_impl(Bytecode::Interpreter& interpreter) const
|
|||
|
||||
static Value abstract_inequals(GlobalObject& global_object, Value src1, Value src2)
|
||||
{
|
||||
return Value(!is_loosely_equal(global_object, src1, src2));
|
||||
return Value(!TRY_OR_DISCARD(is_loosely_equal(global_object, src1, src2)));
|
||||
}
|
||||
|
||||
static Value abstract_equals(GlobalObject& global_object, Value src1, Value src2)
|
||||
{
|
||||
return Value(is_loosely_equal(global_object, src1, src2));
|
||||
return Value(TRY_OR_DISCARD(is_loosely_equal(global_object, src1, src2)));
|
||||
}
|
||||
|
||||
static Value typed_inequals(GlobalObject&, Value src1, Value src2)
|
||||
|
|
|
@ -1286,7 +1286,7 @@ bool is_strictly_equal(Value lhs, Value rhs)
|
|||
}
|
||||
|
||||
// 7.2.14 IsLooselyEqual ( x, y ), https://tc39.es/ecma262/#sec-islooselyequal
|
||||
bool is_loosely_equal(GlobalObject& global_object, Value lhs, Value rhs)
|
||||
ThrowCompletionOr<bool> is_loosely_equal(GlobalObject& global_object, Value lhs, Value rhs)
|
||||
{
|
||||
auto& vm = global_object.vm();
|
||||
|
||||
|
@ -1346,13 +1346,13 @@ bool is_loosely_equal(GlobalObject& global_object, Value lhs, Value rhs)
|
|||
|
||||
// 11. If Type(x) is either String, Number, BigInt, or Symbol and Type(y) is Object, return IsLooselyEqual(x, ? ToPrimitive(y)).
|
||||
if ((lhs.is_string() || lhs.is_number() || lhs.is_bigint() || lhs.is_symbol()) && rhs.is_object()) {
|
||||
auto rhs_primitive = TRY_OR_DISCARD(rhs.to_primitive(global_object));
|
||||
auto rhs_primitive = TRY(rhs.to_primitive(global_object));
|
||||
return is_loosely_equal(global_object, lhs, rhs_primitive);
|
||||
}
|
||||
|
||||
// 12. If Type(x) is Object and Type(y) is either String, Number, BigInt, or Symbol, return IsLooselyEqual(? ToPrimitive(x), y).
|
||||
if (lhs.is_object() && (rhs.is_string() || rhs.is_number() || rhs.is_bigint() || rhs.is_symbol())) {
|
||||
auto lhs_primitive = TRY_OR_DISCARD(lhs.to_primitive(global_object));
|
||||
auto lhs_primitive = TRY(lhs.to_primitive(global_object));
|
||||
return is_loosely_equal(global_object, lhs_primitive, rhs);
|
||||
}
|
||||
|
||||
|
|
|
@ -422,7 +422,7 @@ Value in(GlobalObject&, Value lhs, Value rhs);
|
|||
Value instance_of(GlobalObject&, Value lhs, Value rhs);
|
||||
Value ordinary_has_instance(GlobalObject&, Value lhs, Value rhs);
|
||||
|
||||
bool is_loosely_equal(GlobalObject&, Value lhs, Value rhs);
|
||||
ThrowCompletionOr<bool> is_loosely_equal(GlobalObject&, Value lhs, Value rhs);
|
||||
bool is_strictly_equal(Value lhs, Value rhs);
|
||||
bool same_value(Value lhs, Value rhs);
|
||||
bool same_value_zero(Value lhs, Value rhs);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue