Title: [295693] trunk
Revision
295693
Author
ysuz...@apple.com
Date
2022-06-21 15:08:27 -0700 (Tue, 21 Jun 2022)

Log Message

[JSC] Fix Temporal regulateTime's constraints for milliseconds, microseconds, and nanoseconds
https://bugs.webkit.org/show_bug.cgi?id=241818
rdar://95534859

Reviewed by Ross Kirsling.

This patch fixes constraints for milliseconds, microseconds, and nanoseconds in constrainTime.
It should be from 0 to 999, not to 1000[1].

[1]: https://tc39.es/proposal-temporal/#sec-temporal-constraintime

* JSTests/stress/temporal-plaintime-tostring-1000-millisecond.js: Added.
(shouldBe):
(throw.new.Error):
* Source/_javascript_Core/runtime/TemporalPlainTime.cpp:
(JSC::constrainTime):

Canonical link: https://commits.webkit.org/251698@main

Modified Paths

Added Paths

Diff

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)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to