From 3492fbf9cf7511482d518b23367a4e821f44bdba Mon Sep 17 00:00:00 2001 From: Linus Groh Date: Thu, 2 Sep 2021 19:09:09 +0100 Subject: [PATCH] LibJS: Account for negative numbers in ToTemporalDurationRecord This is a normative change in the Temporal spec. See: https://github.com/tc39/proposal-temporal/commit/fa9d547 --- .../Libraries/LibJS/Runtime/Temporal/Duration.cpp | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/Userland/Libraries/LibJS/Runtime/Temporal/Duration.cpp b/Userland/Libraries/LibJS/Runtime/Temporal/Duration.cpp index babcafa2ec..48e132131e 100644 --- a/Userland/Libraries/LibJS/Runtime/Temporal/Duration.cpp +++ b/Userland/Libraries/LibJS/Runtime/Temporal/Duration.cpp @@ -110,21 +110,14 @@ TemporalDuration to_temporal_duration_record(GlobalObject& global_object, Object if (vm.exception()) return {}; - // iii. If val is NaN, +∞ or -∞, then - if (value.is_nan() || value.is_infinity()) { + // iii. If ! IsIntegralNumber(val) is false, then + if (!value.is_integral_number()) { // 1. Throw a RangeError exception. vm.throw_exception(global_object, ErrorType::TemporalInvalidDurationPropertyValueNonIntegral, property.as_string(), value.to_string_without_side_effects()); return {}; } - // iv. If floor(val) ≠ val, then - if (floor(value.as_double()) != value.as_double()) { - // 1. Throw a RangeError exception. - vm.throw_exception(global_object, ErrorType::TemporalInvalidDurationPropertyValueNonIntegral, property.as_string(), value.to_string_without_side_effects()); - return {}; - } - - // v. Set result's internal slot whose name is the Internal Slot value of the current row to val. + // iv. Set result's internal slot whose name is the Internal Slot value of the current row to val. result.*internal_slot = value.as_double(); } }