Repository navigation
test262 intl402/Temporal toLocaleString — 61 fails (dateStyle/timeStyle rendering) #5580
Copy link
Copy link
Closed
Labels
parityCompatibility gap with Node.js, ECMAScript, or the supported ecosystemCompatibility gap with Node.js, ECMAScript, or the supported ecosystem
Description
Current state — 61 failing. Snapshot from the 2026-06-29 full sweep (perry 0.5.1208, node v26.3.0). Supersedes the original body; the complete current failing-test list is inline below — no re-run needed to start.
Temporal toLocaleString formatting detail (dateStyle/timeStyle/calendar rendering); the Insufficient fields field-resolution cluster is already fixed.
Failure reasons
| n | reason |
|---|---|
| 9 | Uncaught exception: default locale is determined by Intl.DateTimeForma |
| 6 | Uncaught exception: dateStyle: long writes month of March out in full |
| 4 | Uncaught exception: dateStyle undefined is the same as being absent Ex |
| 4 | Uncaught exception: output for hour12: false should include 00:00:00 E |
| 4 | Uncaught exception: Expected a TypeError to be thrown but no exception |
| 2 | Uncaught exception: Instant.toLocaleString should format lone option { |
| 2 | Uncaught exception: datetime.toLocaleString("en", { weekday: "short", |
| 2 | Uncaught exception: calendar mismatch even when instance has the ISO c |
| 2 | Uncaught exception: Expected SameValue(«0», «1n») to be true |
| 1 | Uncaught exception: locale="undefined", options="undefined", duration= |
| 1 | Uncaught exception: Expected SameValue(«"11/18/1976, 2:23:30 PM"», «"1 |
| 1 | Uncaught exception: expected "11/18/1976, 2:23:30 PM" to be shorter th |
All 61 failing tests (path — reason)
full list — click to expand
intl402/Temporal/Duration/prototype/toLocaleString/returns-same-results-as-DurationFormat.js Uncaught exception: locale="undefined", options="undefined", duration=""P1Y2M3W4DT5H6M7.00
intl402/Temporal/Instant/prototype/toLocaleString/basic.js Uncaught exception: Expected SameValue(«"11/18/1976, 2:23:30 PM"», «"11/18/1976"») to be t
intl402/Temporal/Instant/prototype/toLocaleString/dateStyle-timeStyle-undefined.js Uncaught exception: dateStyle undefined is the same as being absent Expected SameValue(«"5
intl402/Temporal/Instant/prototype/toLocaleString/dateStyle.js Uncaught exception: dateStyle: long writes month of March out in full
intl402/Temporal/Instant/prototype/toLocaleString/hourcycle.js Uncaught exception: output for hour12: false should include 00:00:00 Expected SameValue(«f
intl402/Temporal/Instant/prototype/toLocaleString/locales-undefined.js Uncaught exception: default locale is determined by Intl.DateTimeFormat Expected SameValue
intl402/Temporal/Instant/prototype/toLocaleString/option-timezonename-short.js Uncaught exception: expected "11/18/1976, 2:23:30 PM" to be shorter than "11/18/1976, 2:23
intl402/Temporal/Instant/prototype/toLocaleString/options-conflict.js Uncaught exception: instant.toLocaleString("en", { weekday: "short", dateStyle: "short" }
intl402/Temporal/Instant/prototype/toLocaleString/options-undefined.js Uncaught exception: default locale is determined by Intl.DateTimeFormat Expected SameValue
intl402/Temporal/PlainDate/from/hebrew-keviah.js Uncaught exception: Expected SameValue(«false», «true») to be true
intl402/Temporal/PlainDate/prototype/toLocaleString/dateStyle.js Uncaught exception: dateStyle: long writes month of March out in full
intl402/Temporal/PlainDate/prototype/toLocaleString/datestyle-and-timestyle.js Uncaught exception: Expected a TypeError to be thrown but no exception was thrown at all
intl402/Temporal/PlainDate/prototype/toLocaleString/datestyle-not-adjusted-when-no-conflicting-options.js Uncaught exception: Expected SameValue(«"1/1/1970, 12:00:00 AM"», «"1/1/1970"») to be true
intl402/Temporal/PlainDate/prototype/toLocaleString/lone-options-accepted.js Uncaught exception: Instant.toLocaleString should format lone option {"year":"numeric"} Ex
intl402/Temporal/PlainDate/prototype/toLocaleString/options-conflict.js Uncaught exception: timeStyle conflicts with PlainDate Expected a TypeError to be thrown b
intl402/Temporal/PlainDateTime/prototype/toLocaleString/basic.js Uncaught exception: Expected SameValue(«"11/18/1976, 3:23:30 PM"», «"11/18/1976"») to be t
intl402/Temporal/PlainDateTime/prototype/toLocaleString/dateStyle-timeStyle-undefined.js Uncaught exception: dateStyle undefined is the same as being absent Expected SameValue(«"5
intl402/Temporal/PlainDateTime/prototype/toLocaleString/dateStyle.js Uncaught exception: dateStyle: long writes month of March out in full
intl402/Temporal/PlainDateTime/prototype/toLocaleString/hourcycle.js Uncaught exception: output for hour12: false should include 00:00:00 Expected SameValue(«f
intl402/Temporal/PlainDateTime/prototype/toLocaleString/locales-undefined.js Uncaught exception: default locale is determined by Intl.DateTimeFormat Expected SameValue
intl402/Temporal/PlainDateTime/prototype/toLocaleString/options-conflict.js Uncaught exception: datetime.toLocaleString("en", { weekday: "short", dateStyle: "short"
intl402/Temporal/PlainDateTime/prototype/toLocaleString/options-undefined.js Uncaught exception: default locale is determined by Intl.DateTimeFormat Expected SameValue
intl402/Temporal/PlainDateTime/prototype/toLocaleString/resolved-time-zone.js Uncaught exception: Expected SameValue(«"8/4/2021, 12:30:45 AM"», «"8/4/2021, 00:30:45"»)
intl402/Temporal/PlainMonthDay/prototype/toLocaleString/basic.js Uncaught exception: Expected SameValue(«"11/18"», «"11/18/1970"») to be true
intl402/Temporal/PlainMonthDay/prototype/toLocaleString/calendar-mismatch.js Uncaught exception: calendar mismatch even when instance has the ISO calendar Expected a R
intl402/Temporal/PlainMonthDay/prototype/toLocaleString/dateStyle-timeStyle-undefined.js Uncaught exception: dateStyle undefined is the same as being absent Expected SameValue(«"5
intl402/Temporal/PlainMonthDay/prototype/toLocaleString/dateStyle.js Uncaught exception: dateStyle: long writes month of March out in full
intl402/Temporal/PlainMonthDay/prototype/toLocaleString/datestyle-and-timestyle.js Uncaught exception: Expected a TypeError to be thrown but no exception was thrown at all
intl402/Temporal/PlainMonthDay/prototype/toLocaleString/locales-undefined.js Uncaught exception: default locale is determined by Intl.DateTimeFormat Expected SameValue
intl402/Temporal/PlainMonthDay/prototype/toLocaleString/lone-options-accepted.js Uncaught exception: PlainMonthDay.toLocaleString should format lone option {"month":"long"
intl402/Temporal/PlainMonthDay/prototype/toLocaleString/options-conflict.js Uncaught exception: timeStyle conflicts with PlainMonthDay Expected a TypeError to be thro
intl402/Temporal/PlainMonthDay/prototype/toLocaleString/options-undefined.js Uncaught exception: default locale is determined by Intl.DateTimeFormat Expected SameValue
intl402/Temporal/PlainTime/prototype/toLocaleString/basic.js Uncaught exception: Expected SameValue(«"3:23:30 PM"», «"1/1/1970"») to be true
intl402/Temporal/PlainTime/prototype/toLocaleString/datestyle-and-timestyle.js Uncaught exception: Expected a TypeError to be thrown but no exception was thrown at all
intl402/Temporal/PlainTime/prototype/toLocaleString/hourcycle.js Uncaught exception: output for hour12: false should include 00:00:00 Expected SameValue(«f
intl402/Temporal/PlainTime/prototype/toLocaleString/locales-undefined.js Uncaught exception: default locale is determined by Intl.DateTimeFormat Expected SameValue
intl402/Temporal/PlainTime/prototype/toLocaleString/lone-options-accepted.js Uncaught exception: PlainTime.toLocaleString should format lone option {"hour":"numeric"}
intl402/Temporal/PlainTime/prototype/toLocaleString/options-conflict.js Uncaught exception: dateStyle conflicts with PlainTime Expected a TypeError to be thrown b
intl402/Temporal/PlainTime/prototype/toLocaleString/options-undefined.js Uncaught exception: default options are determined by Intl.DateTimeFormat Expected SameVal
intl402/Temporal/PlainTime/prototype/toLocaleString/resolved-time-zone.js Uncaught exception: Expected SameValue(«"12:30:45 AM"», «"00:30:45"») to be true
intl402/Temporal/PlainTime/prototype/toLocaleString/timeStyle-undefined.js Uncaught exception: timeStyle undefined is the same as being absent Expected SameValue(«"1
intl402/Temporal/PlainYearMonth/prototype/toLocaleString/basic.js Uncaught exception: Expected SameValue(«"11/1976"», «"11/1/1976"») to be true
intl402/Temporal/PlainYearMonth/prototype/toLocaleString/calendar-mismatch.js Uncaught exception: calendar mismatch even when instance has the ISO calendar Expected a R
intl402/Temporal/PlainYearMonth/prototype/toLocaleString/dateStyle-undefined.js Uncaught exception: dateStyle undefined is the same as being absent Expected SameValue(«"5
intl402/Temporal/PlainYearMonth/prototype/toLocaleString/dateStyle.js Uncaught exception: dateStyle: long writes month of March out in full
intl402/Temporal/PlainYearMonth/prototype/toLocaleString/datestyle-and-timestyle.js Uncaught exception: Expected a TypeError to be thrown but no exception was thrown at all
intl402/Temporal/PlainYearMonth/prototype/toLocaleString/locales-undefined.js Uncaught exception: default locale is determined by Intl.DateTimeFormat Expected SameValue
intl402/Temporal/PlainYearMonth/prototype/toLocaleString/lone-options-accepted.js Uncaught exception: Instant.toLocaleString should format lone option {"year":"numeric"} Ex
intl402/Temporal/PlainYearMonth/prototype/toLocaleString/options-conflict.js Uncaught exception: timeStyle conflicts with PlainYearMonth Expected a TypeError to be thr
intl402/Temporal/PlainYearMonth/prototype/toLocaleString/options-undefined.js Uncaught exception: default locale is determined by Intl.DateTimeFormat Expected SameValue
intl402/Temporal/ZonedDateTime/prototype/round/round-dst-boundaries.js Uncaught exception: Expected SameValue(«0», «1n») to be true
intl402/Temporal/ZonedDateTime/prototype/round/same-date-starts-twice.js RangeError: ZonedDateTime is outside the expected day bounds
intl402/Temporal/ZonedDateTime/prototype/toLocaleString/dateStyle.js Uncaught exception: dateStyle: long writes month of March out in full
intl402/Temporal/ZonedDateTime/prototype/toLocaleString/default-includes-time-and-time-zone-name.js Uncaught exception: ZonedDateTime formatted with no options 12/26/2024, 11:46:40 AM should
intl402/Temporal/ZonedDateTime/prototype/toLocaleString/hourcycle.js Uncaught exception: output for hour12: false should include 00:00:00 Expected SameValue(«f
intl402/Temporal/ZonedDateTime/prototype/toLocaleString/offset-time-zones.js Uncaught exception: Expected true but got false
intl402/Temporal/ZonedDateTime/prototype/toLocaleString/options-conflict.js Uncaught exception: datetime.toLocaleString("en", { weekday: "short", dateStyle: "short"
intl402/Temporal/ZonedDateTime/prototype/toLocaleString/options-timeZone.js Uncaught exception: timeZone option disallowed Expected a TypeError to be thrown but no ex
intl402/Temporal/ZonedDateTime/prototype/toLocaleString/options-timeZoneName-affects-instance-time-zone.js Uncaught exception: formats with different timeZoneName options should be different Expect
intl402/Temporal/ZonedDateTime/prototype/toString/dst-roundingmode-halfexpand.js Uncaught exception: Expected SameValue(«0», «1n») to be true
intl402/Temporal/ZonedDateTime/prototype/with/dst-defaults.js RangeError: Offsets could not be determined without disambiguation
Reproduce
scripts/test262_subset.py --root vendor/test262 --dir intl402/Temporal --jobs 6
Each path is under vendor/test262/test/; assemble harness + case per test-compat/test262/README.md to run one under perry compile.
Metadata
Metadata
Assignees
Labels
parityCompatibility gap with Node.js, ECMAScript, or the supported ecosystemCompatibility gap with Node.js, ECMAScript, or the supported ecosystem
Activity
fix(temporal): #5580 — read era/eraYear for non-ISO calendars in Plai…
proggeramlug commentedon Jun 25, 2026
Re-measure 2026-06-25 (main @ 9a3d246): #5635 (era/eraYear for non-ISO calendars) landed — Temporal↔Intl 243 → 106, and the core
Insufficient fieldscluster is fully cleared (84 → 0). Remaining 106 are TemporaltoLocaleStringformatting (dateStyle/timeStyle) — different from the field-resolution scope of this ticket.proggeramlug commentedon Jun 27, 2026
Partially addressed by #5730: rejects the bare
islamicTemporal calendar identifier and rendersTemporal.*.prototype.toLocaleString(calendar-mismatchRangeError+ per-type formatting) instead of[object Object]. Localintl402/Temporalsweep: 105 → 76 runtime-fails (+29, parity 94.8% → 96.3%), no regressions.Remaining 76 split into: (a) option-conflict
TypeErrors + explicitcalendar/dateStyle/timeStylehandling — blocked on thelocales/optionsargs being dropped by theExpr::DateToLocaleStringHIR lowering before they reach the runtime; and (b) real locale-aware (ICU) formatting (dateStyle: "long"month names, default-locale-via-Intl.DateTimeFormat self-consistency). Both are follow-ups.fix(temporal): #5580 — Temporal toLocaleString rendering + reject bar…
proggeramlug commentedon Jun 27, 2026
Re-measure 2026-06-27: #5730 (Temporal toLocaleString rendering + reject bare islamic calendar) landed — Temporal↔Intl 105 → 73. Remaining ~68 are toLocaleString dateStyle/timeStyle formatting detail.
[-]test262 intl402: Temporal ↔ Intl field resolution (243) — Insufficient fields / toLocaleString[/-][+]test262 intl402/Temporal toLocaleString — 73 fails (dateStyle/timeStyle rendering)[/+]fix(intl): #5581 — NumberFormat numbering systems, roundingIncrement,…
fix(temporal): correct toLocaleString epoch + honor dateStyle/timeSty…
[-]test262 intl402/Temporal toLocaleString — 73 fails (dateStyle/timeStyle rendering)[/-][+]test262 intl402/Temporal toLocaleString — 61 fails (dateStyle/timeStyle rendering)[/+]fix(temporal): preserve locale/options args in toLocaleString, fix de…