1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-28 10:27:36 +00:00

LibJS: Disallow negative day lengths in ZonedDateTime.protoype.round

This is a normative change in the Temporal spec.

See: 6f04074
This commit is contained in:
Luke Wilde 2022-07-22 16:08:32 +01:00 committed by Linus Groh
parent 114120852d
commit 61847b3cef
3 changed files with 34 additions and 5 deletions

View file

@ -1018,10 +1018,10 @@ JS_DEFINE_NATIVE_FUNCTION(ZonedDateTimePrototype::round)
// 18. Let dayLengthNs be (endNs - startNs).
auto day_length_ns = end_ns->big_integer().minus(start_ns.big_integer()).to_double();
// 19. If dayLengthNs is 0, then
if (day_length_ns == 0) {
// 19. If dayLengthNs 0, then
if (day_length_ns <= 0) {
// a. Throw a RangeError exception.
return vm.throw_completion<RangeError>(global_object, ErrorType::TemporalZonedDateTimeRoundZeroLengthDay);
return vm.throw_completion<RangeError>(global_object, ErrorType::TemporalZonedDateTimeRoundZeroOrNegativeLengthDay);
}
// 20. Let roundResult be ! RoundISODateTime(temporalDateTime.[[ISOYear]], temporalDateTime.[[ISOMonth]], temporalDateTime.[[ISODay]], temporalDateTime.[[ISOHour]], temporalDateTime.[[ISOMinute]], temporalDateTime.[[ISOSecond]], temporalDateTime.[[ISOMillisecond]], temporalDateTime.[[ISOMicrosecond]], temporalDateTime.[[ISONanosecond]], roundingIncrement, smallestUnit, roundingMode, dayLengthNs).