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

[Temporal] Add Plain(Date)?Time.prototype.with

Refactor ToTemporalTimeRecord to a new routine
ToTemporalTimeRecordOrPartialTime to share code with ToPartilTime
Change the return type of ToTemporalTimeRecord, RegulateTime

Spec Text:
https://tc39.es/proposal-temporal/#sec-temporal.plaintime.prototype.with
https://tc39.es/proposal-temporal/#sec-temporal.plaindatetime.prototype.with
https://tc39.es/proposal-temporal/#sec-temporal-topartialtime

Bug: v8:11544
Change-Id: I214147f497a405ee48e264833c7c0b9401596c01
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3665269Reviewed-by: 's avatarAdam Klein <adamk@chromium.org>
Commit-Queue: Frank Tang <ftang@chromium.org>
Cr-Commit-Position: refs/heads/main@{#80769}
parent ee6c6a2f
......@@ -56,8 +56,6 @@ TO_BE_IMPLEMENTED(TemporalPlainDatePrototypeEquals)
TO_BE_IMPLEMENTED(TemporalPlainTimePrototypeAdd)
/* Temporal #sec-temporal.plaintime.prototype.subtract */
TO_BE_IMPLEMENTED(TemporalPlainTimePrototypeSubtract)
/* Temporal #sec-temporal.plaintime.prototype.with */
TO_BE_IMPLEMENTED(TemporalPlainTimePrototypeWith)
/* Temporal #sec-temporal.plaintime.prototype.until */
TO_BE_IMPLEMENTED(TemporalPlainTimePrototypeUntil)
/* Temporal #sec-temporal.plaintime.prototype.since */
......@@ -72,8 +70,6 @@ TO_BE_IMPLEMENTED(TemporalPlainTimePrototypeToString)
/* Temporal.PlaneDateTime */
/* Temporal #sec-temporal.plaindatetime.compare */
TO_BE_IMPLEMENTED(TemporalPlainDateTimeCompare)
/* Temporal #sec-temporal.plaindatetime.prototype.with */
TO_BE_IMPLEMENTED(TemporalPlainDateTimePrototypeWith)
/* Temporal #sec-temporal.plaindatetime.prototype.add */
TO_BE_IMPLEMENTED(TemporalPlainDateTimePrototypeAdd)
/* Temporal #sec-temporal.plaindatetime.prototype.subtract */
......@@ -427,6 +423,7 @@ TEMPORAL_METHOD2(PlainTime, Compare)
TEMPORAL_PROTOTYPE_METHOD1(PlainTime, Equals, equals)
TEMPORAL_PROTOTYPE_METHOD0(PlainTime, GetISOFields, getISOFields)
TEMPORAL_PROTOTYPE_METHOD1(PlainTime, ToPlainDateTime, toPlainDateTime)
TEMPORAL_PROTOTYPE_METHOD2(PlainTime, With, with)
TEMPORAL_VALUE_OF(PlainTime)
TEMPORAL_PROTOTYPE_METHOD0(PlainTime, ToJSON, toJSON)
......@@ -475,6 +472,7 @@ TEMPORAL_PROTOTYPE_METHOD0(PlainDateTime, ToPlainMonthDay, toPlainMonthDay)
TEMPORAL_PROTOTYPE_METHOD2(PlainDateTime, ToZonedDateTime, toZonedDateTime)
TEMPORAL_PROTOTYPE_METHOD0(PlainDateTime, GetISOFields, getISOFields)
TEMPORAL_PROTOTYPE_METHOD1(PlainDateTime, WithPlainDate, withPlainDate)
TEMPORAL_PROTOTYPE_METHOD2(PlainDateTime, With, with)
TEMPORAL_VALUE_OF(PlainDateTime)
TEMPORAL_PROTOTYPE_METHOD0(PlainDateTime, ToPlainDate, toPlainDate)
TEMPORAL_PROTOTYPE_METHOD0(PlainDateTime, ToPlainTime, toPlainTime)
......
......@@ -303,8 +303,8 @@ double TotalDurationNanoseconds(Isolate* isolate,
double offset_shift);
// #sec-temporal-totemporaltimerecord
Maybe<TimeRecord> ToTemporalTimeRecord(Isolate* isolate,
Handle<JSReceiver> temporal_time_like,
Maybe<TimeRecordCommon> ToTemporalTimeRecord(
Isolate* isolate, Handle<JSReceiver> temporal_time_like,
const char* method_name);
// Calendar Operations
......@@ -2148,6 +2148,23 @@ MaybeHandle<JSReceiver> ToTemporalCalendarWithISODefault(
method_name);
}
// Create « "day", "hour", "microsecond", "millisecond", "minute", "month",
// "monthCode", "nanosecond", "second", "year" » in several AOs.
Handle<FixedArray> All10UnitsInFixedArray(Isolate* isolate) {
Handle<FixedArray> field_names = isolate->factory()->NewFixedArray(10);
field_names->set(0, ReadOnlyRoots(isolate).day_string());
field_names->set(1, ReadOnlyRoots(isolate).hour_string());
field_names->set(2, ReadOnlyRoots(isolate).microsecond_string());
field_names->set(3, ReadOnlyRoots(isolate).millisecond_string());
field_names->set(4, ReadOnlyRoots(isolate).minute_string());
field_names->set(5, ReadOnlyRoots(isolate).month_string());
field_names->set(6, ReadOnlyRoots(isolate).monthCode_string());
field_names->set(7, ReadOnlyRoots(isolate).nanosecond_string());
field_names->set(8, ReadOnlyRoots(isolate).second_string());
field_names->set(9, ReadOnlyRoots(isolate).year_string());
return field_names;
}
// Create « "day", "month", "monthCode", "year" » in several AOs.
Handle<FixedArray> DayMonthMonthCodeYearInFixedArray(Isolate* isolate) {
Handle<FixedArray> field_names = isolate->factory()->NewFixedArray(4);
......@@ -2334,7 +2351,8 @@ Maybe<double> ToIntegerWithoutRounding(Isolate* isolate,
namespace temporal {
// #sec-temporal-regulatetime
Maybe<TimeRecord> RegulateTime(Isolate* isolate, const TimeRecord& time,
Maybe<TimeRecordCommon> RegulateTime(Isolate* isolate,
const TimeRecordCommon& time,
ShowOverflow overflow) {
TEMPORAL_ENTER_FUNC();
......@@ -2343,29 +2361,26 @@ Maybe<TimeRecord> RegulateTime(Isolate* isolate, const TimeRecord& time,
// 2. Assert: overflow is either "constrain" or "reject".
switch (overflow) {
case ShowOverflow::kConstrain: {
TimeRecord result(time);
TimeRecordCommon result(time);
// 3. If overflow is "constrain", then
// a. Return ! ConstrainTime(hour, minute, second, millisecond,
// microsecond, nanosecond).
result.time.hour = std::max(std::min(result.time.hour, 23), 0);
result.time.minute = std::max(std::min(result.time.minute, 59), 0);
result.time.second = std::max(std::min(result.time.second, 59), 0);
result.time.millisecond =
std::max(std::min(result.time.millisecond, 999), 0);
result.time.microsecond =
std::max(std::min(result.time.microsecond, 999), 0);
result.time.nanosecond =
std::max(std::min(result.time.nanosecond, 999), 0);
result.hour = std::max(std::min(result.hour, 23), 0);
result.minute = std::max(std::min(result.minute, 59), 0);
result.second = std::max(std::min(result.second, 59), 0);
result.millisecond = std::max(std::min(result.millisecond, 999), 0);
result.microsecond = std::max(std::min(result.microsecond, 999), 0);
result.nanosecond = std::max(std::min(result.nanosecond, 999), 0);
return Just(result);
}
case ShowOverflow::kReject:
// 4. If overflow is "reject", then
// a. If ! IsValidTime(hour, minute, second, millisecond, microsecond,
// nanosecond) is false, throw a RangeError exception.
if (!IsValidTime(isolate, time.time)) {
if (!IsValidTime(isolate, time)) {
THROW_NEW_ERROR_RETURN_VALUE(isolate,
NEW_TEMPORAL_INVALID_ARG_RANGE_ERROR(),
Nothing<TimeRecord>());
Nothing<TimeRecordCommon>());
}
// b. Return the new Record { [[Hour]]: hour, [[Minute]]: minute,
// [[Second]]: second, [[Millisecond]]: millisecond, [[Microsecond]]:
......@@ -2456,13 +2471,13 @@ MaybeHandle<JSTemporalPlainTime> ToTemporalTime(Isolate* isolate,
}
// f. Let result be ? ToTemporalTimeRecord(item).
MAYBE_ASSIGN_RETURN_ON_EXCEPTION_VALUE(
isolate, result, ToTemporalTimeRecord(isolate, item, method_name),
isolate, result.time, ToTemporalTimeRecord(isolate, item, method_name),
Handle<JSTemporalPlainTime>());
// g. Set result to ? RegulateTime(result.[[Hour]], result.[[Minute]],
// result.[[Second]], result.[[Millisecond]], result.[[Microsecond]],
// result.[[Nanosecond]], overflow).
MAYBE_ASSIGN_RETURN_ON_EXCEPTION_VALUE(
isolate, result, RegulateTime(isolate, result, overflow),
isolate, result.time, RegulateTime(isolate, result.time, overflow),
Handle<JSTemporalPlainTime>());
} else {
// 4. Else,
......@@ -4258,13 +4273,16 @@ Handle<String> CanonicalizeTimeZoneName(Isolate* isolate,
}
#endif // V8_INTL_SUPPORT
// Common routine shared by ToTemporalTimeRecord and ToPartialTime
// #sec-temporal-topartialtime
// #sec-temporal-totemporaltimerecord
Maybe<TimeRecord> ToTemporalTimeRecord(Isolate* isolate,
Handle<JSReceiver> temporal_time_like,
Maybe<TimeRecordCommon> ToTemporalTimeRecordOrPartialTime(
Isolate* isolate, Handle<JSReceiver> temporal_time_like,
const TimeRecordCommon& time, bool skip_undefined,
const char* method_name) {
TEMPORAL_ENTER_FUNC();
TimeRecord result;
TimeRecordCommon result(time);
Factory* factory = isolate->factory();
// 1. Assert: Type(temporalTimeLike) is Object.
// 2. Let result be the new Record { [[Hour]]: undefined, [[Minute]]:
......@@ -4273,33 +4291,36 @@ Maybe<TimeRecord> ToTemporalTimeRecord(Isolate* isolate,
// See https://github.com/tc39/proposal-temporal/pull/1862
// 3. Let _any_ be *false*.
bool any = false;
// 4. For each row of Table 3, except the header row, in table order, do
std::array<std::pair<Handle<String>, int32_t*>, 6> table3 = {
{{factory->hour_string(), &result.time.hour},
{factory->microsecond_string(), &result.time.microsecond},
{factory->millisecond_string(), &result.time.millisecond},
{factory->minute_string(), &result.time.minute},
{factory->nanosecond_string(), &result.time.nanosecond},
{factory->second_string(), &result.time.second}}};
for (const auto& row : table3) {
// 4. For each row of Table 4, except the header row, in table order, do
std::array<std::pair<Handle<String>, int32_t*>, 6> table4 = {
{{factory->hour_string(), &result.hour},
{factory->microsecond_string(), &result.microsecond},
{factory->millisecond_string(), &result.millisecond},
{factory->minute_string(), &result.minute},
{factory->nanosecond_string(), &result.nanosecond},
{factory->second_string(), &result.second}}};
for (const auto& row : table4) {
Handle<Object> value;
// a. Let property be the Property value of the current row.
// b. Let value be ? Get(temporalTimeLike, property).
ASSIGN_RETURN_ON_EXCEPTION_VALUE(
isolate, value,
JSReceiver::GetProperty(isolate, temporal_time_like, row.first),
Nothing<TimeRecord>());
Nothing<TimeRecordCommon>());
// c. If value is not undefined, then
if (!value->IsUndefined()) {
// i. Set _any_ to *true*.
any = true;
// If it is inside ToPartialTime, we only continue if it is not undefined.
} else if (skip_undefined) {
continue;
}
// d. Set value to ? ToIntegerThrowOnOInfinity(value).
// d. / ii. Set value to ? ToIntegerThrowOnOInfinity(value).
ASSIGN_RETURN_ON_EXCEPTION_VALUE(isolate, value,
ToIntegerThrowOnInfinity(isolate, value),
Nothing<TimeRecord>());
// e. Set result's internal slot whose name is the Internal Slot value of
// the current row to value.
Nothing<TimeRecordCommon>());
// e. / iii. Set result's internal slot whose name is the Internal Slot
// value of the current row to value.
*(row.second) = value->Number();
}
......@@ -4307,12 +4328,31 @@ Maybe<TimeRecord> ToTemporalTimeRecord(Isolate* isolate,
if (!any) {
// a. Throw a *TypeError* exception.
THROW_NEW_ERROR_RETURN_VALUE(isolate, NEW_TEMPORAL_INVALID_ARG_TYPE_ERROR(),
Nothing<TimeRecord>());
Nothing<TimeRecordCommon>());
}
// 4. Return result.
return Just(result);
}
// #sec-temporal-topartialtime
Maybe<TimeRecordCommon> ToPartialTime(Isolate* isolate,
Handle<JSReceiver> temporal_time_like,
const TimeRecordCommon& time,
const char* method_name) {
return ToTemporalTimeRecordOrPartialTime(isolate, temporal_time_like, time,
true, method_name);
}
// #sec-temporal-totemporaltimerecord
Maybe<TimeRecordCommon> ToTemporalTimeRecord(
Isolate* isolate, Handle<JSReceiver> temporal_time_like,
const char* method_name) {
return ToTemporalTimeRecordOrPartialTime(
isolate, temporal_time_like,
{kMinInt31, kMinInt31, kMinInt31, kMinInt31, kMinInt31, kMinInt31}, false,
method_name);
}
// #sec-temporal-mergelargestunitoption
MaybeHandle<JSObject> MergeLargestUnitOption(Isolate* isolate,
Handle<JSReceiver> options,
......@@ -8406,7 +8446,7 @@ Maybe<DateTimeRecord> InterpretTemporalDateTimeFields(
TEMPORAL_ENTER_FUNC();
// 1. Let timeResult be ? ToTemporalTimeRecord(fields).
TimeRecord time_result;
TimeRecordCommon time_result;
MAYBE_ASSIGN_RETURN_ON_EXCEPTION_VALUE(
isolate, time_result, ToTemporalTimeRecord(isolate, fields, method_name),
Nothing<DateTimeRecord>());
......@@ -8441,7 +8481,7 @@ Maybe<DateTimeRecord> InterpretTemporalDateTimeFields(
DateTimeRecord result = {
{temporal_date->iso_year(), temporal_date->iso_month(),
temporal_date->iso_day()},
time_result.time,
time_result,
Handle<String>()};
return Just(result);
}
......@@ -8641,6 +8681,91 @@ MaybeHandle<JSTemporalPlainDateTime> JSTemporalPlainDateTime::From(
return ToTemporalDateTime(isolate, item, options, method_name);
}
// #sec-temporal.plaindatetime.prototype.with
MaybeHandle<JSTemporalPlainDateTime> JSTemporalPlainDateTime::With(
Isolate* isolate, Handle<JSTemporalPlainDateTime> date_time,
Handle<Object> temporal_date_time_like_obj, Handle<Object> options_obj) {
const char* method_name = "Temporal.PlainDateTime.prototype.with";
// 1. Let dateTime be the this value.
// 2. Perform ? RequireInternalSlot(dateTime,
// [[InitializedTemporalDateTime]]).
// 3. If Type(temporalDateTimeLike) is not Object, then
if (!temporal_date_time_like_obj->IsJSReceiver()) {
// a. Throw a TypeError exception.
THROW_NEW_ERROR(isolate, NEW_TEMPORAL_INVALID_ARG_TYPE_ERROR(),
JSTemporalPlainDateTime);
}
Handle<JSReceiver> temporal_date_time_like =
Handle<JSReceiver>::cast(temporal_date_time_like_obj);
// 4. Perform ? RejectObjectWithCalendarOrTimeZone(temporalTimeLike).
MAYBE_RETURN(
RejectObjectWithCalendarOrTimeZone(isolate, temporal_date_time_like),
Handle<JSTemporalPlainDateTime>());
// 5. Let calendar be dateTime.[[Calendar]].
Handle<JSReceiver> calendar =
Handle<JSReceiver>(date_time->calendar(), isolate);
// 6. Let fieldNames be ? CalendarFields(calendar, « "day", "hour",
// "microsecond", "millisecond", "minute", "month", "monthCode", "nanosecond",
// "second", "year" »).
Handle<FixedArray> field_names = All10UnitsInFixedArray(isolate);
ASSIGN_RETURN_ON_EXCEPTION(isolate, field_names,
CalendarFields(isolate, calendar, field_names),
JSTemporalPlainDateTime);
// 7. Let partialDateTime be ?
// PreparePartialTemporalFields(temporalDateTimeLike, fieldNames).
Handle<JSReceiver> partial_date_time;
ASSIGN_RETURN_ON_EXCEPTION(isolate, partial_date_time,
PreparePartialTemporalFields(
isolate, temporal_date_time_like, field_names),
JSTemporalPlainDateTime);
// 8. Set options to ? GetOptionsObject(options).
Handle<JSReceiver> options;
ASSIGN_RETURN_ON_EXCEPTION(
isolate, options, GetOptionsObject(isolate, options_obj, method_name),
JSTemporalPlainDateTime);
// 9. Let fields be ? PrepareTemporalFields(dateTime, fieldNames, «»).
Handle<JSReceiver> fields;
ASSIGN_RETURN_ON_EXCEPTION(
isolate, fields,
PrepareTemporalFields(isolate, date_time, field_names,
RequiredFields::kNone),
JSTemporalPlainDateTime);
// 10. Set fields to ? CalendarMergeFields(calendar, fields, partialDateTime).
ASSIGN_RETURN_ON_EXCEPTION(
isolate, fields,
CalendarMergeFields(isolate, calendar, fields, partial_date_time),
JSTemporalPlainDateTime);
// 11. Set fields to ? PrepareTemporalFields(fields, fieldNames, «»).
ASSIGN_RETURN_ON_EXCEPTION(isolate, fields,
PrepareTemporalFields(isolate, fields, field_names,
RequiredFields::kNone),
JSTemporalPlainDateTime);
// 12. Let result be ? InterpretTemporalDateTimeFields(calendar, fields,
// options).
DateTimeRecord result;
MAYBE_ASSIGN_RETURN_ON_EXCEPTION_VALUE(
isolate, result,
InterpretTemporalDateTimeFields(isolate, calendar, fields, options,
method_name),
Handle<JSTemporalPlainDateTime>());
// 13. Assert: ! IsValidISODate(result.[[Year]], result.[[Month]],
// result.[[Day]]) is true.
DCHECK(IsValidISODate(isolate, result.date));
// 14. Assert: ! IsValidTime(result.[[Hour]], result.[[Minute]],
// result.[[Second]], result.[[Millisecond]], result.[[Microsecond]],
// result.[[Nanosecond]]) is true.
DCHECK(IsValidTime(isolate, result.time));
// 15. Return ? CreateTemporalDateTime(result.[[Year]], result.[[Month]],
// result.[[Day]], result.[[Hour]], result.[[Minute]], result.[[Second]],
// result.[[Millisecond]], result.[[Microsecond]], result.[[Nanosecond]],
// calendar).
return temporal::CreateTemporalDateTime(isolate, {result.date, result.time},
calendar);
}
// #sec-temporal.plaindatetime.prototype.withplaintime
MaybeHandle<JSTemporalPlainDateTime> JSTemporalPlainDateTime::WithPlainTime(
Isolate* isolate, Handle<JSTemporalPlainDateTime> date_time,
......@@ -9772,6 +9897,59 @@ MaybeHandle<Oddball> JSTemporalPlainTime::Equals(
return isolate->factory()->true_value();
}
// #sec-temporal.plaintime.prototype.with
MaybeHandle<JSTemporalPlainTime> JSTemporalPlainTime::With(
Isolate* isolate, Handle<JSTemporalPlainTime> temporal_time,
Handle<Object> temporal_time_like_obj, Handle<Object> options_obj) {
const char* method_name = "Temporal.PlainTime.prototype.with";
// 1. Let temporalTime be the this value.
// 2. Perform ? RequireInternalSlot(temporalTime,
// [[InitializedTemporalTime]]).
// 3. If Type(temporalTimeLike) is not Object, then
if (!temporal_time_like_obj->IsJSReceiver()) {
// a. Throw a TypeError exception.
THROW_NEW_ERROR(isolate, NEW_TEMPORAL_INVALID_ARG_TYPE_ERROR(),
JSTemporalPlainTime);
}
Handle<JSReceiver> temporal_time_like =
Handle<JSReceiver>::cast(temporal_time_like_obj);
// 4. Perform ? RejectObjectWithCalendarOrTimeZone(temporalTimeLike).
MAYBE_RETURN(RejectObjectWithCalendarOrTimeZone(isolate, temporal_time_like),
Handle<JSTemporalPlainTime>());
// 5. Let partialTime be ? ToPartialTime(temporalTimeLike).
TimeRecordCommon result;
MAYBE_ASSIGN_RETURN_ON_EXCEPTION_VALUE(
isolate, result,
ToPartialTime(
isolate, temporal_time_like,
{temporal_time->iso_hour(), temporal_time->iso_minute(),
temporal_time->iso_second(), temporal_time->iso_millisecond(),
temporal_time->iso_microsecond(), temporal_time->iso_nanosecond()},
method_name),
Handle<JSTemporalPlainTime>());
// 6. Set options to ? GetOptionsObject(options).
Handle<JSReceiver> options;
ASSIGN_RETURN_ON_EXCEPTION(
isolate, options, GetOptionsObject(isolate, options_obj, method_name),
JSTemporalPlainTime);
// 7. Let overflow be ? ToTemporalOverflow(options).
ShowOverflow overflow;
MAYBE_ASSIGN_RETURN_ON_EXCEPTION_VALUE(
isolate, overflow, ToTemporalOverflow(isolate, options, method_name),
Handle<JSTemporalPlainTime>());
// 20. Let result be ? RegulateTime(hour, minute, second, millisecond,
// microsecond, nanosecond, overflow).
MAYBE_ASSIGN_RETURN_ON_EXCEPTION_VALUE(
isolate, result, temporal::RegulateTime(isolate, result, overflow),
Handle<JSTemporalPlainTime>());
// 25. Return ? CreateTemporalTime(result.[[Hour]], result.[[Minute]],
// result.[[Second]], result.[[Millisecond]], result.[[Microsecond]],
// result.[[Nanosecond]]).
return CreateTemporalTime(isolate, result);
}
// #sec-temporal.now.plaintimeiso
MaybeHandle<JSTemporalPlainTime> JSTemporalPlainTime::NowISO(
Isolate* isolate, Handle<Object> temporal_time_zone_like) {
......
......@@ -379,6 +379,11 @@ class JSTemporalPlainDateTime
V8_WARN_UNUSED_RESULT static MaybeHandle<JSReceiver> GetISOFields(
Isolate* isolate, Handle<JSTemporalPlainDateTime> date_time);
// #sec-temporal.plaindatetime.prototype.with
V8_WARN_UNUSED_RESULT static MaybeHandle<JSTemporalPlainDateTime> With(
Isolate* isolate, Handle<JSTemporalPlainDateTime> date_time,
Handle<Object> temporal_date_time_like, Handle<Object> options);
// #sec-temporal.now.plaindatetime
V8_WARN_UNUSED_RESULT static MaybeHandle<JSTemporalPlainDateTime> Now(
Isolate* isolate, Handle<Object> calendar_like,
......@@ -493,6 +498,11 @@ class JSTemporalPlainTime
ToPlainDateTime(Isolate* isolate, Handle<JSTemporalPlainTime> plain_time,
Handle<Object> temporal_date);
// #sec-temporal.plaintime.prototype.with
V8_WARN_UNUSED_RESULT static MaybeHandle<JSTemporalPlainTime> With(
Isolate* isolate, Handle<JSTemporalPlainTime> plain_time,
Handle<Object> temporal_time_like, Handle<Object> options);
// #sec-temporal.now.plaintimeiso
V8_WARN_UNUSED_RESULT static MaybeHandle<JSTemporalPlainTime> NowISO(
Isolate* isolate, Handle<Object> temporal_time_zone_like);
......
......@@ -67,7 +67,6 @@
'temporal/plain-date-time-equals': [FAIL],
'temporal/plain-date-time-subtract': [FAIL],
'temporal/plain-date-time-to-json': [FAIL],
'temporal/plain-date-time-with': [FAIL],
'temporal/plain-date-to-plain-date-time': [FAIL],
'temporal/plain-date-with': [FAIL],
......
......@@ -999,19 +999,7 @@
'built-ins/Temporal/PlainDateTime/prototype/until/smallestunit-plurals-accepted': [FAIL],
'built-ins/Temporal/PlainDateTime/prototype/until/smallestunit-undefined': [FAIL],
'built-ins/Temporal/PlainDateTime/prototype/until/smallestunit-wrong-type': [FAIL],
'built-ins/Temporal/PlainDateTime/prototype/with/branding': [FAIL],
'built-ins/Temporal/PlainDateTime/prototype/with/calendar-fields-iterable': [FAIL],
'built-ins/Temporal/PlainDateTime/prototype/with/calendar-merge-fields-returns-primitive': [FAIL],
'built-ins/Temporal/PlainDateTime/prototype/with/copies-merge-fields-object': [FAIL],
'built-ins/Temporal/PlainDateTime/prototype/with/infinity-throws-rangeerror': [FAIL],
'built-ins/Temporal/PlainDateTime/prototype/with/options-undefined': [FAIL],
'built-ins/Temporal/PlainDateTime/prototype/with/order-of-operations': [FAIL],
'built-ins/Temporal/PlainDateTime/prototype/with/overflow-invalid-string': [FAIL],
'built-ins/Temporal/PlainDateTime/prototype/with/overflow-undefined': [FAIL],
'built-ins/Temporal/PlainDateTime/prototype/with/overflow-wrong-type': [FAIL],
'built-ins/Temporal/PlainDateTime/prototype/withPlainTime/argument-zoneddatetime-balance-negative-time-units': [FAIL],
'built-ins/Temporal/PlainDateTime/prototype/with/read-time-fields-before-datefromfields': [FAIL],
'built-ins/Temporal/PlainDateTime/prototype/with/subclassing-ignored': [FAIL],
'built-ins/Temporal/PlainMonthDay/from/calendar-monthdayfromfields-called-with-options-undefined': [FAIL],
'built-ins/Temporal/PlainMonthDay/prototype/equals/argument-string-with-utc-designator': [FAIL],
'built-ins/Temporal/PlainMonthDay/prototype/equals/argument-wrong-type': [FAIL],
......@@ -1148,18 +1136,7 @@
'built-ins/Temporal/PlainTime/prototype/until/smallestunit-plurals-accepted': [FAIL],
'built-ins/Temporal/PlainTime/prototype/until/smallestunit-undefined': [FAIL],
'built-ins/Temporal/PlainTime/prototype/until/smallestunit-wrong-type': [FAIL],
'built-ins/Temporal/PlainTime/prototype/with/argument-not-object': [FAIL],
'built-ins/Temporal/PlainTime/prototype/with/basic': [FAIL],
'built-ins/Temporal/PlainTime/prototype/with/branding': [FAIL],
'built-ins/Temporal/PlainTime/prototype/with/infinity-throws-rangeerror': [FAIL],
'built-ins/Temporal/PlainTime/prototype/with/options-invalid': [FAIL],
'built-ins/Temporal/PlainTime/prototype/with/options-undefined': [FAIL],
'built-ins/Temporal/PlainTime/prototype/with/order-of-operations': [FAIL],
'built-ins/Temporal/PlainTime/prototype/with/overflow-invalid-string': [FAIL],
'built-ins/Temporal/PlainTime/prototype/with/overflow-undefined': [FAIL],
'built-ins/Temporal/PlainTime/prototype/with/overflow-wrong-type': [FAIL],
'built-ins/Temporal/PlainTime/prototype/with/plaintimelike-invalid': [FAIL],
'built-ins/Temporal/PlainTime/prototype/with/subclassing-ignored': [FAIL],
'built-ins/Temporal/PlainYearMonth/compare/argument-string-with-utc-designator': [FAIL],
'built-ins/Temporal/PlainYearMonth/compare/calendar-fields-iterable': [FAIL],
'built-ins/Temporal/PlainYearMonth/compare/calendar-temporal-object': [FAIL],
......@@ -1743,7 +1720,6 @@
'built-ins/Temporal/PlainDateTime/prototype/subtract/argument-string-fractional-units-rounding-mode': [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/with/copy-properties-not-undefined': [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],
......@@ -1835,7 +1811,6 @@
'built-ins/Temporal/PlainTime/prototype/until/roundingmode-halfExpand': [FAIL],
'built-ins/Temporal/PlainTime/prototype/until/roundingmode-trunc': [FAIL],
'built-ins/Temporal/PlainTime/prototype/until/year-zero': [FAIL],
'built-ins/Temporal/PlainTime/prototype/with/copy-properties-not-undefined': [FAIL],
'built-ins/Temporal/PlainYearMonth/compare/argument-cast': [FAIL],
'built-ins/Temporal/PlainYearMonth/compare/basic': [FAIL],
'built-ins/Temporal/PlainYearMonth/compare/compare-calendar': [FAIL],
......@@ -1956,15 +1931,6 @@
'built-ins/Temporal/PlainDateTime/prototype/until/units-changed': [FAIL],
'built-ins/Temporal/PlainDateTime/prototype/until/weeks-months-mutually-exclusive': [FAIL],
'built-ins/Temporal/PlainDateTime/prototype/weekOfYear/basic': [FAIL],
'built-ins/Temporal/PlainDateTime/prototype/with/argument-object-insufficient-data': [FAIL],
'built-ins/Temporal/PlainDateTime/prototype/with/basic': [FAIL],
'built-ins/Temporal/PlainDateTime/prototype/with/calendar-throws': [FAIL],
'built-ins/Temporal/PlainDateTime/prototype/with/month-and-monthcode-must-agree': [FAIL],
'built-ins/Temporal/PlainDateTime/prototype/with/multiple-unrecognized-properties-ignored': [FAIL],
'built-ins/Temporal/PlainDateTime/prototype/with/options-empty': [FAIL],
'built-ins/Temporal/PlainDateTime/prototype/with/options-invalid': [FAIL],
'built-ins/Temporal/PlainDateTime/prototype/with/string-throws': [FAIL],
'built-ins/Temporal/PlainDateTime/prototype/with/timezone-throws': [FAIL],
'built-ins/Temporal/ZonedDateTime/prototype/withPlainDate/argument-string-invalid': [FAIL],
'built-ins/Temporal/Duration/compare/options-wrong-type': [FAIL],
......@@ -2064,17 +2030,12 @@
'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/round-relative-to-receiver': [FAIL],
'built-ins/Temporal/PlainDateTime/prototype/with/argument-not-object': [FAIL],
'built-ins/Temporal/PlainDateTime/prototype/with/calendar-options': [FAIL],
'built-ins/Temporal/PlainDateTime/prototype/with/calendar-temporal-object-throws': [FAIL],
'built-ins/Temporal/PlainDateTime/prototype/with/options-wrong-type': [FAIL],
'built-ins/Temporal/PlainDateTime/prototype/withPlainDate/argument-object-insufficient-data': [FAIL],
'built-ins/Temporal/PlainTime/prototype/round/options-wrong-type': [FAIL],
'built-ins/Temporal/PlainTime/prototype/round/roundto-invalid-string': [FAIL],
'built-ins/Temporal/PlainTime/prototype/since/options-wrong-type': [FAIL],
'built-ins/Temporal/PlainTime/prototype/toString/options-wrong-type': [FAIL],
'built-ins/Temporal/PlainTime/prototype/until/options-wrong-type': [FAIL],
'built-ins/Temporal/PlainTime/prototype/with/options-wrong-type': [FAIL],
'built-ins/Temporal/PlainYearMonth/prototype/add/options-wrong-type': [FAIL],
'built-ins/Temporal/PlainYearMonth/prototype/since/options-wrong-type': [FAIL],
'built-ins/Temporal/PlainYearMonth/prototype/subtract/options-wrong-type': [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