diff --git a/Libraries/LibJS/Runtime/Temporal/Duration.cpp b/Libraries/LibJS/Runtime/Temporal/Duration.cpp index 0e3eb7292f7..b5798d59168 100644 --- a/Libraries/LibJS/Runtime/Temporal/Duration.cpp +++ b/Libraries/LibJS/Runtime/Temporal/Duration.cpp @@ -89,8 +89,8 @@ InternalDuration to_internal_duration_record(VM& vm, Duration const& duration) // 2. Let timeDuration be TimeDurationFromComponents(duration.[[Hours]], duration.[[Minutes]], duration.[[Seconds]], duration.[[Milliseconds]], duration.[[Microseconds]], duration.[[Nanoseconds]]). auto time_duration = time_duration_from_components(duration.hours(), duration.minutes(), duration.seconds(), duration.milliseconds(), duration.microseconds(), duration.nanoseconds()); - // 3. Return ! CombineDateAndTimeDuration(dateDuration, timeDuration). - return MUST(combine_date_and_time_duration(vm, date_duration, move(time_duration))); + // 3. Return CombineDateAndTimeDuration(dateDuration, timeDuration). + return combine_date_and_time_duration(date_duration, move(time_duration)); } // 7.5.6 ToInternalDurationRecordWith24HourDays ( duration ), https://tc39.es/proposal-temporal/#sec-temporal-tointernaldurationrecordwith24hourdays @@ -105,8 +105,8 @@ InternalDuration to_internal_duration_record_with_24_hour_days(VM& vm, Duration // 3. Let dateDuration be ! CreateDateDurationRecord(duration.[[Years]], duration.[[Months]], duration.[[Weeks]], 0). auto date_duration = MUST(create_date_duration_record(vm, duration.years(), duration.months(), duration.weeks(), 0)); - // 4. Return ! CombineDateAndTimeDuration(dateDuration, timeDuration). - return MUST(combine_date_and_time_duration(vm, date_duration, move(time_duration))); + // 4. Return CombineDateAndTimeDuration(dateDuration, timeDuration). + return combine_date_and_time_duration(date_duration, move(time_duration)); } // 7.5.7 ToDateDurationRecordWithoutTime ( duration ), https://tc39.es/proposal-temporal/#sec-temporal-todatedurationrecordwithouttime @@ -327,7 +327,7 @@ ThrowCompletionOr adjust_date_duration_record(VM& vm, DateDuration } // 7.5.11 CombineDateAndTimeDuration ( dateDuration, timeDuration ), https://tc39.es/proposal-temporal/#sec-temporal-combinedateandtimeduration -ThrowCompletionOr combine_date_and_time_duration(VM& vm, DateDuration date_duration, TimeDuration time_duration) +InternalDuration combine_date_and_time_duration(DateDuration date_duration, TimeDuration time_duration) { // 1. Let dateSign be DateDurationSign(dateDuration). auto date_sign = date_duration_sign(date_duration); @@ -335,9 +335,9 @@ ThrowCompletionOr combine_date_and_time_duration(VM& vm, DateD // 2. Let timeSign be TimeDurationSign(timeDuration). auto time_sign = time_duration_sign(time_duration); - // 3. If dateSign ≠ 0 and timeSign ≠ 0 and dateSign ≠ timeSign, throw a RangeError exception. - if (date_sign != 0 && time_sign != 0 && date_sign != time_sign) - return vm.throw_completion(ErrorType::TemporalInvalidDuration); + // 3. Assert: If dateSign ≠ 0 and timeSign ≠ 0, dateSign = timeSign. + if (date_sign != 0 && time_sign != 0) + VERIFY(date_sign == time_sign); // 4. Return Internal Duration Record { [[Date]]: dateDuration, [[Time]]: timeDuration }. return InternalDuration { date_duration, move(time_duration) }; @@ -1067,8 +1067,8 @@ ThrowCompletionOr nudge_to_calendar_unit(VM& vm, i8 sign, I nudged_epoch_ns = move(start_epoch_ns); } - // 26. Set resultDuration to ! CombineDateAndTimeDuration(resultDuration, 0). - auto result_date_and_time_duration = MUST(combine_date_and_time_duration(vm, result_duration, TimeDuration { 0 })); + // 26. Set resultDuration to CombineDateAndTimeDuration(resultDuration, 0). + auto result_date_and_time_duration = combine_date_and_time_duration(result_duration, TimeDuration { 0 }); // 27. Let nudgeResult be Duration Nudge Result Record { [[Duration]]: resultDuration, [[NudgedEpochNs]]: nudgedEpochNs, [[DidExpandCalendarUnit]]: didExpandCalendarUnit }. DurationNudgeResult nudge_result { .duration = move(result_date_and_time_duration), .nudged_epoch_ns = move(nudged_epoch_ns), .did_expand_calendar_unit = did_expand_calendar_unit }; @@ -1148,8 +1148,8 @@ ThrowCompletionOr nudge_to_zoned_time(VM& vm, i8 sign, Inte // 14. Let dateDuration be ! AdjustDateDurationRecord(duration.[[Date]], duration.[[Date]].[[Days]] + dayDelta). auto date_duration = MUST(adjust_date_duration_record(vm, duration.date, duration.date.days + day_delta)); - // 15. Let resultDuration be ! CombineDateAndTimeDuration(dateDuration, roundedTimeDuration). - auto result_duration = MUST(combine_date_and_time_duration(vm, date_duration, move(rounded_time_duration))); + // 15. Let resultDuration be CombineDateAndTimeDuration(dateDuration, roundedTimeDuration). + auto result_duration = combine_date_and_time_duration(date_duration, move(rounded_time_duration)); // 16. Return Duration Nudge Result Record { [[Duration]]: resultDuration, [[NudgedEpochNs]]: nudgedEpochNs, [[DidExpandCalendarUnit]]: didRoundBeyondDay }. return DurationNudgeResult { .duration = move(result_duration), .nudged_epoch_ns = move(nudged_epoch_ns), .did_expand_calendar_unit = did_round_beyond_day }; @@ -1211,8 +1211,8 @@ ThrowCompletionOr nudge_to_day_or_time(VM& vm, InternalDura // 14. Let dateDuration be ! AdjustDateDurationRecord(duration.[[Date]], days). auto date_duration = MUST(adjust_date_duration_record(vm, duration.date, days)); - // 15. Let resultDuration be ! CombineDateAndTimeDuration(dateDuration, remainder). - auto result_duration = MUST(combine_date_and_time_duration(vm, date_duration, move(remainder))); + // 15. Let resultDuration be CombineDateAndTimeDuration(dateDuration, remainder). + auto result_duration = combine_date_and_time_duration(date_duration, move(remainder)); // 16. Return Duration Nudge Result Record { [[Duration]]: resultDuration, [[NudgedEpochNs]]: nudgedEpochNs, [[DidExpandCalendarUnit]]: didExpandDays }. return DurationNudgeResult { .duration = move(result_duration), .nudged_epoch_ns = move(nudged_epoch_ns), .did_expand_calendar_unit = did_expand_days }; @@ -1301,8 +1301,8 @@ ThrowCompletionOr bubble_relative_duration(VM& vm, i8 sign, In // x. If beyondEndSign ≠ -sign, then if (beyond_end_sign != -sign) { - // 1. Set duration to ! CombineDateAndTimeDuration(endDuration, 0). - duration = MUST(combine_date_and_time_duration(vm, end_duration, TimeDuration { 0 })); + // 1. Set duration to CombineDateAndTimeDuration(endDuration, 0). + duration = combine_date_and_time_duration(end_duration, TimeDuration { 0 }); } // xi. Else, else { @@ -1519,8 +1519,8 @@ ThrowCompletionOr> add_durations(VM& vm, ArithmeticOperation o // 9. Let timeResult be ? AddTimeDuration(d1.[[Time]], d2.[[Time]]). auto time_result = TRY(add_time_duration(vm, duration1.time, duration2.time)); - // 10. Let result be ! CombineDateAndTimeDuration(ZeroDateDuration(), timeResult). - auto result = MUST(combine_date_and_time_duration(vm, zero_date_duration(vm), move(time_result))); + // 10. Let result be CombineDateAndTimeDuration(ZeroDateDuration(), timeResult). + auto result = combine_date_and_time_duration(zero_date_duration(vm), move(time_result)); // 11. Return ? TemporalDurationFromInternal(result, largestUnit). return TRY(temporal_duration_from_internal(vm, result, largest_unit)); diff --git a/Libraries/LibJS/Runtime/Temporal/Duration.h b/Libraries/LibJS/Runtime/Temporal/Duration.h index 8cf4b14c11e..ecb13603a34 100644 --- a/Libraries/LibJS/Runtime/Temporal/Duration.h +++ b/Libraries/LibJS/Runtime/Temporal/Duration.h @@ -116,7 +116,7 @@ DateDuration to_date_duration_record_without_time(VM&, Duration const&); ThrowCompletionOr> temporal_duration_from_internal(VM&, InternalDuration const&, Unit largest_unit); ThrowCompletionOr create_date_duration_record(VM&, double years, double months, double weeks, double days); ThrowCompletionOr adjust_date_duration_record(VM&, DateDuration const&, double days, Optional weeks = {}, Optional months = {}); -ThrowCompletionOr combine_date_and_time_duration(VM&, DateDuration, TimeDuration); +InternalDuration combine_date_and_time_duration(DateDuration, TimeDuration); ThrowCompletionOr> to_temporal_duration(VM&, Value); i8 duration_sign(Duration const&); i8 date_duration_sign(DateDuration const&); diff --git a/Libraries/LibJS/Runtime/Temporal/DurationPrototype.cpp b/Libraries/LibJS/Runtime/Temporal/DurationPrototype.cpp index 59432040299..c0d5c274a54 100644 --- a/Libraries/LibJS/Runtime/Temporal/DurationPrototype.cpp +++ b/Libraries/LibJS/Runtime/Temporal/DurationPrototype.cpp @@ -424,16 +424,16 @@ JS_DEFINE_NATIVE_FUNCTION(DurationPrototype::round) // c. Let dateDuration be ? CreateDateDurationRecord(0, 0, 0, days). auto date_duration = TRY(create_date_duration_record(vm, 0, 0, 0, days)); - // d. Set internalDuration to ! CombineDateAndTimeDuration(dateDuration, 0). - internal_duration = MUST(combine_date_and_time_duration(vm, date_duration, TimeDuration { 0 })); + // d. Set internalDuration to CombineDateAndTimeDuration(dateDuration, 0). + internal_duration = combine_date_and_time_duration(date_duration, TimeDuration { 0 }); } // 32. Else, else { // a. Let timeDuration be ? RoundTimeDuration(internalDuration.[[Time]], roundingIncrement, smallestUnit, roundingMode). auto time_duration = TRY(round_time_duration(vm, internal_duration.time, Crypto::UnsignedBigInteger { rounding_increment }, smallest_unit_value, rounding_mode)); - // b. Set internalDuration to ! CombineDateAndTimeDuration(ZeroDateDuration(), timeDuration). - internal_duration = MUST(combine_date_and_time_duration(vm, zero_date_duration(vm), move(time_duration))); + // b. Set internalDuration to CombineDateAndTimeDuration(ZeroDateDuration(), timeDuration). + internal_duration = combine_date_and_time_duration(zero_date_duration(vm), move(time_duration)); } // 33. Return ? TemporalDurationFromInternal(internalDuration, largestUnit). @@ -600,8 +600,8 @@ JS_DEFINE_NATIVE_FUNCTION(DurationPrototype::to_string) // 13. Let timeDuration be ? RoundTimeDuration(internalDuration.[[Time]], precision.[[Increment]], precision.[[Unit]], roundingMode). auto time_duration = TRY(round_time_duration(vm, internal_duration.time, precision.increment, precision.unit, rounding_mode)); - // 14. Set internalDuration to ! CombineDateAndTimeDuration(internalDuration.[[Date]], timeDuration). - internal_duration = MUST(combine_date_and_time_duration(vm, internal_duration.date, move(time_duration))); + // 14. Set internalDuration to CombineDateAndTimeDuration(internalDuration.[[Date]], timeDuration). + internal_duration = combine_date_and_time_duration(internal_duration.date, move(time_duration)); // 15. Let roundedLargestUnit be LargerOfTwoTemporalUnits(largestUnit, SECOND). auto rounded_largest_unit = larger_of_two_temporal_units(largest_unit, Unit::Second); diff --git a/Libraries/LibJS/Runtime/Temporal/Instant.cpp b/Libraries/LibJS/Runtime/Temporal/Instant.cpp index cd0a7e3be09..16fc7c632fb 100644 --- a/Libraries/LibJS/Runtime/Temporal/Instant.cpp +++ b/Libraries/LibJS/Runtime/Temporal/Instant.cpp @@ -189,8 +189,8 @@ InternalDuration difference_instant(VM& vm, Crypto::SignedBigInteger const& nano // 2. Set timeDuration to ! RoundTimeDuration(timeDuration, roundingIncrement, smallestUnit, roundingMode). time_duration = MUST(round_time_duration(vm, time_duration, Crypto::UnsignedBigInteger { rounding_increment }, smallest_unit, rounding_mode)); - // 3. Return ! CombineDateAndTimeDuration(ZeroDateDuration(), timeDuration). - return MUST(combine_date_and_time_duration(vm, zero_date_duration(vm), move(time_duration))); + // 3. Return CombineDateAndTimeDuration(ZeroDateDuration(), timeDuration). + return combine_date_and_time_duration(zero_date_duration(vm), move(time_duration)); } // 8.5.7 RoundTemporalInstant ( ns, increment, unit, roundingMode ), https://tc39.es/proposal-temporal/#sec-temporal-roundtemporalinstant diff --git a/Libraries/LibJS/Runtime/Temporal/PlainDate.cpp b/Libraries/LibJS/Runtime/Temporal/PlainDate.cpp index a633ec934de..6515aafbcff 100644 --- a/Libraries/LibJS/Runtime/Temporal/PlainDate.cpp +++ b/Libraries/LibJS/Runtime/Temporal/PlainDate.cpp @@ -365,8 +365,8 @@ ThrowCompletionOr> difference_temporal_plain_date(VM& vm, Dura // 6. Let dateDifference be CalendarDateUntil(temporalDate.[[Calendar]], temporalDate.[[ISODate]], other.[[ISODate]], settings.[[LargestUnit]]). auto date_difference = calendar_date_until(vm, temporal_date.calendar(), temporal_date.iso_date(), other->iso_date(), settings.largest_unit); - // 7. Let duration be ! CombineDateAndTimeDuration(dateDifference, 0). - auto duration = MUST(combine_date_and_time_duration(vm, date_difference, TimeDuration { 0 })); + // 7. Let duration be CombineDateAndTimeDuration(dateDifference, 0). + auto duration = combine_date_and_time_duration(date_difference, TimeDuration { 0 }); // 8. If settings.[[SmallestUnit]] is not DAY or settings.[[RoundingIncrement]] ≠ 1, then if (settings.smallest_unit != Unit::Day || settings.rounding_increment != 1) { diff --git a/Libraries/LibJS/Runtime/Temporal/PlainDateTime.cpp b/Libraries/LibJS/Runtime/Temporal/PlainDateTime.cpp index b803e6af887..d23def96084 100644 --- a/Libraries/LibJS/Runtime/Temporal/PlainDateTime.cpp +++ b/Libraries/LibJS/Runtime/Temporal/PlainDateTime.cpp @@ -330,8 +330,8 @@ InternalDuration difference_iso_date_time(VM& vm, ISODateTime const& iso_date_ti date_difference.days = 0; } - // 11. Return ! CombineDateAndTimeDuration(dateDifference, timeDuration). - return MUST(combine_date_and_time_duration(vm, date_difference, move(time_duration))); + // 11. Return CombineDateAndTimeDuration(dateDifference, timeDuration). + return combine_date_and_time_duration(date_difference, move(time_duration)); } // 5.5.13 DifferencePlainDateTimeWithRounding ( isoDateTime1, isoDateTime2, calendar, largestUnit, roundingIncrement, smallestUnit, roundingMode ), https://tc39.es/proposal-temporal/#sec-temporal-differenceplaindatetimewithrounding @@ -339,8 +339,8 @@ ThrowCompletionOr difference_plain_date_time_with_rounding(VM& { // 1. If CompareISODateTime(isoDateTime1, isoDateTime2) = 0, then if (compare_iso_date_time(iso_date_time1, iso_date_time2) == 0) { - // a. Return ! CombineDateAndTimeDuration(ZeroDateDuration(), 0). - return MUST(combine_date_and_time_duration(vm, zero_date_duration(vm), TimeDuration { 0 })); + // a. Return CombineDateAndTimeDuration(ZeroDateDuration(), 0). + return combine_date_and_time_duration(zero_date_duration(vm), TimeDuration { 0 }); } // 2. Let diff be DifferenceISODateTime(isoDateTime1, isoDateTime2, calendar, largestUnit). diff --git a/Libraries/LibJS/Runtime/Temporal/PlainTime.cpp b/Libraries/LibJS/Runtime/Temporal/PlainTime.cpp index 80cab7bde2b..ea6c35e3ab9 100644 --- a/Libraries/LibJS/Runtime/Temporal/PlainTime.cpp +++ b/Libraries/LibJS/Runtime/Temporal/PlainTime.cpp @@ -647,8 +647,8 @@ ThrowCompletionOr> difference_temporal_plain_time(VM& vm, Dura // 5. Set timeDuration to ! RoundTimeDuration(timeDuration, settings.[[RoundingIncrement]], settings.[[SmallestUnit]], settings.[[RoundingMode]]). time_duration = MUST(round_time_duration(vm, time_duration, Crypto::UnsignedBigInteger { settings.rounding_increment }, settings.smallest_unit, settings.rounding_mode)); - // 6. Let duration be ! CombineDateAndTimeDuration(ZeroDateDuration(), timeDuration). - auto duration = MUST(combine_date_and_time_duration(vm, zero_date_duration(vm), move(time_duration))); + // 6. Let duration be CombineDateAndTimeDuration(ZeroDateDuration(), timeDuration). + auto duration = combine_date_and_time_duration(zero_date_duration(vm), move(time_duration)); // 7. Let result be ! TemporalDurationFromInternal(duration, settings.[[LargestUnit]]). auto result = MUST(temporal_duration_from_internal(vm, duration, settings.largest_unit)); diff --git a/Libraries/LibJS/Runtime/Temporal/PlainYearMonth.cpp b/Libraries/LibJS/Runtime/Temporal/PlainYearMonth.cpp index e329941084a..862d8f55e04 100644 --- a/Libraries/LibJS/Runtime/Temporal/PlainYearMonth.cpp +++ b/Libraries/LibJS/Runtime/Temporal/PlainYearMonth.cpp @@ -241,8 +241,8 @@ ThrowCompletionOr> difference_temporal_plain_year_month(VM& vm // 14. Let yearsMonthsDifference be ! AdjustDateDurationRecord(dateDifference, 0, 0). auto years_months_difference = MUST(adjust_date_duration_record(vm, date_difference, 0, 0)); - // 15. Let duration be ! CombineDateAndTimeDuration(yearsMonthsDifference, 0). - auto duration = MUST(combine_date_and_time_duration(vm, years_months_difference, TimeDuration { 0 })); + // 15. Let duration be CombineDateAndTimeDuration(yearsMonthsDifference, 0). + auto duration = combine_date_and_time_duration(years_months_difference, TimeDuration { 0 }); // 16. If settings.[[SmallestUnit]] is not MONTH or settings.[[RoundingIncrement]] ≠ 1, then if (settings.smallest_unit != Unit::Month || settings.rounding_increment != 1) { diff --git a/Libraries/LibJS/Runtime/Temporal/ZonedDateTime.cpp b/Libraries/LibJS/Runtime/Temporal/ZonedDateTime.cpp index 50f5b3c2751..42bd7c57868 100644 --- a/Libraries/LibJS/Runtime/Temporal/ZonedDateTime.cpp +++ b/Libraries/LibJS/Runtime/Temporal/ZonedDateTime.cpp @@ -408,9 +408,9 @@ ThrowCompletionOr add_zoned_date_time(VM& vm, Crypto:: // 6.5.6 DifferenceZonedDateTime ( ns1, ns2, timeZone, calendar, largestUnit ), https://tc39.es/proposal-temporal/#sec-temporal-differencezoneddatetime ThrowCompletionOr difference_zoned_date_time(VM& vm, Crypto::SignedBigInteger const& nanoseconds1, Crypto::SignedBigInteger const& nanoseconds2, StringView time_zone, StringView calendar, Unit largest_unit) { - // 1. If ns1 = ns2, return ! CombineDateAndTimeDuration(ZeroDateDuration(), 0). + // 1. If ns1 = ns2, return CombineDateAndTimeDuration(ZeroDateDuration(), 0). if (nanoseconds1 == nanoseconds2) - return MUST(combine_date_and_time_duration(vm, zero_date_duration(vm), TimeDuration { 0 })); + return combine_date_and_time_duration(zero_date_duration(vm), TimeDuration { 0 }); // 2. Let startDateTime be GetISODateTimeFor(timeZone, ns1). auto start_date_time = get_iso_date_time_for(time_zone, nanoseconds1); @@ -475,8 +475,8 @@ ThrowCompletionOr difference_zoned_date_time(VM& vm, Crypto::S // 13. Let dateDifference be CalendarDateUntil(calendar, startDateTime.[[ISODate]], intermediateDateTime.[[ISODate]], dateLargestUnit). auto date_difference = calendar_date_until(vm, calendar, start_date_time.iso_date, intermediate_date_time.iso_date, date_largest_unit); - // 14. Return ! CombineDateAndTimeDuration(dateDifference, timeDuration). - return MUST(combine_date_and_time_duration(vm, date_difference, move(time_duration))); + // 14. Return CombineDateAndTimeDuration(dateDifference, timeDuration). + return combine_date_and_time_duration(date_difference, move(time_duration)); } // 6.5.7 DifferenceZonedDateTimeWithRounding ( ns1, ns2, timeZone, calendar, largestUnit, roundingIncrement, smallestUnit, roundingMode ), https://tc39.es/proposal-temporal/#sec-temporal-differencezoneddatetimewithrounding