Commit df2109cb authored by Frank Tang's avatar Frank Tang Committed by V8 LUCI CQ

[Temporal] Parser sync to PR1952 and PR2187

Spec text:
https://tc39.es/proposal-temporal/#sec-temporal-iso8601grammar

Support 'T' prefix in time-only strings and require it in cases of ambiguity
Remove TemporalDateString and TemporalRelativeToString from parser
Change algorithm of ParseTemporalDateString

Related spec changes:
https://github.com/tc39/proposal-temporal/pull/1952
https://github.com/tc39/proposal-temporal/pull/2187


Bug: v8:11544
Change-Id: I7430afabb7dd78930b339b818bad7c7721decb99
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3636361Reviewed-by: 's avatarShu-yu Guo <syg@chromium.org>
Commit-Queue: Frank Tang <ftang@chromium.org>
Cr-Commit-Position: refs/heads/main@{#81792}
parent d4a4d69c
......@@ -268,6 +268,10 @@ Maybe<DifferenceSettings> GetDifferenceSettings(
V8_WARN_UNUSED_RESULT MaybeHandle<String> ParseTemporalCalendarString(
Isolate* isolate, Handle<String> iso_string);
// #sec-temporal-parsetemporaldatetimestring
V8_WARN_UNUSED_RESULT Maybe<DateTimeRecord> ParseTemporalDateTimeString(
Isolate* isolate, Handle<String> iso_string);
// #sec-temporal-parsetemporaldatestring
V8_WARN_UNUSED_RESULT Maybe<DateRecord> ParseTemporalDateString(
Isolate* isolate, Handle<String> iso_string);
......@@ -276,10 +280,6 @@ V8_WARN_UNUSED_RESULT Maybe<DateRecord> ParseTemporalDateString(
Maybe<TimeRecord> ParseTemporalTimeString(Isolate* isolate,
Handle<String> iso_string);
// #sec-temporal-parsetemporalrelativetostring
Maybe<ZonedDateTimeRecord> ParseTemporalRelativeToString(
Isolate* isolate, Handle<String> iso_string);
// #sec-temporal-parsetemporaldurationstring
V8_WARN_UNUSED_RESULT Maybe<DurationRecord> ParseTemporalDurationString(
Isolate* isolate, Handle<String> iso_string);
......@@ -3390,33 +3390,16 @@ Maybe<DateTimeRecord> ParseISODateTime(Isolate* isolate,
Maybe<DateRecord> ParseTemporalDateString(Isolate* isolate,
Handle<String> iso_string) {
TEMPORAL_ENTER_FUNC();
// 1. Assert: Type(isoString) is String.
// 2. If isoString does not satisfy the syntax of a TemporalDateString
// (see 13.33), then
base::Optional<ParsedISO8601Result> parsed =
TemporalParser::ParseTemporalDateString(isolate, iso_string);
if (!parsed.has_value()) {
// a. Throw a *RangeError* exception.
THROW_NEW_ERROR_RETURN_VALUE(
isolate, NEW_TEMPORAL_INVALID_ARG_RANGE_ERROR(), Nothing<DateRecord>());
}
// 3. If _isoString_ contains a |UTCDesignator|, then
if (parsed->utc_designator) {
// a. Throw a *RangeError* exception.
THROW_NEW_ERROR_RETURN_VALUE(
isolate, NEW_TEMPORAL_INVALID_ARG_RANGE_ERROR(), Nothing<DateRecord>());
}
// 3. Let result be ? ParseISODateTime(isoString).
DateTimeRecord result;
// 1. Let parts be ? ParseTemporalDateTimeString(isoString).
// 2. Return the Record { [[Year]]: parts.[[Year]], [[Month]]:
// parts.[[Month]], [[Day]]: parts.[[Day]], [[Calendar]]: parts.[[Calendar]]
// }.
DateTimeRecord record;
MAYBE_ASSIGN_RETURN_ON_EXCEPTION_VALUE(
isolate, result, ParseISODateTime(isolate, iso_string, *parsed),
isolate, record, ParseTemporalDateTimeString(isolate, iso_string),
Nothing<DateRecord>());
// 4. Return the Record { [[Year]]: result.[[Year]], [[Month]]:
// result.[[Month]], [[Day]]: result.[[Day]], [[Calendar]]:
// result.[[Calendar]] }.
DateRecord ret = {result.date, result.calendar};
return Just(ret);
DateRecord result = {record.date, record.calendar};
return Just(result);
}
// #sec-temporal-parsetemporaltimestring
......
This diff is collapsed.
This diff is collapsed.
......@@ -760,37 +760,19 @@
'built-ins/Temporal/Duration/prototype/total/calendar-possibly-required': [FAIL],
'built-ins/Temporal/Duration/prototype/total/year-zero': [FAIL],
'built-ins/Temporal/PlainDate/prototype/toPlainDateTime/argument-string-no-implicit-midnight': [FAIL],
'built-ins/Temporal/PlainDate/prototype/toPlainDateTime/argument-string-time-designator-required-for-disambiguation': [FAIL],
'built-ins/Temporal/PlainDate/prototype/toPlainDateTime/argument-string-with-time-designator': [FAIL],
'built-ins/Temporal/PlainDate/prototype/toPlainYearMonth/limits': [FAIL],
'built-ins/Temporal/PlainDate/prototype/toZonedDateTime/argument-string-no-implicit-midnight': [FAIL],
'built-ins/Temporal/PlainDate/prototype/toZonedDateTime/argument-string-time-designator-required-for-disambiguation': [FAIL],
'built-ins/Temporal/PlainDate/prototype/toZonedDateTime/argument-string-with-time-designator': [FAIL],
'built-ins/Temporal/PlainDate/prototype/with/copy-properties-not-undefined': [FAIL],
'built-ins/Temporal/PlainDateTime/prototype/since/largestunit-smallestunit-mismatch': [FAIL],
'built-ins/Temporal/PlainDateTime/prototype/since/year-zero': [FAIL],
'built-ins/Temporal/PlainDateTime/prototype/until/largestunit-smallestunit-mismatch': [FAIL],
'built-ins/Temporal/PlainDateTime/prototype/until/year-zero': [FAIL],
'built-ins/Temporal/PlainDateTime/prototype/withPlainTime/argument-string-no-implicit-midnight': [FAIL],
'built-ins/Temporal/PlainDateTime/prototype/withPlainTime/argument-string-time-designator-required-for-disambiguation': [FAIL],
'built-ins/Temporal/PlainDateTime/prototype/withPlainTime/argument-string-with-time-designator': [FAIL],
'built-ins/Temporal/PlainMonthDay/prototype/with/copy-properties-not-undefined': [FAIL],
'built-ins/Temporal/PlainTime/compare/argument-string-no-implicit-midnight': [FAIL],
'built-ins/Temporal/PlainTime/compare/argument-string-time-designator-required-for-disambiguation': [FAIL],
'built-ins/Temporal/PlainTime/compare/argument-string-with-time-designator': [FAIL],
'built-ins/Temporal/PlainTime/from/argument-string': [FAIL],
'built-ins/Temporal/PlainTime/from/argument-string-no-implicit-midnight': [FAIL],
'built-ins/Temporal/PlainTime/from/argument-string-time-designator-required-for-disambiguation': [FAIL],
'built-ins/Temporal/PlainTime/from/argument-string-with-time-designator': [FAIL],
'built-ins/Temporal/PlainTime/prototype/equals/argument-string-no-implicit-midnight': [FAIL],
'built-ins/Temporal/PlainTime/prototype/equals/argument-string-time-designator-required-for-disambiguation': [FAIL],
'built-ins/Temporal/PlainTime/prototype/equals/argument-string-with-time-designator': [FAIL],
'built-ins/Temporal/PlainTime/prototype/since/argument-string-no-implicit-midnight': [FAIL],
'built-ins/Temporal/PlainTime/prototype/since/argument-string-time-designator-required-for-disambiguation': [FAIL],
'built-ins/Temporal/PlainTime/prototype/since/argument-string-with-time-designator': [FAIL],
'built-ins/Temporal/PlainTime/prototype/until/argument-string-no-implicit-midnight': [FAIL],
'built-ins/Temporal/PlainTime/prototype/until/argument-string-time-designator-required-for-disambiguation': [FAIL],
'built-ins/Temporal/PlainTime/prototype/until/argument-string-with-time-designator': [FAIL],
'built-ins/Temporal/PlainYearMonth/prototype/with/basic': [FAIL],
'built-ins/Temporal/PlainYearMonth/prototype/with/copy-properties-not-undefined': [FAIL],
'built-ins/Temporal/ZonedDateTime/prototype/since/argument-propertybag-offset-not-agreeing-with-timezone': [FAIL],
......@@ -800,8 +782,6 @@
'built-ins/Temporal/ZonedDateTime/prototype/until/largestunit-smallestunit-mismatch': [FAIL],
'built-ins/Temporal/ZonedDateTime/prototype/until/year-zero': [FAIL],
'built-ins/Temporal/ZonedDateTime/prototype/withPlainTime/argument-string-no-implicit-midnight': [FAIL],
'built-ins/Temporal/ZonedDateTime/prototype/withPlainTime/argument-string-time-designator-required-for-disambiguation': [FAIL],
'built-ins/Temporal/ZonedDateTime/prototype/withPlainTime/argument-string-with-time-designator': [FAIL],
'built-ins/Temporal/Calendar/prototype/weekOfYear/argument-string-invalid': [FAIL],
'built-ins/Temporal/Duration/compare/twenty-five-hour-day': [FAIL],
......@@ -997,8 +977,6 @@
'built-ins/Temporal/Instant/from/argument-string': [FAIL],
'built-ins/Temporal/Instant/prototype/add/argument-string-negative-fractional-units': [FAIL],
'built-ins/Temporal/Instant/prototype/subtract/argument-string-negative-fractional-units': [FAIL],
'built-ins/Temporal/PlainDate/prototype/toPlainDateTime/argument-string-time-separators': [FAIL],
'built-ins/Temporal/PlainDate/prototype/toZonedDateTime/argument-string-time-separators': [FAIL],
'built-ins/Temporal/PlainDateTime/prototype/since/argument-propertybag-calendar-leap-second': [FAIL],
'built-ins/Temporal/PlainDateTime/prototype/since/argument-propertybag-calendar-year-zero': [FAIL],
'built-ins/Temporal/PlainDateTime/prototype/since/argument-string-time-separators': [FAIL],
......@@ -1008,13 +986,7 @@
'built-ins/Temporal/PlainDateTime/prototype/until/argument-propertybag-calendar-year-zero': [FAIL],
'built-ins/Temporal/PlainDateTime/prototype/until/argument-string-time-separators': [FAIL],
'built-ins/Temporal/PlainDateTime/prototype/until/leap-second': [FAIL],
'built-ins/Temporal/PlainDateTime/prototype/withPlainTime/argument-string-time-separators': [FAIL],
'built-ins/Temporal/PlainTime/compare/argument-string-time-separators': [FAIL],
'built-ins/Temporal/PlainTime/from/argument-string-time-separators': [FAIL],
'built-ins/Temporal/PlainTime/prototype/equals/argument-string-time-separators': [FAIL],
'built-ins/Temporal/PlainTime/prototype/since/argument-string-time-separators': [FAIL],
'built-ins/Temporal/PlainTime/prototype/subtract/argument-string-negative-fractional-units': [FAIL],
'built-ins/Temporal/PlainTime/prototype/until/argument-string-time-separators': [FAIL],
'built-ins/Temporal/ZonedDateTime/compare/argument-string-time-separators': [FAIL],
'built-ins/Temporal/ZonedDateTime/compare/leap-second': [FAIL],
'built-ins/Temporal/ZonedDateTime/from/argument-string-time-separators': [FAIL],
......@@ -1035,7 +1007,6 @@
'built-ins/Temporal/ZonedDateTime/prototype/until/leap-second': [FAIL],
'built-ins/Temporal/ZonedDateTime/prototype/until/timezone-string-leap-second': [FAIL],
'built-ins/Temporal/ZonedDateTime/prototype/until/timezone-string-year-zero': [FAIL],
'built-ins/Temporal/ZonedDateTime/prototype/withPlainTime/argument-string-time-separators': [FAIL],
'intl402/Temporal/Calendar/prototype/dateFromFields/order-of-operations': [FAIL],
'intl402/Temporal/Calendar/prototype/monthDayFromFields/order-of-operations': [FAIL],
'intl402/Temporal/Calendar/prototype/yearMonthFromFields/order-of-operations': [FAIL],
......@@ -1135,7 +1106,7 @@
'built-ins/Temporal/ZonedDateTime/prototype/withPlainDate/argument-calendar-datefromfields-called-with-null-prototype-fields': [FAIL],
'intl402/Temporal/Calendar/prototype/era/argument-calendar-datefromfields-called-with-null-prototype-fields': [FAIL],
'intl402/Temporal/Calendar/prototype/eraYear/argument-calendar-datefromfields-called-with-null-prototype-fields': [FAIL],
'built-ins/Temporal/PlainTime/prototype/equals/argument-string-no-implicit-midnight': [FAIL],
'harness/temporalHelpers-one-shift-time-zone': [SKIP],
# https://bugs.chromium.org/p/v8/issues/detail?id=11660
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment