From 48ac15758e24945841e224946ebdcd4ed4b793e4 Mon Sep 17 00:00:00 2001 From: Idan Horowitz Date: Mon, 18 Oct 2021 23:46:42 +0300 Subject: [PATCH] LibJS: Convert is_loosely_equal() to ThrowCompletionOr --- Userland/Libraries/LibJS/AST.cpp | 4 ++-- Userland/Libraries/LibJS/Bytecode/Op.cpp | 4 ++-- Userland/Libraries/LibJS/Runtime/Value.cpp | 6 +++--- Userland/Libraries/LibJS/Runtime/Value.h | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Userland/Libraries/LibJS/AST.cpp b/Userland/Libraries/LibJS/AST.cpp index e1e81f749a..0340c5e889 100644 --- a/Userland/Libraries/LibJS/AST.cpp +++ b/Userland/Libraries/LibJS/AST.cpp @@ -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: diff --git a/Userland/Libraries/LibJS/Bytecode/Op.cpp b/Userland/Libraries/LibJS/Bytecode/Op.cpp index b072a0ad6f..e930e75ed0 100644 --- a/Userland/Libraries/LibJS/Bytecode/Op.cpp +++ b/Userland/Libraries/LibJS/Bytecode/Op.cpp @@ -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) diff --git a/Userland/Libraries/LibJS/Runtime/Value.cpp b/Userland/Libraries/LibJS/Runtime/Value.cpp index ed4ee00680..93964005e5 100644 --- a/Userland/Libraries/LibJS/Runtime/Value.cpp +++ b/Userland/Libraries/LibJS/Runtime/Value.cpp @@ -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 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); } diff --git a/Userland/Libraries/LibJS/Runtime/Value.h b/Userland/Libraries/LibJS/Runtime/Value.h index af84ab884a..d212086630 100644 --- a/Userland/Libraries/LibJS/Runtime/Value.h +++ b/Userland/Libraries/LibJS/Runtime/Value.h @@ -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 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);