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

[Temporal] Fix ToRelativeTemporalObject

Change to use Handle<Object> instead of Handle<String>
for calendar and offset_string.

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

Bug: v8:11544
Change-Id: Ia9051f176e0e91a362b0c6b9edf6fea5a53ddcf2
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3808256Reviewed-by: 's avatarAdam Klein <adamk@chromium.org>
Commit-Queue: Frank Tang <ftang@chromium.org>
Cr-Commit-Position: refs/heads/main@{#82363}
parent d4e3fa9a
...@@ -81,24 +81,24 @@ struct DateTimeRecordCommon { ...@@ -81,24 +81,24 @@ struct DateTimeRecordCommon {
struct DateRecord { struct DateRecord {
DateRecordCommon date; DateRecordCommon date;
Handle<String> calendar; Handle<Object> calendar; // String or Undefined
}; };
struct TimeRecord { struct TimeRecord {
TimeRecordCommon time; TimeRecordCommon time;
Handle<String> calendar; Handle<Object> calendar; // String or Undefined
}; };
struct DateTimeRecord { struct DateTimeRecord {
DateRecordCommon date; DateRecordCommon date;
TimeRecordCommon time; TimeRecordCommon time;
Handle<String> calendar; Handle<Object> calendar; // String or Undefined
}; };
struct InstantRecord { struct InstantRecord {
DateRecordCommon date; DateRecordCommon date;
TimeRecordCommon time; TimeRecordCommon time;
Handle<String> offset_string; Handle<Object> offset_string; // String or Undefined
}; };
// #sec-temporal-time-duration-records // #sec-temporal-time-duration-records
...@@ -156,7 +156,7 @@ struct DateDurationRecord { ...@@ -156,7 +156,7 @@ struct DateDurationRecord {
struct TimeZoneRecord { struct TimeZoneRecord {
bool z; bool z;
Handle<String> offset_string; Handle<Object> offset_string; // String or Undefined
Handle<String> name; Handle<String> name;
}; };
...@@ -2367,7 +2367,6 @@ MaybeHandle<JSTemporalPlainDate> ToTemporalDate(Isolate* isolate, ...@@ -2367,7 +2367,6 @@ MaybeHandle<JSTemporalPlainDate> ToTemporalDate(Isolate* isolate,
const char* method_name) { const char* method_name) {
TEMPORAL_ENTER_FUNC(); TEMPORAL_ENTER_FUNC();
Factory* factory = isolate->factory();
// 2. Assert: Type(options) is Object or Undefined. // 2. Assert: Type(options) is Object or Undefined.
DCHECK(options->IsJSReceiver() || options->IsUndefined()); DCHECK(options->IsJSReceiver() || options->IsUndefined());
// 3. If Type(item) is Object, then // 3. If Type(item) is Object, then
...@@ -2465,16 +2464,10 @@ MaybeHandle<JSTemporalPlainDate> ToTemporalDate(Isolate* isolate, ...@@ -2465,16 +2464,10 @@ MaybeHandle<JSTemporalPlainDate> ToTemporalDate(Isolate* isolate,
// result.[[Day]]) is true. // result.[[Day]]) is true.
DCHECK(IsValidISODate(isolate, result.date)); DCHECK(IsValidISODate(isolate, result.date));
// 8. Let calendar be ? ToTemporalCalendarWithISODefault(result.[[Calendar]]). // 8. Let calendar be ? ToTemporalCalendarWithISODefault(result.[[Calendar]]).
Handle<Object> calendar_string;
if (result.calendar->length() == 0) {
calendar_string = factory->undefined_value();
} else {
calendar_string = result.calendar;
}
Handle<JSReceiver> calendar; Handle<JSReceiver> calendar;
ASSIGN_RETURN_ON_EXCEPTION( ASSIGN_RETURN_ON_EXCEPTION(
isolate, calendar, isolate, calendar,
ToTemporalCalendarWithISODefault(isolate, calendar_string, method_name), ToTemporalCalendarWithISODefault(isolate, result.calendar, method_name),
JSTemporalPlainDate); JSTemporalPlainDate);
// 9. Return ? CreateTemporalDate(result.[[Year]], result.[[Month]], // 9. Return ? CreateTemporalDate(result.[[Year]], result.[[Month]],
// result.[[Day]], calendar). // result.[[Day]], calendar).
...@@ -2671,8 +2664,9 @@ MaybeHandle<JSTemporalPlainTime> ToTemporalTime( ...@@ -2671,8 +2664,9 @@ MaybeHandle<JSTemporalPlainTime> ToTemporalTime(
// result.[[Nanosecond]]) is true. // result.[[Nanosecond]]) is true.
DCHECK(IsValidTime(isolate, result.time)); DCHECK(IsValidTime(isolate, result.time));
// d. If result.[[Calendar]] is not one of undefined or "iso8601", then // d. If result.[[Calendar]] is not one of undefined or "iso8601", then
if ((result.calendar->length() > 0) /* not undefined */ && DCHECK(result.calendar->IsUndefined() || result.calendar->IsString());
!String::Equals(isolate, result.calendar, if (!result.calendar->IsUndefined() &&
!String::Equals(isolate, Handle<String>::cast(result.calendar),
isolate->factory()->iso8601_string())) { isolate->factory()->iso8601_string())) {
// i. Throw a RangeError exception. // i. Throw a RangeError exception.
THROW_NEW_ERROR(isolate, NEW_TEMPORAL_INVALID_ARG_RANGE_ERROR(), THROW_NEW_ERROR(isolate, NEW_TEMPORAL_INVALID_ARG_RANGE_ERROR(),
...@@ -2922,8 +2916,9 @@ MaybeHandle<JSReceiver> ToTemporalTimeZone( ...@@ -2922,8 +2916,9 @@ MaybeHandle<JSReceiver> ToTemporalTimeZone(
// i. If parseResult.[[OffsetString]] is not undefined, and ! // i. If parseResult.[[OffsetString]] is not undefined, and !
// ParseTimeZoneOffsetString(parseResult.[[OffsetString]]) ≠ ! // ParseTimeZoneOffsetString(parseResult.[[OffsetString]]) ≠ !
// ParseTimeZoneOffsetString(name), throw a RangeError exception. // ParseTimeZoneOffsetString(name), throw a RangeError exception.
if (parse_result.offset_string->length() > 0 && if (!parse_result.offset_string->IsUndefined() &&
ParseTimeZoneOffsetString(isolate, parse_result.offset_string) ParseTimeZoneOffsetString(
isolate, Handle<String>::cast(parse_result.offset_string))
.ToChecked() != .ToChecked() !=
ParseTimeZoneOffsetString(isolate, name).ToChecked()) { ParseTimeZoneOffsetString(isolate, name).ToChecked()) {
THROW_NEW_ERROR(isolate, NEW_TEMPORAL_INVALID_ARG_RANGE_ERROR(), THROW_NEW_ERROR(isolate, NEW_TEMPORAL_INVALID_ARG_RANGE_ERROR(),
...@@ -2949,7 +2944,9 @@ MaybeHandle<JSReceiver> ToTemporalTimeZone( ...@@ -2949,7 +2944,9 @@ MaybeHandle<JSReceiver> ToTemporalTimeZone(
return CreateTemporalTimeZoneUTC(isolate); return CreateTemporalTimeZoneUTC(isolate);
} }
// 6. Return ! CreateTemporalTimeZone(parseResult.[[OffsetString]]). // 6. Return ! CreateTemporalTimeZone(parseResult.[[OffsetString]]).
return temporal::CreateTemporalTimeZone(isolate, parse_result.offset_string); DCHECK(parse_result.offset_string->IsString());
return temporal::CreateTemporalTimeZone(
isolate, Handle<String>::cast(parse_result.offset_string));
} }
} // namespace temporal } // namespace temporal
...@@ -3382,17 +3379,22 @@ Maybe<DateTimeRecord> ParseISODateTime(Isolate* isolate, ...@@ -3382,17 +3379,22 @@ Maybe<DateTimeRecord> ParseISODateTime(Isolate* isolate,
NEW_TEMPORAL_INVALID_ARG_RANGE_ERROR(), NEW_TEMPORAL_INVALID_ARG_RANGE_ERROR(),
Nothing<DateTimeRecord>()); Nothing<DateTimeRecord>());
} }
// 18. Return the Record { [[Year]]: year, [[Month]]: month, [[Day]]: day,
// [[Hour]]: hour, [[Minute]]: minute, [[Second]]: second, [[Millisecond]]: // 22. If calendar is empty, then
// millisecond, [[Microsecond]]: microsecond, [[Nanosecond]]: nanosecond,
// [[Calendar]]: calendar }.
if (parsed.calendar_name_length == 0) { if (parsed.calendar_name_length == 0) {
result.calendar = isolate->factory()->empty_string(); // a. Let calendarVal be undefined.
result.calendar = isolate->factory()->undefined_value();
// 23. Else,
} else { } else {
// a. Let calendarVal be CodePointsToString(calendar).
result.calendar = isolate->factory()->NewSubString( result.calendar = isolate->factory()->NewSubString(
iso_string, parsed.calendar_name_start, iso_string, parsed.calendar_name_start,
parsed.calendar_name_start + parsed.calendar_name_length); parsed.calendar_name_start + parsed.calendar_name_length);
} }
// 24. Return the Record { [[Year]]: yearMV, [[Month]]: monthMV, [[Day]]:
// dayMV, [[Hour]]: hourMV, [[Minute]]: minuteMV, [[Second]]: secondMV,
// [[Millisecond]]: millisecondMV, [[Microsecond]]: microsecondMV,
// [[Nanosecond]]: nanosecondMV, [[Calendar]]: calendarVal, }.
return Just(result); return Just(result);
} }
...@@ -3477,14 +3479,14 @@ Maybe<InstantRecord> ParseTemporalInstantString(Isolate* isolate, ...@@ -3477,14 +3479,14 @@ Maybe<InstantRecord> ParseTemporalInstantString(Isolate* isolate,
ParseTemporalTimeZoneString(isolate, iso_string), ParseTemporalTimeZoneString(isolate, iso_string),
Nothing<InstantRecord>()); Nothing<InstantRecord>());
// 5. Let offsetString be timeZoneResult.[[OffsetString]]. // 5. Let offsetString be timeZoneResult.[[OffsetString]].
Handle<String> offset_string = time_zone_result.offset_string; Handle<Object> offset_string = time_zone_result.offset_string;
// 6. If timeZoneResult.[[Z]] is true, then // 6. If timeZoneResult.[[Z]] is true, then
if (time_zone_result.z) { if (time_zone_result.z) {
// a. Set offsetString to "+00:00". // a. Set offsetString to "+00:00".
offset_string = isolate->factory()->NewStringFromStaticChars("+00:00"); offset_string = isolate->factory()->NewStringFromStaticChars("+00:00");
} }
// 7. Assert: offsetString is not undefined. // 7. Assert: offsetString is not undefined.
DCHECK_GT(offset_string->length(), 0); DCHECK(!offset_string->IsUndefined());
// 6. Return the new Record { [[Year]]: result.[[Year]], // 6. Return the new Record { [[Year]]: result.[[Year]],
// [[Month]]: result.[[Month]], [[Day]]: result.[[Day]], // [[Month]]: result.[[Month]], [[Day]]: result.[[Day]],
...@@ -3534,6 +3536,7 @@ Maybe<ZonedDateTimeRecord> ParseTemporalRelativeToString( ...@@ -3534,6 +3536,7 @@ Maybe<ZonedDateTimeRecord> ParseTemporalRelativeToString(
// a. Let z be false. // a. Let z be false.
result.time_zone.z = false; result.time_zone.z = false;
// b. Let offsetString be undefined. // b. Let offsetString be undefined.
result.time_zone.offset_string = isolate->factory()->undefined_value();
// c. Let timeZone be undefined. // c. Let timeZone be undefined.
} }
// 5. Return the Record { [[Year]]: result.[[Year]], [[Month]]: // 5. Return the Record { [[Year]]: result.[[Year]], [[Month]]:
...@@ -3561,7 +3564,7 @@ MaybeHandle<BigInt> ParseTemporalInstant(Isolate* isolate, ...@@ -3561,7 +3564,7 @@ MaybeHandle<BigInt> ParseTemporalInstant(Isolate* isolate,
// 3. Let offsetString be result.[[TimeZoneOffsetString]]. // 3. Let offsetString be result.[[TimeZoneOffsetString]].
// 4. Assert: offsetString is not undefined. // 4. Assert: offsetString is not undefined.
DCHECK_NE(result.offset_string->length(), 0); DCHECK(!result.offset_string->IsUndefined());
// 5. Let utc be ? GetEpochFromISOParts(result.[[Year]], result.[[Month]], // 5. Let utc be ? GetEpochFromISOParts(result.[[Year]], result.[[Month]],
// result.[[Day]], result.[[Hour]], result.[[Minute]], result.[[Second]], // result.[[Day]], result.[[Hour]], result.[[Minute]], result.[[Second]],
...@@ -3579,9 +3582,11 @@ MaybeHandle<BigInt> ParseTemporalInstant(Isolate* isolate, ...@@ -3579,9 +3582,11 @@ MaybeHandle<BigInt> ParseTemporalInstant(Isolate* isolate,
} }
// 7. Let offsetNanoseconds be ? ParseTimeZoneOffsetString(offsetString). // 7. Let offsetNanoseconds be ? ParseTimeZoneOffsetString(offsetString).
int64_t offset_nanoseconds; int64_t offset_nanoseconds;
DCHECK(result.offset_string->IsString());
MAYBE_ASSIGN_RETURN_ON_EXCEPTION_VALUE( MAYBE_ASSIGN_RETURN_ON_EXCEPTION_VALUE(
isolate, offset_nanoseconds, isolate, offset_nanoseconds,
ParseTimeZoneOffsetString(isolate, result.offset_string), ParseTimeZoneOffsetString(isolate,
Handle<String>::cast(result.offset_string)),
Handle<BigInt>()); Handle<BigInt>());
// 8. Return utc − offsetNanoseconds. // 8. Return utc − offsetNanoseconds.
...@@ -3820,14 +3825,16 @@ Maybe<TimeZoneRecord> ParseTemporalTimeZoneString(Isolate* isolate, ...@@ -3820,14 +3825,16 @@ Maybe<TimeZoneRecord> ParseTemporalTimeZoneString(Isolate* isolate,
// a. Return the Record { [[Z]]: true, [[OffsetString]]: undefined, // a. Return the Record { [[Z]]: true, [[OffsetString]]: undefined,
// [[Name]]: name }. // [[Name]]: name }.
return Just( return Just(
TimeZoneRecord({true, isolate->factory()->empty_string(), name})); TimeZoneRecord({true, isolate->factory()->undefined_value(), name}));
} }
Handle<Object> offset_string;
// 7. If offsetString is empty, then // 7. If offsetString is empty, then
// a. Set offsetString to undefined. if (parsed->offset_string_length == 0) {
Handle<String> offset_string = isolate->factory()->empty_string(); // a. Set offsetString to undefined.
// 8. Else, offset_string = isolate->factory()->undefined_value();
// a. Set offsetString to CodePointsToString(offsetString). // 8. Else,
if (parsed->offset_string_length > 0) { } else {
// a. Set offsetString to CodePointsToString(offsetString).
offset_string = isolate->factory()->NewSubString( offset_string = isolate->factory()->NewSubString(
iso_string, parsed->offset_string_start, iso_string, parsed->offset_string_start,
parsed->offset_string_start + parsed->offset_string_length); parsed->offset_string_start + parsed->offset_string_length);
...@@ -8050,7 +8057,6 @@ MaybeHandle<Object> ToRelativeTemporalObject(Isolate* isolate, ...@@ -8050,7 +8057,6 @@ MaybeHandle<Object> ToRelativeTemporalObject(Isolate* isolate,
MAYBE_ASSIGN_RETURN_ON_EXCEPTION_VALUE( MAYBE_ASSIGN_RETURN_ON_EXCEPTION_VALUE(
isolate, result, ParseTemporalRelativeToString(isolate, string), isolate, result, ParseTemporalRelativeToString(isolate, string),
Handle<Object>()); Handle<Object>());
// c. Let calendar be ? // c. Let calendar be ?
// ToTemporalCalendarWithISODefault(result.[[Calendar]]). // ToTemporalCalendarWithISODefault(result.[[Calendar]]).
ASSIGN_RETURN_ON_EXCEPTION( ASSIGN_RETURN_ON_EXCEPTION(
...@@ -8108,7 +8114,7 @@ MaybeHandle<Object> ToRelativeTemporalObject(Isolate* isolate, ...@@ -8108,7 +8114,7 @@ MaybeHandle<Object> ToRelativeTemporalObject(Isolate* isolate,
} }
// 7. If timeZone is not undefined, then // 7. If timeZone is not undefined, then
if (!time_zone_obj->IsUndefined()) { if (!time_zone_obj->IsUndefined()) {
CHECK(time_zone_obj->IsJSReceiver()); DCHECK(time_zone_obj->IsJSReceiver());
Handle<JSReceiver> time_zone = Handle<JSReceiver>::cast(time_zone_obj); Handle<JSReceiver> time_zone = Handle<JSReceiver>::cast(time_zone_obj);
// a. If offsetBehaviour is option, then // a. If offsetBehaviour is option, then
int64_t offset_ns = 0; int64_t offset_ns = 0;
...@@ -12068,7 +12074,6 @@ MaybeHandle<JSTemporalPlainDateTime> ToTemporalDateTime( ...@@ -12068,7 +12074,6 @@ MaybeHandle<JSTemporalPlainDateTime> ToTemporalDateTime(
// 2. Assert: Type(options) is Object or Undefined. // 2. Assert: Type(options) is Object or Undefined.
DCHECK(options->IsJSReceiver() || options->IsUndefined()); DCHECK(options->IsJSReceiver() || options->IsUndefined());
Factory* factory = isolate->factory();
Handle<JSReceiver> calendar; Handle<JSReceiver> calendar;
DateTimeRecord result; DateTimeRecord result;
// 2. If Type(item) is Object, then // 2. If Type(item) is Object, then
...@@ -12159,15 +12164,9 @@ MaybeHandle<JSTemporalPlainDateTime> ToTemporalDateTime( ...@@ -12159,15 +12164,9 @@ MaybeHandle<JSTemporalPlainDateTime> ToTemporalDateTime(
DCHECK(IsValidTime(isolate, result.time)); DCHECK(IsValidTime(isolate, result.time));
// f. Let calendar // f. Let calendar
// be ? ToTemporalCalendarWithISODefault(result.[[Calendar]]). // be ? ToTemporalCalendarWithISODefault(result.[[Calendar]]).
Handle<Object> calendar_string;
if (result.calendar->length() == 0) {
calendar_string = factory->undefined_value();
} else {
calendar_string = result.calendar;
}
ASSIGN_RETURN_ON_EXCEPTION( ASSIGN_RETURN_ON_EXCEPTION(
isolate, calendar, isolate, calendar,
ToTemporalCalendarWithISODefault(isolate, calendar_string, method_name), ToTemporalCalendarWithISODefault(isolate, result.calendar, method_name),
JSTemporalPlainDateTime); JSTemporalPlainDateTime);
} }
// 4. Return ? CreateTemporalDateTime(result.[[Year]], result.[[Month]], // 4. Return ? CreateTemporalDateTime(result.[[Year]], result.[[Month]],
...@@ -12789,7 +12788,7 @@ Maybe<double> ToTemporalDateTimeRoundingIncrement( ...@@ -12789,7 +12788,7 @@ Maybe<double> ToTemporalDateTimeRoundingIncrement(
// MaximumTemporalDurationRoundingIncrement(smallestUnit). // MaximumTemporalDurationRoundingIncrement(smallestUnit).
maximum = MaximumTemporalDurationRoundingIncrement(smallest_unit); maximum = MaximumTemporalDurationRoundingIncrement(smallest_unit);
// b. Assert: maximum is not undefined. // b. Assert: maximum is not undefined.
CHECK(maximum.defined); DCHECK(maximum.defined);
} }
// 3. Return ? ToTemporalRoundingIncrement(normalizedOptions, maximum, false). // 3. Return ? ToTemporalRoundingIncrement(normalizedOptions, maximum, false).
return ToTemporalRoundingIncrement(isolate, normalized_option, maximum.value, return ToTemporalRoundingIncrement(isolate, normalized_option, maximum.value,
...@@ -13254,16 +13253,10 @@ MaybeHandle<JSTemporalPlainMonthDay> ToTemporalMonthDay( ...@@ -13254,16 +13253,10 @@ MaybeHandle<JSTemporalPlainMonthDay> ToTemporalMonthDay(
Handle<JSTemporalPlainMonthDay>()); Handle<JSTemporalPlainMonthDay>());
// 7. Let calendar be ? ToTemporalCalendarWithISODefault(result.[[Calendar]]). // 7. Let calendar be ? ToTemporalCalendarWithISODefault(result.[[Calendar]]).
Handle<Object> calendar_string;
if (result.calendar->length() == 0) {
calendar_string = factory->undefined_value();
} else {
calendar_string = result.calendar;
}
Handle<JSReceiver> calendar; Handle<JSReceiver> calendar;
ASSIGN_RETURN_ON_EXCEPTION( ASSIGN_RETURN_ON_EXCEPTION(
isolate, calendar, isolate, calendar,
ToTemporalCalendarWithISODefault(isolate, calendar_string, method_name), ToTemporalCalendarWithISODefault(isolate, result.calendar, method_name),
JSTemporalPlainMonthDay); JSTemporalPlainMonthDay);
// 8. If result.[[Year]] is undefined, then // 8. If result.[[Year]] is undefined, then
...@@ -13675,16 +13668,10 @@ MaybeHandle<JSTemporalPlainYearMonth> ToTemporalYearMonth( ...@@ -13675,16 +13668,10 @@ MaybeHandle<JSTemporalPlainYearMonth> ToTemporalYearMonth(
isolate, result, ParseTemporalYearMonthString(isolate, string), isolate, result, ParseTemporalYearMonthString(isolate, string),
Handle<JSTemporalPlainYearMonth>()); Handle<JSTemporalPlainYearMonth>());
// 7. Let calendar be ? ToTemporalCalendarWithISODefault(result.[[Calendar]]). // 7. Let calendar be ? ToTemporalCalendarWithISODefault(result.[[Calendar]]).
Handle<Object> calendar_string;
if (result.calendar->length() == 0) {
calendar_string = factory->undefined_value();
} else {
calendar_string = result.calendar;
}
Handle<JSReceiver> calendar; Handle<JSReceiver> calendar;
ASSIGN_RETURN_ON_EXCEPTION( ASSIGN_RETURN_ON_EXCEPTION(
isolate, calendar, isolate, calendar,
ToTemporalCalendarWithISODefault(isolate, calendar_string, method_name), ToTemporalCalendarWithISODefault(isolate, result.calendar, method_name),
JSTemporalPlainYearMonth); JSTemporalPlainYearMonth);
// 8. Set result to ? CreateTemporalYearMonth(result.[[Year]], // 8. Set result to ? CreateTemporalYearMonth(result.[[Year]],
// result.[[Month]], calendar, result.[[Day]]). // result.[[Month]], calendar, result.[[Day]]).
...@@ -15577,7 +15564,7 @@ MaybeHandle<JSTemporalZonedDateTime> ToTemporalZonedDateTime( ...@@ -15577,7 +15564,7 @@ MaybeHandle<JSTemporalZonedDateTime> ToTemporalZonedDateTime(
// 4. Let matchBehaviour be match exactly. // 4. Let matchBehaviour be match exactly.
MatchBehaviour match_behaviour = MatchBehaviour::kMatchExactly; MatchBehaviour match_behaviour = MatchBehaviour::kMatchExactly;
Handle<String> offset_string; Handle<Object> offset_string;
Handle<JSReceiver> time_zone; Handle<JSReceiver> time_zone;
Handle<JSReceiver> calendar; Handle<JSReceiver> calendar;
...@@ -15636,21 +15623,20 @@ MaybeHandle<JSTemporalZonedDateTime> ToTemporalZonedDateTime( ...@@ -15636,21 +15623,20 @@ MaybeHandle<JSTemporalZonedDateTime> ToTemporalZonedDateTime(
temporal::ToTemporalTimeZone(isolate, time_zone_obj, method_name), temporal::ToTemporalTimeZone(isolate, time_zone_obj, method_name),
JSTemporalZonedDateTime); JSTemporalZonedDateTime);
// i. Let offsetString be ? Get(fields, "offset"). // i. Let offsetString be ? Get(fields, "offset").
Handle<Object> offset_string_obj;
ASSIGN_RETURN_ON_EXCEPTION( ASSIGN_RETURN_ON_EXCEPTION(
isolate, offset_string_obj, isolate, offset_string,
JSReceiver::GetProperty(isolate, fields, factory->offset_string()), JSReceiver::GetProperty(isolate, fields, factory->offset_string()),
JSTemporalZonedDateTime); JSTemporalZonedDateTime);
// j. If offsetString is undefined, then // j. If offsetString is undefined, then
if (offset_string_obj->IsUndefined()) { if (offset_string->IsUndefined()) {
// i. Set offsetBehaviour to wall. // i. Set offsetBehaviour to wall.
offset_behaviour = OffsetBehaviour::kWall; offset_behaviour = OffsetBehaviour::kWall;
// k. Else, // k. Else,
} else { } else {
// i. Set offsetString to ? ToString(offsetString). // i. Set offsetString to ? ToString(offsetString).
ASSIGN_RETURN_ON_EXCEPTION(isolate, offset_string, ASSIGN_RETURN_ON_EXCEPTION(isolate, offset_string,
Object::ToString(isolate, offset_string_obj), Object::ToString(isolate, offset_string),
JSTemporalZonedDateTime); JSTemporalZonedDateTime);
} }
...@@ -15704,7 +15690,7 @@ MaybeHandle<JSTemporalZonedDateTime> ToTemporalZonedDateTime( ...@@ -15704,7 +15690,7 @@ MaybeHandle<JSTemporalZonedDateTime> ToTemporalZonedDateTime(
// i. Set offsetBehaviour to exact. // i. Set offsetBehaviour to exact.
offset_behaviour = OffsetBehaviour::kExact; offset_behaviour = OffsetBehaviour::kExact;
// i. Else if offsetString is undefined, then // i. Else if offsetString is undefined, then
} else if (offset_string.is_null()) { } else if (offset_string->IsUndefined()) {
// i. Set offsetBehaviour to wall. // i. Set offsetBehaviour to wall.
offset_behaviour = OffsetBehaviour::kWall; offset_behaviour = OffsetBehaviour::kWall;
} }
...@@ -15727,9 +15713,10 @@ MaybeHandle<JSTemporalZonedDateTime> ToTemporalZonedDateTime( ...@@ -15727,9 +15713,10 @@ MaybeHandle<JSTemporalZonedDateTime> ToTemporalZonedDateTime(
// 6. If offsetBehaviour is option, then // 6. If offsetBehaviour is option, then
if (offset_behaviour == OffsetBehaviour::kOption) { if (offset_behaviour == OffsetBehaviour::kOption) {
// a. Set offsetNanoseconds to ? ParseTimeZoneOffsetString(offsetString). // a. Set offsetNanoseconds to ? ParseTimeZoneOffsetString(offsetString).
DCHECK(offset_string->IsString());
MAYBE_ASSIGN_RETURN_ON_EXCEPTION_VALUE( MAYBE_ASSIGN_RETURN_ON_EXCEPTION_VALUE(
isolate, offset_nanoseconds, isolate, offset_nanoseconds,
ParseTimeZoneOffsetString(isolate, offset_string), ParseTimeZoneOffsetString(isolate, Handle<String>::cast(offset_string)),
Handle<JSTemporalZonedDateTime>()); Handle<JSTemporalZonedDateTime>());
} }
...@@ -16125,14 +16112,14 @@ MaybeHandle<JSTemporalZonedDateTime> JSTemporalZonedDateTime::With( ...@@ -16125,14 +16112,14 @@ MaybeHandle<JSTemporalZonedDateTime> JSTemporalZonedDateTime::With(
JSTemporalZonedDateTime); JSTemporalZonedDateTime);
// 17. Let offsetString be ? Get(fields, "offset"). // 17. Let offsetString be ? Get(fields, "offset").
Handle<Object> offset_string_obj; Handle<Object> offset_string;
ASSIGN_RETURN_ON_EXCEPTION( ASSIGN_RETURN_ON_EXCEPTION(
isolate, offset_string_obj, isolate, offset_string,
JSReceiver::GetProperty(isolate, fields, factory->offset_string()), JSReceiver::GetProperty(isolate, fields, factory->offset_string()),
JSTemporalZonedDateTime); JSTemporalZonedDateTime);
// 18. Assert: Type(offsetString) is String. // 18. Assert: Type(offsetString) is String.
DCHECK(offset_string_obj->IsString()); DCHECK(offset_string->IsString());
// 19. Let dateTimeResult be ? InterpretTemporalDateTimeFields(calendar, // 19. Let dateTimeResult be ? InterpretTemporalDateTimeFields(calendar,
// fields, options). // fields, options).
...@@ -16147,8 +16134,7 @@ MaybeHandle<JSTemporalZonedDateTime> JSTemporalZonedDateTime::With( ...@@ -16147,8 +16134,7 @@ MaybeHandle<JSTemporalZonedDateTime> JSTemporalZonedDateTime::With(
int64_t offset_nanoseconds; int64_t offset_nanoseconds;
MAYBE_ASSIGN_RETURN_ON_EXCEPTION_VALUE( MAYBE_ASSIGN_RETURN_ON_EXCEPTION_VALUE(
isolate, offset_nanoseconds, isolate, offset_nanoseconds,
ParseTimeZoneOffsetString(isolate, ParseTimeZoneOffsetString(isolate, Handle<String>::cast(offset_string)),
Handle<String>::cast(offset_string_obj)),
Handle<JSTemporalZonedDateTime>()); Handle<JSTemporalZonedDateTime>());
// 21. Let epochNanoseconds be ? // 21. Let epochNanoseconds be ?
......
...@@ -46,7 +46,6 @@ ...@@ -46,7 +46,6 @@
# Temporal tests to be implemented # Temporal tests to be implemented
# https://crbug.com/v8/11544 # https://crbug.com/v8/11544
'temporal/calendar-week-of-year': [FAIL], 'temporal/calendar-week-of-year': [FAIL],
'temporal/duration-add': [FAIL],
############################################################################## ##############################################################################
# Open bugs. # Open bugs.
......
...@@ -454,18 +454,12 @@ ...@@ -454,18 +454,12 @@
'built-ins/Temporal/Calendar/prototype/weekOfYear/cross-year': [FAIL], 'built-ins/Temporal/Calendar/prototype/weekOfYear/cross-year': [FAIL],
'built-ins/Temporal/Calendar/prototype/weekOfYear/infinity-throws-rangeerror': [FAIL], 'built-ins/Temporal/Calendar/prototype/weekOfYear/infinity-throws-rangeerror': [FAIL],
'built-ins/Temporal/Duration/compare/argument-string-negative-fractional-units': [FAIL], 'built-ins/Temporal/Duration/compare/argument-string-negative-fractional-units': [FAIL],
'built-ins/Temporal/Duration/compare/relativeto-string-plaindatetime': [FAIL],
'built-ins/Temporal/Duration/compare/relativeto-string-zoneddatetime': [FAIL],
'built-ins/Temporal/Duration/compare/relativeto-sub-minute-offset': [FAIL], 'built-ins/Temporal/Duration/compare/relativeto-sub-minute-offset': [FAIL],
'built-ins/Temporal/Duration/prototype/add/relativeto-string-plaindatetime': [FAIL],
'built-ins/Temporal/Duration/prototype/add/relativeto-sub-minute-offset': [FAIL], 'built-ins/Temporal/Duration/prototype/add/relativeto-sub-minute-offset': [FAIL],
'built-ins/Temporal/Duration/prototype/round/relativeto-string-datetime': [FAIL], 'built-ins/Temporal/Duration/prototype/round/relativeto-string-datetime': [FAIL],
'built-ins/Temporal/Duration/prototype/round/relativeto-string-plaindatetime': [FAIL],
'built-ins/Temporal/Duration/prototype/round/relativeto-string-zoneddatetime': [FAIL],
'built-ins/Temporal/Duration/prototype/round/relativeto-sub-minute-offset': [FAIL], 'built-ins/Temporal/Duration/prototype/round/relativeto-sub-minute-offset': [FAIL],
'built-ins/Temporal/Duration/prototype/round/round-negative-result': [FAIL], 'built-ins/Temporal/Duration/prototype/round/round-negative-result': [FAIL],
'built-ins/Temporal/Duration/prototype/subtract/argument-string-negative-fractional-units': [FAIL], 'built-ins/Temporal/Duration/prototype/subtract/argument-string-negative-fractional-units': [FAIL],
'built-ins/Temporal/Duration/prototype/subtract/relativeto-string-plaindatetime': [FAIL],
'built-ins/Temporal/Duration/prototype/subtract/relativeto-sub-minute-offset': [FAIL], 'built-ins/Temporal/Duration/prototype/subtract/relativeto-sub-minute-offset': [FAIL],
'built-ins/Temporal/Duration/prototype/total/balance-negative-result': [FAIL], 'built-ins/Temporal/Duration/prototype/total/balance-negative-result': [FAIL],
'built-ins/Temporal/Duration/prototype/total/relativeto-string-plaindatetime': [FAIL], 'built-ins/Temporal/Duration/prototype/total/relativeto-string-plaindatetime': [FAIL],
...@@ -479,11 +473,9 @@ ...@@ -479,11 +473,9 @@
'built-ins/Temporal/PlainDate/limits': [FAIL], 'built-ins/Temporal/PlainDate/limits': [FAIL],
'built-ins/Temporal/PlainDate/prototype/add/limits': [FAIL], 'built-ins/Temporal/PlainDate/prototype/add/limits': [FAIL],
'built-ins/Temporal/PlainDate/prototype/subtract/limits': [FAIL], 'built-ins/Temporal/PlainDate/prototype/subtract/limits': [FAIL],
'built-ins/Temporal/PlainDate/prototype/toPlainDateTime/basic': [FAIL],
'built-ins/Temporal/PlainDate/prototype/toZonedDateTime/timezone-getpossibleinstantsfor-iterable': [SKIP], 'built-ins/Temporal/PlainDate/prototype/toZonedDateTime/timezone-getpossibleinstantsfor-iterable': [SKIP],
'built-ins/Temporal/PlainDate/prototype/toZonedDateTime/timezone-string-multiple-offsets': [FAIL], 'built-ins/Temporal/PlainDate/prototype/toZonedDateTime/timezone-string-multiple-offsets': [FAIL],
'built-ins/Temporal/PlainDate/prototype/weekOfYear/basic': [FAIL], 'built-ins/Temporal/PlainDate/prototype/weekOfYear/basic': [FAIL],
'built-ins/Temporal/PlainDate/prototype/with/plaindatelike-invalid': [FAIL],
'built-ins/Temporal/PlainDateTime/prototype/add/argument-string-negative-fractional-units': [FAIL], 'built-ins/Temporal/PlainDateTime/prototype/add/argument-string-negative-fractional-units': [FAIL],
'built-ins/Temporal/PlainDateTime/prototype/since/argument-plaindate': [FAIL], 'built-ins/Temporal/PlainDateTime/prototype/since/argument-plaindate': [FAIL],
'built-ins/Temporal/PlainDateTime/prototype/since/argument-string-with-utc-designator': [FAIL], 'built-ins/Temporal/PlainDateTime/prototype/since/argument-string-with-utc-designator': [FAIL],
...@@ -571,7 +563,6 @@ ...@@ -571,7 +563,6 @@
'built-ins/Temporal/PlainTime/prototype/add/argument-string-negative-fractional-units': [FAIL], 'built-ins/Temporal/PlainTime/prototype/add/argument-string-negative-fractional-units': [FAIL],
'built-ins/Temporal/PlainTime/prototype/toZonedDateTime/timezone-getpossibleinstantsfor-iterable': [SKIP], 'built-ins/Temporal/PlainTime/prototype/toZonedDateTime/timezone-getpossibleinstantsfor-iterable': [SKIP],
'built-ins/Temporal/PlainTime/prototype/toZonedDateTime/timezone-string-multiple-offsets': [FAIL], 'built-ins/Temporal/PlainTime/prototype/toZonedDateTime/timezone-string-multiple-offsets': [FAIL],
'built-ins/Temporal/PlainTime/prototype/with/plaintimelike-invalid': [FAIL],
'built-ins/Temporal/PlainYearMonth/compare/calendar-yearmonthfromfields-called-with-options-undefined': [FAIL], 'built-ins/Temporal/PlainYearMonth/compare/calendar-yearmonthfromfields-called-with-options-undefined': [FAIL],
'built-ins/Temporal/PlainYearMonth/from/calendar-yearmonthfromfields-called-with-options-undefined': [FAIL], 'built-ins/Temporal/PlainYearMonth/from/calendar-yearmonthfromfields-called-with-options-undefined': [FAIL],
'built-ins/Temporal/PlainYearMonth/prototype/add/calendar-arguments': [FAIL], 'built-ins/Temporal/PlainYearMonth/prototype/add/calendar-arguments': [FAIL],
...@@ -589,15 +580,12 @@ ...@@ -589,15 +580,12 @@
'built-ins/Temporal/ZonedDateTime/compare/zoneddatetime-string-multiple-offsets': [FAIL], 'built-ins/Temporal/ZonedDateTime/compare/zoneddatetime-string-multiple-offsets': [FAIL],
'built-ins/Temporal/ZonedDateTime/from/disambiguation-undefined': [FAIL], 'built-ins/Temporal/ZonedDateTime/from/disambiguation-undefined': [FAIL],
'built-ins/Temporal/ZonedDateTime/from/options-undefined': [FAIL], 'built-ins/Temporal/ZonedDateTime/from/options-undefined': [FAIL],
'built-ins/Temporal/ZonedDateTime/from/overflow-undefined': [FAIL],
'built-ins/Temporal/ZonedDateTime/from/overflow-wrong-type': [FAIL],
'built-ins/Temporal/ZonedDateTime/from/subclassing-ignored': [FAIL],
'built-ins/Temporal/ZonedDateTime/from/timezone-string-multiple-offsets': [FAIL], 'built-ins/Temporal/ZonedDateTime/from/timezone-string-multiple-offsets': [FAIL],
'built-ins/Temporal/ZonedDateTime/from/zoneddatetime-string': [FAIL], 'built-ins/Temporal/ZonedDateTime/from/zoneddatetime-string': [FAIL],
'built-ins/Temporal/ZonedDateTime/from/zoneddatetime-string-multiple-offsets': [FAIL], 'built-ins/Temporal/ZonedDateTime/from/zoneddatetime-string-multiple-offsets': [FAIL],
'built-ins/Temporal/ZonedDateTime/from/zoneddatetime-sub-minute-offset': [FAIL], 'built-ins/Temporal/ZonedDateTime/from/zoneddatetime-sub-minute-offset': [FAIL],
'built-ins/Temporal/ZonedDateTime/prototype/equals/sub-minute-offset': [FAIL], 'built-ins/Temporal/ZonedDateTime/prototype/equals/sub-minute-offset': [FAIL],
'built-ins/Temporal/ZonedDateTime/prototype/equals/timezone-string-datetime': [FAIL], 'built-ins/Temporal/ZonedDateTime/prototype/equals/timezone-string-datetime': [SKIP],
'built-ins/Temporal/ZonedDateTime/prototype/equals/timezone-string-multiple-offsets': [FAIL], 'built-ins/Temporal/ZonedDateTime/prototype/equals/timezone-string-multiple-offsets': [FAIL],
'built-ins/Temporal/ZonedDateTime/prototype/equals/zoneddatetime-string': [FAIL], 'built-ins/Temporal/ZonedDateTime/prototype/equals/zoneddatetime-string': [FAIL],
'built-ins/Temporal/ZonedDateTime/prototype/equals/zoneddatetime-string-multiple-offsets': [FAIL], 'built-ins/Temporal/ZonedDateTime/prototype/equals/zoneddatetime-string-multiple-offsets': [FAIL],
...@@ -722,9 +710,7 @@ ...@@ -722,9 +710,7 @@
'intl402/Temporal/ZonedDateTime/prototype/toLocaleString/options-conflict': [FAIL], 'intl402/Temporal/ZonedDateTime/prototype/toLocaleString/options-conflict': [FAIL],
'intl402/Temporal/ZonedDateTime/prototype/toLocaleString/options-undefined': [FAIL], 'intl402/Temporal/ZonedDateTime/prototype/toLocaleString/options-undefined': [FAIL],
'intl402/Temporal/ZonedDateTime/prototype/until/infinity-throws-rangeerror': [FAIL], 'intl402/Temporal/ZonedDateTime/prototype/until/infinity-throws-rangeerror': [FAIL],
'intl402/Temporal/Duration/prototype/add/relativeto-string-datetime': [FAIL],
'intl402/Temporal/Duration/prototype/round/relativeto-string-datetime': [FAIL], 'intl402/Temporal/Duration/prototype/round/relativeto-string-datetime': [FAIL],
'intl402/Temporal/Duration/prototype/subtract/relativeto-string-datetime': [FAIL],
'intl402/Temporal/Duration/prototype/total/relativeto-string-datetime': [FAIL], 'intl402/Temporal/Duration/prototype/total/relativeto-string-datetime': [FAIL],
'intl402/Temporal/ZonedDateTime/prototype/since/timezone-string-datetime': [FAIL], 'intl402/Temporal/ZonedDateTime/prototype/since/timezone-string-datetime': [FAIL],
'intl402/Temporal/ZonedDateTime/prototype/until/timezone-string-datetime': [FAIL], 'intl402/Temporal/ZonedDateTime/prototype/until/timezone-string-datetime': [FAIL],
...@@ -800,7 +786,6 @@ ...@@ -800,7 +786,6 @@
'built-ins/Temporal/PlainDateTime/prototype/until/roundingmode-trunc-basic': [FAIL], 'built-ins/Temporal/PlainDateTime/prototype/until/roundingmode-trunc-basic': [FAIL],
'built-ins/Temporal/PlainDateTime/prototype/until/roundingmode-trunc-is-default': [FAIL], 'built-ins/Temporal/PlainDateTime/prototype/until/roundingmode-trunc-is-default': [FAIL],
'built-ins/Temporal/PlainDateTime/prototype/until/round-relative-to-receiver': [FAIL], 'built-ins/Temporal/PlainDateTime/prototype/until/round-relative-to-receiver': [FAIL],
'built-ins/Temporal/PlainDateTime/prototype/with/calendar-temporal-object-throws': [FAIL],
'built-ins/Temporal/ZonedDateTime/prototype/since/options-wrong-type': [FAIL], 'built-ins/Temporal/ZonedDateTime/prototype/since/options-wrong-type': [FAIL],
'built-ins/Temporal/ZonedDateTime/prototype/toString/rounding-cross-midnight': [FAIL], 'built-ins/Temporal/ZonedDateTime/prototype/toString/rounding-cross-midnight': [FAIL],
'built-ins/Temporal/ZonedDateTime/prototype/toString/rounding-direction': [FAIL], 'built-ins/Temporal/ZonedDateTime/prototype/toString/rounding-direction': [FAIL],
...@@ -826,14 +811,10 @@ ...@@ -826,14 +811,10 @@
'built-ins/Temporal/Calendar/prototype/weekOfYear/argument-propertybag-calendar-wrong-type': [FAIL], 'built-ins/Temporal/Calendar/prototype/weekOfYear/argument-propertybag-calendar-wrong-type': [FAIL],
'built-ins/Temporal/Calendar/prototype/weekOfYear/argument-wrong-type': [FAIL], 'built-ins/Temporal/Calendar/prototype/weekOfYear/argument-wrong-type': [FAIL],
'built-ins/Temporal/Calendar/prototype/year/argument-propertybag-calendar-number': [FAIL], 'built-ins/Temporal/Calendar/prototype/year/argument-propertybag-calendar-number': [FAIL],
'built-ins/Temporal/Duration/prototype/add/relativeto-number': [FAIL],
'built-ins/Temporal/Duration/prototype/add/relativeto-propertybag-calendar-number': [FAIL], 'built-ins/Temporal/Duration/prototype/add/relativeto-propertybag-calendar-number': [FAIL],
'built-ins/Temporal/Duration/prototype/round/relativeto-number': [FAIL],
'built-ins/Temporal/Duration/prototype/round/relativeto-propertybag-calendar-number': [FAIL], 'built-ins/Temporal/Duration/prototype/round/relativeto-propertybag-calendar-number': [FAIL],
'built-ins/Temporal/Duration/prototype/round/relativeto-wrong-type': [SKIP], 'built-ins/Temporal/Duration/prototype/round/relativeto-wrong-type': [SKIP],
'built-ins/Temporal/Duration/prototype/subtract/relativeto-number': [FAIL],
'built-ins/Temporal/Duration/prototype/subtract/relativeto-propertybag-calendar-number': [FAIL], 'built-ins/Temporal/Duration/prototype/subtract/relativeto-propertybag-calendar-number': [FAIL],
'built-ins/Temporal/Duration/prototype/total/relativeto-number': [FAIL],
'built-ins/Temporal/Duration/prototype/total/relativeto-propertybag-calendar-number': [FAIL], 'built-ins/Temporal/Duration/prototype/total/relativeto-propertybag-calendar-number': [FAIL],
'built-ins/Temporal/Instant/prototype/toZonedDateTime/calendar-number': [FAIL], 'built-ins/Temporal/Instant/prototype/toZonedDateTime/calendar-number': [FAIL],
'built-ins/Temporal/Now/plainDate/calendar-number': [FAIL], 'built-ins/Temporal/Now/plainDate/calendar-number': [FAIL],
...@@ -908,14 +889,9 @@ ...@@ -908,14 +889,9 @@
'built-ins/Temporal/Calendar/prototype/weekOfYear/argument-string-time-separators': [FAIL], 'built-ins/Temporal/Calendar/prototype/weekOfYear/argument-string-time-separators': [FAIL],
'built-ins/Temporal/Calendar/prototype/weekOfYear/argument-zoneddatetime-convert': [FAIL], 'built-ins/Temporal/Calendar/prototype/weekOfYear/argument-zoneddatetime-convert': [FAIL],
'built-ins/Temporal/Calendar/prototype/weekOfYear/argument-zoneddatetime-slots': [FAIL], 'built-ins/Temporal/Calendar/prototype/weekOfYear/argument-zoneddatetime-slots': [FAIL],
'built-ins/Temporal/Duration/compare/relativeto-hour': [FAIL],
'built-ins/Temporal/Duration/from/argument-string-negative-fractional-units': [FAIL], 'built-ins/Temporal/Duration/from/argument-string-negative-fractional-units': [FAIL],
'built-ins/Temporal/Duration/prototype/add/relativeto-leap-second': [FAIL],
'built-ins/Temporal/Duration/prototype/add/relativeto-year': [FAIL], 'built-ins/Temporal/Duration/prototype/add/relativeto-year': [FAIL],
'built-ins/Temporal/Duration/prototype/round/largestunit-smallestunit-default': [FAIL], 'built-ins/Temporal/Duration/prototype/round/largestunit-smallestunit-default': [FAIL],
'built-ins/Temporal/Duration/prototype/round/relativeto-leap-second': [FAIL],
'built-ins/Temporal/Duration/prototype/subtract/relativeto-leap-second': [FAIL],
'built-ins/Temporal/Duration/prototype/total/relativeto-leap-second': [FAIL],
'built-ins/Temporal/Instant/from/argument-string': [FAIL], '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/add/argument-string-negative-fractional-units': [FAIL],
'built-ins/Temporal/Instant/prototype/subtract/argument-string-negative-fractional-units': [FAIL], 'built-ins/Temporal/Instant/prototype/subtract/argument-string-negative-fractional-units': [FAIL],
...@@ -929,13 +905,7 @@ ...@@ -929,13 +905,7 @@
'built-ins/Temporal/PlainDateTime/prototype/until/argument-string-time-separators': [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/until/leap-second': [FAIL],
'built-ins/Temporal/PlainTime/prototype/subtract/argument-string-negative-fractional-units': [FAIL], 'built-ins/Temporal/PlainTime/prototype/subtract/argument-string-negative-fractional-units': [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],
'built-ins/Temporal/ZonedDateTime/from/leap-second': [FAIL],
'built-ins/Temporal/ZonedDateTime/prototype/add/argument-string-negative-fractional-units': [FAIL], 'built-ins/Temporal/ZonedDateTime/prototype/add/argument-string-negative-fractional-units': [FAIL],
'built-ins/Temporal/ZonedDateTime/prototype/equals/argument-string-time-separators': [FAIL],
'built-ins/Temporal/ZonedDateTime/prototype/equals/leap-second': [FAIL],
'built-ins/Temporal/ZonedDateTime/prototype/since/argument-propertybag-calendar-leap-second': [FAIL], 'built-ins/Temporal/ZonedDateTime/prototype/since/argument-propertybag-calendar-leap-second': [FAIL],
'built-ins/Temporal/ZonedDateTime/prototype/since/argument-propertybag-calendar-year-zero': [FAIL], 'built-ins/Temporal/ZonedDateTime/prototype/since/argument-propertybag-calendar-year-zero': [FAIL],
'built-ins/Temporal/ZonedDateTime/prototype/since/argument-string-time-separators': [FAIL], 'built-ins/Temporal/ZonedDateTime/prototype/since/argument-string-time-separators': [FAIL],
......
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