Added: trunk/JSTests/stress/temporal-plaintime-tostring-1000-millisecond.js (0 => 295693)
--- trunk/JSTests/stress/temporal-plaintime-tostring-1000-millisecond.js (rev 0)
+++ trunk/JSTests/stress/temporal-plaintime-tostring-1000-millisecond.js 2022-06-21 22:08:27 UTC (rev 295693)
@@ -0,0 +1,43 @@
+//@ requireOptions("--useTemporal=1")
+
+function shouldBe(actual, expected) {
+ if (actual !== expected)
+ throw new Error('bad value: ' + actual);
+}
+
+{
+ let data = ""
+ hour: 0,
+ minute: 0,
+ second: 0,
+ millisecond: 1000,
+ microsecond: 0,
+ nanosecond: 0,
+ }).toString();
+
+ shouldBe(data, `00:00:00.999`);
+}
+{
+ let data = ""
+ hour: 0,
+ minute: 0,
+ second: 0,
+ millisecond: 0,
+ microsecond: 1000,
+ nanosecond: 0,
+ }).toString();
+
+ shouldBe(data, `00:00:00.000999`);
+}
+{
+ let data = ""
+ hour: 0,
+ minute: 0,
+ second: 0,
+ millisecond: 0,
+ microsecond: 0,
+ nanosecond: 1000,
+ }).toString();
+
+ shouldBe(data, `00:00:00.000000999`);
+}
Modified: trunk/Source/_javascript_Core/runtime/TemporalPlainTime.cpp (295692 => 295693)
--- trunk/Source/_javascript_Core/runtime/TemporalPlainTime.cpp 2022-06-21 22:00:27 UTC (rev 295692)
+++ trunk/Source/_javascript_Core/runtime/TemporalPlainTime.cpp 2022-06-21 22:08:27 UTC (rev 295693)
@@ -375,9 +375,9 @@
constrainToRange(duration.hours(), 0, 23),
constrainToRange(duration.minutes(), 0, 59),
constrainToRange(duration.seconds(), 0, 59),
- constrainToRange(duration.milliseconds(), 0, 1000),
- constrainToRange(duration.microseconds(), 0, 1000),
- constrainToRange(duration.nanoseconds(), 0, 1000));
+ constrainToRange(duration.milliseconds(), 0, 999),
+ constrainToRange(duration.microseconds(), 0, 999),
+ constrainToRange(duration.nanoseconds(), 0, 999));
}
static ISO8601::PlainTime regulateTime(JSGlobalObject* globalObject, ISO8601::Duration&& duration, TemporalOverflow overflow)