Version
main
Platform
Subsystem
No response
What steps will reproduce the bug?
nix-shell --argstr icu small --arg withTemporal true --arg devTools '[]' --arg benchmarkTools '[]' --run 'make build-ci -j8'
./node -e 'assert.strictEqual(Temporal.Instant.from("1969-07-20T20:17:00Z").toString(), "1969-07-20T20:17:00Z")'
How often does it reproduce? Is there a required condition?
small ICU with Temporal
What is the expected behavior? Why is that the expected behavior?
Temporal.Instant.from("1969-07-20T20:17:00Z").toString() should output the input string
What do you see instead?
assert.strictEqual(Temporal.Instant.from("1969-07-20T20:17:00Z").toString(), "1969-07-20T20:17:00Z")
^
Error: Temporal error: Internal error: Failed to load timezone info.
at Instant.toString (<anonymous>)
at [eval]:1:66
at runScriptInThisContext (node:internal/vm:219:10)
at node:internal/process/execution:485:12
at [eval]-wrapper:6:24
at runScriptInContext (node:internal/process/execution:483:60)
at evalFunction (node:internal/process/execution:317:30)
at evalTypeScript (node:internal/process/execution:329:3)
at node:internal/main/eval_string:71:3
Node.js v27.0.0-pre
Additional information
Refs: #62676
According to @srl295, this is due to how ICU compute length: it compares the position of the item and the position of the next item; in this case, Zoneinfo64 is the last item, so there are no "next item" to compute the length so it assumes it's empty and throws.
Version
mainPlatform
Subsystem
No response
What steps will reproduce the bug?
How often does it reproduce? Is there a required condition?
small ICU with Temporal
What is the expected behavior? Why is that the expected behavior?
Temporal.Instant.from("1969-07-20T20:17:00Z").toString()should output the input stringWhat do you see instead?
Additional information
Refs: #62676
According to @srl295, this is due to how ICU compute length: it compares the position of the item and the position of the next item; in this case, Zoneinfo64 is the last item, so there are no "next item" to compute the length so it assumes it's empty and throws.