From 370b239f7fb7e5f1f89829a733741bed31a9fc58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Juli=C3=A1n=20Espina?= Date: Fri, 23 Jan 2026 13:21:08 -0600 Subject: [PATCH] Correctly throw when DateTimeFormat receives a NaN timestamp --- .gitignore | 1 + core/engine/src/builtins/intl/date_time_format/mod.rs | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/.gitignore b/.gitignore index 0a8db5b12a7..a4d5b5e1e4e 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,7 @@ node_modules .DS_Store yarn-error.log .vscode/settings.json +.zed/settings.json # debug is used for testing changes locally /debug diff --git a/core/engine/src/builtins/intl/date_time_format/mod.rs b/core/engine/src/builtins/intl/date_time_format/mod.rs index b082e7b5336..6fdaebe3a3e 100644 --- a/core/engine/src/builtins/intl/date_time_format/mod.rs +++ b/core/engine/src/builtins/intl/date_time_format/mod.rs @@ -323,6 +323,15 @@ impl DateTimeFormat { // 5. Return ? FormatDateTime(dtf, x). + // A.O 11.5.6 PartitionDateTimePattern + + // 1. Let x be TimeClip(x). + // 2. If x is NaN, throw a RangeError exception. + let x = time_clip(x); + if x.is_nan() { + return Err(js_error!(RangeError: "formatted date cannot be NaN")); + } + // A.O 11.5.12 ToLocalTime let time_zone_offset = match dtf.borrow().data().time_zone { // 1. If IsTimeZoneOffsetString(timeZoneIdentifier) is true, then