diff --git a/Libraries/LibJS/Runtime/Temporal/PlainDateTimePrototype.cpp b/Libraries/LibJS/Runtime/Temporal/PlainDateTimePrototype.cpp index 7588099574e..ad2337152f0 100644 --- a/Libraries/LibJS/Runtime/Temporal/PlainDateTimePrototype.cpp +++ b/Libraries/LibJS/Runtime/Temporal/PlainDateTimePrototype.cpp @@ -289,7 +289,7 @@ JS_DEFINE_NATIVE_FUNCTION(PlainDateTimePrototype::with) auto result = TRY(interpret_temporal_date_time_fields(vm, calendar, fields, overflow)); // 17. Return ? CreateTemporalDateTime(result, calendar). - return MUST(create_temporal_date_time(vm, result, calendar)); + return TRY(create_temporal_date_time(vm, result, calendar)); } // 5.3.26 Temporal.PlainDateTime.prototype.withPlainTime ( [ plainTimeLike ] ), https://tc39.es/proposal-temporal/#sec-temporal.plaindatetime.prototype.withplaintime diff --git a/Libraries/LibJS/Tests/builtins/Temporal/PlainDateTime/PlainDateTime.prototype.with.js b/Libraries/LibJS/Tests/builtins/Temporal/PlainDateTime/PlainDateTime.prototype.with.js index 1b7ed551623..9d808bcbb2e 100644 --- a/Libraries/LibJS/Tests/builtins/Temporal/PlainDateTime/PlainDateTime.prototype.with.js +++ b/Libraries/LibJS/Tests/builtins/Temporal/PlainDateTime/PlainDateTime.prototype.with.js @@ -80,4 +80,12 @@ describe("errors", () => { new Temporal.PlainDateTime(1970, 1, 1).with({ timeZone: {} }); }).toThrowWithMessage(TypeError, "Object must be a partial Temporal object"); }); + + test("invalid ISO date range", () => { + const plainDateTime = new Temporal.PlainDateTime(-271821, 4, 19, 0, 0, 0, 0, 0, 1); + + expect(() => { + plainDateTime.with({ nanosecond: 0 }); + }).toThrowWithMessage(RangeError, "Invalid plain date time"); + }); });