summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibJS/Runtime/Value.cpp
diff options
context:
space:
mode:
authorLinus Groh <mail@linusgroh.de>2022-05-02 20:54:39 +0200
committerLinus Groh <mail@linusgroh.de>2022-05-03 01:09:29 +0200
commit9f3f3b0864009b20a9cd02d303aa04b18bdca113 (patch)
treea9550c3806fac82e345e4a78f520b163b4561ee9 /Userland/Libraries/LibJS/Runtime/Value.cpp
parent15f32379bb399e0a8b2928a8de07cd070fb73ee5 (diff)
downloadserenity-9f3f3b0864009b20a9cd02d303aa04b18bdca113.zip
LibJS: Remove implicit wrapping/unwrapping of completion records
This is an editorial change in the ECMA-262 spec, with similar changes in some proposals. See: - https://github.com/tc39/ecma262/commit/7575f74 - https://github.com/tc39/proposal-array-grouping/commit/df899eb - https://github.com/tc39/proposal-shadowrealm/commit/9eb5a12 - https://github.com/tc39/proposal-shadowrealm/commit/c81f527
Diffstat (limited to 'Userland/Libraries/LibJS/Runtime/Value.cpp')
-rw-r--r--Userland/Libraries/LibJS/Runtime/Value.cpp24
1 files changed, 12 insertions, 12 deletions
diff --git a/Userland/Libraries/LibJS/Runtime/Value.cpp b/Userland/Libraries/LibJS/Runtime/Value.cpp
index 50aed9af35..f02fa9009f 100644
--- a/Userland/Libraries/LibJS/Runtime/Value.cpp
+++ b/Userland/Libraries/LibJS/Runtime/Value.cpp
@@ -1,6 +1,6 @@
/*
* Copyright (c) 2020, Andreas Kling <kling@serenityos.org>
- * Copyright (c) 2020-2021, Linus Groh <linusg@serenityos.org>
+ * Copyright (c) 2020-2022, Linus Groh <linusg@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
@@ -523,7 +523,7 @@ ThrowCompletionOr<BigInt*> Value::to_bigint(GlobalObject& global_object) const
case Type::Double:
return vm.throw_completion<TypeError>(global_object, ErrorType::Convert, "number", "BigInt");
case Type::String: {
- // 1. Let n be ! StringToBigInt(prim).
+ // 1. Let n be StringToBigInt(prim).
auto bigint = primitive.string_to_bigint(global_object);
// 2. If n is undefined, throw a SyntaxError exception.
@@ -590,7 +590,7 @@ Optional<BigInt*> Value::string_to_bigint(GlobalObject& global_object) const
{
VERIFY(is_string());
- // 1. Let text be ! StringToCodePoints(str).
+ // 1. Let text be StringToCodePoints(str).
auto text = as_string().string().view().trim_whitespace();
// 2. Let literal be ParseText(text, StringIntegerLiteral).
@@ -1429,46 +1429,46 @@ ThrowCompletionOr<bool> is_loosely_equal(GlobalObject& global_object, Value lhs,
// == End of B.3.6.2 ==
- // 5. If Type(x) is Number and Type(y) is String, return IsLooselyEqual(x, ! ToNumber(y)).
+ // 5. If Type(x) is Number and Type(y) is String, return ! IsLooselyEqual(x, ! ToNumber(y)).
if (lhs.is_number() && rhs.is_string())
return is_loosely_equal(global_object, lhs, MUST(rhs.to_number(global_object)));
- // 6. If Type(x) is String and Type(y) is Number, return IsLooselyEqual(! ToNumber(x), y).
+ // 6. If Type(x) is String and Type(y) is Number, return ! IsLooselyEqual(! ToNumber(x), y).
if (lhs.is_string() && rhs.is_number())
return is_loosely_equal(global_object, MUST(lhs.to_number(global_object)), rhs);
// 7. If Type(x) is BigInt and Type(y) is String, then
if (lhs.is_bigint() && rhs.is_string()) {
- // a. Let n be ! StringToBigInt(y).
+ // a. Let n be StringToBigInt(y).
auto bigint = rhs.string_to_bigint(global_object);
// b. If n is undefined, return false.
if (!bigint.has_value())
return false;
- // c. Return IsLooselyEqual(x, n).
+ // c. Return ! IsLooselyEqual(x, n).
return is_loosely_equal(global_object, lhs, *bigint);
}
- // 8. If Type(x) is String and Type(y) is BigInt, return IsLooselyEqual(y, x).
+ // 8. If Type(x) is String and Type(y) is BigInt, return ! IsLooselyEqual(y, x).
if (lhs.is_string() && rhs.is_bigint())
return is_loosely_equal(global_object, rhs, lhs);
- // 9. If Type(x) is Boolean, return IsLooselyEqual(! ToNumber(x), y).
+ // 9. If Type(x) is Boolean, return ! IsLooselyEqual(! ToNumber(x), y).
if (lhs.is_boolean())
return is_loosely_equal(global_object, MUST(lhs.to_number(global_object)), rhs);
- // 10. If Type(y) is Boolean, return IsLooselyEqual(x, ! ToNumber(y)).
+ // 10. If Type(y) is Boolean, return ! IsLooselyEqual(x, ! ToNumber(y)).
if (rhs.is_boolean())
return is_loosely_equal(global_object, lhs, MUST(rhs.to_number(global_object)));
- // 11. If Type(x) is either String, Number, BigInt, or Symbol and Type(y) is Object, return IsLooselyEqual(x, ? ToPrimitive(y)).
+ // 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(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).
+ // 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(lhs.to_primitive(global_object));
return is_loosely_equal(global_object, lhs_primitive, rhs);