mirror of
https://github.com/Samsung/escargot.git
synced 2026-06-22 10:01:50 +00:00
Implement basic of Temporal.PlainMonthDay
Signed-off-by: Seonghyun Kim <sh8281.kim@samsung.com>
This commit is contained in:
parent
600fa1a906
commit
c3c3bca85e
12 changed files with 587 additions and 244 deletions
|
|
@ -27,6 +27,7 @@
|
|||
#include "runtime/TemporalInstantObject.h"
|
||||
#include "runtime/TemporalPlainTimeObject.h"
|
||||
#include "runtime/TemporalPlainDateObject.h"
|
||||
#include "runtime/TemporalPlainMonthDayObject.h"
|
||||
#include "runtime/TemporalPlainYearMonthObject.h"
|
||||
#include "runtime/TemporalNowObject.h"
|
||||
#include "runtime/DateObject.h"
|
||||
|
|
@ -593,7 +594,7 @@ static Value builtinTemporalPlainYearMonthConstructor(ExecutionState& state, Val
|
|||
// Let m be ? ToIntegerWithTruncation(isoMonth).
|
||||
auto m = argv[1].toIntegerWithTruncation(state);
|
||||
// If calendar is undefined, set calendar to "iso8601".
|
||||
Value calendar = argc > 3 ? argv[2] : Value();
|
||||
Value calendar = argc >= 3 ? argv[2] : Value();
|
||||
if (calendar.isUndefined()) {
|
||||
calendar = state.context()->staticStrings().lazyISO8601().string();
|
||||
}
|
||||
|
|
@ -710,6 +711,129 @@ static Value builtinTemporalPlainYearMonthSince(ExecutionState& state, Value thi
|
|||
return plainYearMonth->since(state, argv[0], argc > 1 ? argv[1] : Value());
|
||||
}
|
||||
|
||||
static Value builtinTemporalPlainYearMonthEquals(ExecutionState& state, Value thisValue, size_t argc, Value* argv, Optional<Object*> newTarget)
|
||||
{
|
||||
RESOLVE_THIS_BINDING_TO_PLAINYEARMONTH(plainYearMonth, Equals);
|
||||
return Value(plainYearMonth->equals(state, argv[0]));
|
||||
}
|
||||
|
||||
static Value builtinTemporalPlainMonthDayConstructor(ExecutionState& state, Value thisValue, size_t argc, Value* argv, Optional<Object*> newTarget)
|
||||
{
|
||||
// If NewTarget is undefined, throw a TypeError exception.
|
||||
if (!newTarget.hasValue()) {
|
||||
ErrorObject::throwBuiltinError(state, ErrorCode::TypeError, ErrorObject::Messages::GlobalObject_ConstructorRequiresNew);
|
||||
}
|
||||
|
||||
Object* proto = Object::getPrototypeFromConstructor(state, newTarget.value(), [](ExecutionState& state, Context* constructorRealm) -> Object* {
|
||||
return constructorRealm->globalObject()->temporalPlainMonthDayPrototype();
|
||||
});
|
||||
|
||||
Value referenceISOYear = argc > 3 ? argv[3] : Value();
|
||||
// If referenceISOYear is undefined, then
|
||||
if (referenceISOYear.isUndefined()) {
|
||||
// Set referenceISOYear to 1972𝔽 (the first ISO 8601 leap year after the epoch).
|
||||
referenceISOYear = Value(1972);
|
||||
}
|
||||
|
||||
// Let m be ? ToIntegerWithTruncation(isoMonth).
|
||||
auto m = argv[0].toIntegerWithTruncation(state);
|
||||
// Let d be ? ToIntegerWithTruncation(isoDay).
|
||||
auto d = argv[1].toIntegerWithTruncation(state);
|
||||
// If calendar is undefined, set calendar to "iso8601".
|
||||
Value calendar = argc >= 3 ? argv[2] : Value();
|
||||
if (calendar.isUndefined()) {
|
||||
calendar = state.context()->staticStrings().lazyISO8601().string();
|
||||
}
|
||||
// If calendar is not a String, throw a TypeError exception.
|
||||
if (!calendar.isString()) {
|
||||
ErrorObject::throwBuiltinError(state, ErrorCode::TypeError, "calendar must be String");
|
||||
}
|
||||
// Set calendar to ? CanonicalizeCalendar(calendar).
|
||||
auto mayCalendar = Calendar::fromString(calendar.asString());
|
||||
if (!mayCalendar) {
|
||||
ErrorObject::throwBuiltinError(state, ErrorCode::RangeError, "Invalid calendar");
|
||||
}
|
||||
// Let y be ? ToIntegerWithTruncation(referenceISOYear).
|
||||
auto y = referenceISOYear.toIntegerWithTruncation(state);
|
||||
// If IsValidISODate(y, m, ref) is false, throw a RangeError exception.
|
||||
// If IsValidISODate(y, m, d) is false, throw a RangeError exception.
|
||||
if (m < 1 || m > 12 || d < 1 || d > ISO8601::daysInMonth(y, m) || !ISO8601::isDateTimeWithinLimits(y, m, d, 12, 0, 0, 0, 0, 0)) {
|
||||
ErrorObject::throwBuiltinError(state, ErrorCode::RangeError, "date is out of range");
|
||||
}
|
||||
// Let isoDate be CreateISODateRecord(y, m, d).
|
||||
// Return ? CreateTemporalMonthDay(isoDate, calendar, NewTarget).
|
||||
return new TemporalPlainMonthDayObject(state, proto, ISO8601::PlainDate(y, m, d), mayCalendar.value());
|
||||
}
|
||||
|
||||
static Value builtinTemporalPlainMonthDayFrom(ExecutionState& state, Value thisValue, size_t argc, Value* argv, Optional<Object*> newTarget)
|
||||
{
|
||||
return Temporal::toTemporalMonthDay(state, argv[0], argc > 1 ? argv[1] : Value());
|
||||
}
|
||||
|
||||
#define RESOLVE_THIS_BINDING_TO_PLAINMONTHDAY(NAME, BUILT_IN_METHOD) \
|
||||
if (!thisValue.isObject() || !thisValue.asObject()->isTemporalPlainMonthDayObject()) { \
|
||||
ErrorObject::throwBuiltinError(state, ErrorCode::TypeError, state.context()->staticStrings().lazyCapitalPlainMonthDay().string(), true, state.context()->staticStrings().lazy##BUILT_IN_METHOD().string(), ErrorObject::Messages::GlobalObject_CalledOnIncompatibleReceiver); \
|
||||
} \
|
||||
TemporalPlainMonthDayObject* NAME = thisValue.asObject()->asTemporalPlainMonthDayObject();
|
||||
|
||||
#define RESOLVE_THIS_BINDING_TO_PLAINMONTHDAY2(NAME, BUILT_IN_METHOD) \
|
||||
if (!thisValue.isObject() || !thisValue.asObject()->isTemporalPlainMonthDayObject()) { \
|
||||
ErrorObject::throwBuiltinError(state, ErrorCode::TypeError, state.context()->staticStrings().lazyCapitalPlainMonthDay().string(), true, state.context()->staticStrings().BUILT_IN_METHOD.string(), ErrorObject::Messages::GlobalObject_CalledOnIncompatibleReceiver); \
|
||||
} \
|
||||
TemporalPlainMonthDayObject* NAME = thisValue.asObject()->asTemporalPlainMonthDayObject();
|
||||
|
||||
static Value builtinTemporalPlainMonthDayCalendarId(ExecutionState& state, Value thisValue, size_t argc, Value* argv, Optional<Object*> newTarget)
|
||||
{
|
||||
RESOLVE_THIS_BINDING_TO_PLAINMONTHDAY(temporalMonthDay, CalendarId);
|
||||
if (temporalMonthDay->calendarID() == Calendar(Calendar::ID::ISO8601)) {
|
||||
return state.context()->staticStrings().lazyISO8601().string();
|
||||
} else {
|
||||
return temporalMonthDay->calendarID().toString();
|
||||
}
|
||||
}
|
||||
|
||||
static Value builtinTemporalPlainMonthDayMonthCode(ExecutionState& state, Value thisValue, size_t argc, Value* argv, Optional<Object*> newTarget)
|
||||
{
|
||||
RESOLVE_THIS_BINDING_TO_PLAINMONTHDAY(temporalMonthDay, MonthCode);
|
||||
return temporalMonthDay->monthCode(state);
|
||||
}
|
||||
|
||||
static Value builtinTemporalPlainMonthDayToJSON(ExecutionState& state, Value thisValue, size_t argc, Value* argv, Optional<Object*> newTarget)
|
||||
{
|
||||
RESOLVE_THIS_BINDING_TO_PLAINMONTHDAY2(plainMonthDay, toJSON);
|
||||
return plainMonthDay->toString(state, Value());
|
||||
}
|
||||
|
||||
static Value builtinTemporalPlainMonthDayToLocaleString(ExecutionState& state, Value thisValue, size_t argc, Value* argv, Optional<Object*> newTarget)
|
||||
{
|
||||
RESOLVE_THIS_BINDING_TO_PLAINMONTHDAY2(plainMonthDay, toLocaleString);
|
||||
return plainMonthDay->toString(state, Value());
|
||||
}
|
||||
|
||||
static Value builtinTemporalPlainMonthDayToString(ExecutionState& state, Value thisValue, size_t argc, Value* argv, Optional<Object*> newTarget)
|
||||
{
|
||||
RESOLVE_THIS_BINDING_TO_PLAINMONTHDAY2(plainMonthDay, toString);
|
||||
return plainMonthDay->toString(state, argc ? argv[0] : Value());
|
||||
}
|
||||
|
||||
static Value builtinTemporalPlainMonthDayWith(ExecutionState& state, Value thisValue, size_t argc, Value* argv, Optional<Object*> newTarget)
|
||||
{
|
||||
RESOLVE_THIS_BINDING_TO_PLAINMONTHDAY2(plainMonthDay, with);
|
||||
return plainMonthDay->with(state, argv[0], argc > 1 ? argv[1] : Value());
|
||||
}
|
||||
|
||||
static Value builtinTemporalPlainMonthDayEquals(ExecutionState& state, Value thisValue, size_t argc, Value* argv, Optional<Object*> newTarget)
|
||||
{
|
||||
RESOLVE_THIS_BINDING_TO_PLAINMONTHDAY(plainMonthDay, Equals);
|
||||
return Value(plainMonthDay->equals(state, argv[0]));
|
||||
}
|
||||
|
||||
static Value builtinTemporalPlainMonthDayToPlainDate(ExecutionState& state, Value thisValue, size_t argc, Value* argv, Optional<Object*> newTarget)
|
||||
{
|
||||
RESOLVE_THIS_BINDING_TO_PLAINMONTHDAY(plainMonthDay, ToPlainDate);
|
||||
return plainMonthDay->toPlainDate(state, argv[0]);
|
||||
}
|
||||
|
||||
void GlobalObject::initializeTemporal(ExecutionState& state)
|
||||
{
|
||||
ObjectPropertyNativeGetterSetterData* nativeData = new ObjectPropertyNativeGetterSetterData(
|
||||
|
|
@ -905,6 +1029,7 @@ void GlobalObject::installTemporal(ExecutionState& state)
|
|||
#define DEFINE_GETTER(name, Name) DEFINE_PLAINTIME_PROTOTYPE_GETTER_PROPERTY(name, #name, Name)
|
||||
PLAIN_TIME_UNITS(DEFINE_GETTER)
|
||||
#undef DEFINE_GETTER
|
||||
#undef DEFINE_PLAINTIME_PROTOTYPE_GETTER_PROPERTY
|
||||
|
||||
// Temporal.PlainDate
|
||||
m_temporalPlainDate = new NativeFunctionObject(state, NativeFunctionInfo(strings->lazyCapitalPlainDate(), builtinTemporalPlainDateConstructor, 3), NativeFunctionObject::__ForBuiltinConstructor__);
|
||||
|
|
@ -963,6 +1088,7 @@ void GlobalObject::installTemporal(ExecutionState& state)
|
|||
#define DEFINE_GETTER(name, Name) DEFINE_PLAINDATE_PROTOTYPE_GETTER_PROPERTY(name, #name, Name)
|
||||
PLAIN_DATE_UNITS(DEFINE_GETTER)
|
||||
#undef DEFINE_GETTER
|
||||
#undef DEFINE_PLAINDATE_PROTOTYPE_GETTER_PROPERTY
|
||||
|
||||
#define PLAINDATE_EXTRA_PROPERTY(F) \
|
||||
F(era, Era) \
|
||||
|
|
@ -994,6 +1120,7 @@ void GlobalObject::installTemporal(ExecutionState& state)
|
|||
#define DEFINE_GETTER(name, Name) DEFINE_PLAINDATE_PROTOTYPE_EXTRA_GETTER_PROPERTY(name, #name, Name)
|
||||
PLAINDATE_EXTRA_PROPERTY(DEFINE_GETTER)
|
||||
#undef DEFINE_GETTER
|
||||
#undef DEFINE_PLAINDATE_PROTOTYPE_EXTRA_GETTER_PROPERTY
|
||||
|
||||
m_temporalPlainDate->setFunctionPrototype(state, m_temporalPlainDatePrototype);
|
||||
|
||||
|
|
@ -1017,6 +1144,7 @@ void GlobalObject::installTemporal(ExecutionState& state)
|
|||
m_temporalPlainYearMonthPrototype->directDefineOwnProperty(state, ObjectPropertyName(strings->lazySubtract()), ObjectPropertyDescriptor(new NativeFunctionObject(state, NativeFunctionInfo(strings->lazySubtract(), builtinTemporalPlainYearMonthSubtract, 1, NativeFunctionInfo::Strict)), (ObjectPropertyDescriptor::PresentAttribute)(ObjectPropertyDescriptor::WritablePresent | ObjectPropertyDescriptor::ConfigurablePresent)));
|
||||
m_temporalPlainYearMonthPrototype->directDefineOwnProperty(state, ObjectPropertyName(strings->lazyUntil()), ObjectPropertyDescriptor(new NativeFunctionObject(state, NativeFunctionInfo(strings->lazyUntil(), builtinTemporalPlainYearMonthUntil, 1, NativeFunctionInfo::Strict)), (ObjectPropertyDescriptor::PresentAttribute)(ObjectPropertyDescriptor::WritablePresent | ObjectPropertyDescriptor::ConfigurablePresent)));
|
||||
m_temporalPlainYearMonthPrototype->directDefineOwnProperty(state, ObjectPropertyName(strings->lazySince()), ObjectPropertyDescriptor(new NativeFunctionObject(state, NativeFunctionInfo(strings->lazySince(), builtinTemporalPlainYearMonthSince, 1, NativeFunctionInfo::Strict)), (ObjectPropertyDescriptor::PresentAttribute)(ObjectPropertyDescriptor::WritablePresent | ObjectPropertyDescriptor::ConfigurablePresent)));
|
||||
m_temporalPlainYearMonthPrototype->directDefineOwnProperty(state, ObjectPropertyName(strings->lazyEquals()), ObjectPropertyDescriptor(new NativeFunctionObject(state, NativeFunctionInfo(strings->lazyEquals(), builtinTemporalPlainYearMonthEquals, 1, NativeFunctionInfo::Strict)), (ObjectPropertyDescriptor::PresentAttribute)(ObjectPropertyDescriptor::WritablePresent | ObjectPropertyDescriptor::ConfigurablePresent)));
|
||||
|
||||
{
|
||||
AtomicString name(state.context(), "get calendarId");
|
||||
|
|
@ -1036,7 +1164,7 @@ void GlobalObject::installTemporal(ExecutionState& state)
|
|||
m_temporalPlainYearMonthPrototype->directDefineOwnProperty(state, ObjectPropertyName(strings->lazyMonthCode()), desc);
|
||||
}
|
||||
|
||||
#define DEFINE_PLAINYEAR_PROTOTYPE_GETTER_PROPERTY(name, stringName, Name) \
|
||||
#define DEFINE_PLAINYEARMONTH_PROTOTYPE_GETTER_PROPERTY(name, stringName, Name) \
|
||||
{ \
|
||||
AtomicString name(state.context(), "get " stringName); \
|
||||
auto getter = new NativeFunctionObject(state, NativeFunctionInfo(name, [](ExecutionState& state, Value thisValue, size_t argc, Value* argv, Optional<Object*> newTarget) -> Value { \
|
||||
|
|
@ -1050,9 +1178,10 @@ void GlobalObject::installTemporal(ExecutionState& state)
|
|||
m_temporalPlainYearMonthPrototype->directDefineOwnProperty(state, ObjectPropertyName(state, strings->lazy##Name()), desc); \
|
||||
}
|
||||
|
||||
#define DEFINE_GETTER(name, Name) DEFINE_PLAINYEAR_PROTOTYPE_GETTER_PROPERTY(name, #name, Name)
|
||||
#define DEFINE_GETTER(name, Name) DEFINE_PLAINYEARMONTH_PROTOTYPE_GETTER_PROPERTY(name, #name, Name)
|
||||
PLAIN_YEARMONTH_UNITS(DEFINE_GETTER)
|
||||
#undef DEFINE_GETTER
|
||||
#undef DEFINE_PLAINYEARMONTH_PROTOTYPE_GETTER_PROPERTY
|
||||
|
||||
#define PLAINYEARMONTH_EXTRA_PROPERTY(F) \
|
||||
F(era, Era) \
|
||||
|
|
@ -1079,7 +1208,54 @@ void GlobalObject::installTemporal(ExecutionState& state)
|
|||
#define DEFINE_GETTER(name, Name) DEFINE_PLAINYEARMONTH_PROTOTYPE_EXTRA_GETTER_PROPERTY(name, #name, Name)
|
||||
PLAINYEARMONTH_EXTRA_PROPERTY(DEFINE_GETTER)
|
||||
#undef DEFINE_GETTER
|
||||
#undef DEFINE_PLAINYEARMONTH_PROTOTYPE_EXTRA_GETTER_PROPERTY
|
||||
|
||||
// Temporal.PlainMonthDay
|
||||
m_temporalPlainMonthDay = new NativeFunctionObject(state, NativeFunctionInfo(strings->lazyCapitalPlainMonthDay(), builtinTemporalPlainMonthDayConstructor, 2), NativeFunctionObject::__ForBuiltinConstructor__);
|
||||
m_temporalPlainMonthDay->setGlobalIntrinsicObject(state);
|
||||
|
||||
m_temporalPlainMonthDay->directDefineOwnProperty(state, ObjectPropertyName(strings->from), ObjectPropertyDescriptor(new NativeFunctionObject(state, NativeFunctionInfo(strings->from, builtinTemporalPlainMonthDayFrom, 1, NativeFunctionInfo::Strict)), (ObjectPropertyDescriptor::PresentAttribute)(ObjectPropertyDescriptor::WritablePresent | ObjectPropertyDescriptor::ConfigurablePresent)));
|
||||
m_temporalPlainMonthDayPrototype = m_temporalPlainMonthDay->getFunctionPrototype(state).asObject();
|
||||
m_temporalPlainMonthDayPrototype->directDefineOwnProperty(state, ObjectPropertyName(state.context()->vmInstance()->globalSymbols().toStringTag),
|
||||
ObjectPropertyDescriptor(Value(strings->lazyTemporalDotPlainMonthDay().string()), (ObjectPropertyDescriptor::PresentAttribute)(ObjectPropertyDescriptor::ConfigurablePresent)));
|
||||
m_temporalPlainMonthDayPrototype->directDefineOwnProperty(state, ObjectPropertyName(strings->toString), ObjectPropertyDescriptor(new NativeFunctionObject(state, NativeFunctionInfo(strings->toString, builtinTemporalPlainMonthDayToString, 0, NativeFunctionInfo::Strict)), (ObjectPropertyDescriptor::PresentAttribute)(ObjectPropertyDescriptor::WritablePresent | ObjectPropertyDescriptor::ConfigurablePresent)));
|
||||
m_temporalPlainMonthDayPrototype->directDefineOwnProperty(state, ObjectPropertyName(strings->toJSON), ObjectPropertyDescriptor(new NativeFunctionObject(state, NativeFunctionInfo(strings->toJSON, builtinTemporalPlainMonthDayToJSON, 0, NativeFunctionInfo::Strict)), (ObjectPropertyDescriptor::PresentAttribute)(ObjectPropertyDescriptor::WritablePresent | ObjectPropertyDescriptor::ConfigurablePresent)));
|
||||
m_temporalPlainMonthDayPrototype->directDefineOwnProperty(state, ObjectPropertyName(strings->toLocaleString), ObjectPropertyDescriptor(new NativeFunctionObject(state, NativeFunctionInfo(strings->toLocaleString, builtinTemporalPlainMonthDayToLocaleString, 0, NativeFunctionInfo::Strict)), (ObjectPropertyDescriptor::PresentAttribute)(ObjectPropertyDescriptor::WritablePresent | ObjectPropertyDescriptor::ConfigurablePresent)));
|
||||
m_temporalPlainMonthDayPrototype->directDefineOwnProperty(state, ObjectPropertyName(strings->valueOf), ObjectPropertyDescriptor(new NativeFunctionObject(state, NativeFunctionInfo(strings->valueOf, builtinTemporalAnyInstanceValueOf, 0, NativeFunctionInfo::Strict)), (ObjectPropertyDescriptor::PresentAttribute)(ObjectPropertyDescriptor::WritablePresent | ObjectPropertyDescriptor::ConfigurablePresent)));
|
||||
m_temporalPlainMonthDayPrototype->directDefineOwnProperty(state, ObjectPropertyName(strings->with), ObjectPropertyDescriptor(new NativeFunctionObject(state, NativeFunctionInfo(strings->with, builtinTemporalPlainMonthDayWith, 1, NativeFunctionInfo::Strict)), (ObjectPropertyDescriptor::PresentAttribute)(ObjectPropertyDescriptor::WritablePresent | ObjectPropertyDescriptor::ConfigurablePresent)));
|
||||
m_temporalPlainMonthDayPrototype->directDefineOwnProperty(state, ObjectPropertyName(strings->lazyEquals()), ObjectPropertyDescriptor(new NativeFunctionObject(state, NativeFunctionInfo(strings->lazyEquals(), builtinTemporalPlainMonthDayEquals, 1, NativeFunctionInfo::Strict)), (ObjectPropertyDescriptor::PresentAttribute)(ObjectPropertyDescriptor::WritablePresent | ObjectPropertyDescriptor::ConfigurablePresent)));
|
||||
m_temporalPlainMonthDayPrototype->directDefineOwnProperty(state, ObjectPropertyName(strings->lazyToPlainDate()), ObjectPropertyDescriptor(new NativeFunctionObject(state, NativeFunctionInfo(strings->lazyToPlainDate(), builtinTemporalPlainMonthDayToPlainDate, 1, NativeFunctionInfo::Strict)), (ObjectPropertyDescriptor::PresentAttribute)(ObjectPropertyDescriptor::WritablePresent | ObjectPropertyDescriptor::ConfigurablePresent)));
|
||||
|
||||
{
|
||||
AtomicString name(state.context(), "get calendarId");
|
||||
JSGetterSetter gs(
|
||||
new NativeFunctionObject(state, NativeFunctionInfo(name, builtinTemporalPlainMonthDayCalendarId, 0, NativeFunctionInfo::Strict)),
|
||||
Value(Value::EmptyValue));
|
||||
ObjectPropertyDescriptor desc(gs, ObjectPropertyDescriptor::ConfigurablePresent);
|
||||
m_temporalPlainMonthDayPrototype->directDefineOwnProperty(state, ObjectPropertyName(strings->lazyCalendarId()), desc);
|
||||
}
|
||||
|
||||
{
|
||||
AtomicString name(state.context(), "get monthCode");
|
||||
JSGetterSetter gs(
|
||||
new NativeFunctionObject(state, NativeFunctionInfo(name, builtinTemporalPlainMonthDayMonthCode, 0, NativeFunctionInfo::Strict)),
|
||||
Value(Value::EmptyValue));
|
||||
ObjectPropertyDescriptor desc(gs, ObjectPropertyDescriptor::ConfigurablePresent);
|
||||
m_temporalPlainMonthDayPrototype->directDefineOwnProperty(state, ObjectPropertyName(strings->lazyMonthCode()), desc);
|
||||
}
|
||||
|
||||
{
|
||||
AtomicString day(state.context(), "get day");
|
||||
auto getter = new NativeFunctionObject(state, NativeFunctionInfo(day, [](ExecutionState& state, Value thisValue, size_t argc, Value* argv, Optional<Object*> newTarget) -> Value {
|
||||
if (!thisValue.isObject() || !thisValue.asObject()->isTemporalPlainMonthDayObject()) {
|
||||
ErrorObject::throwBuiltinError(state, ErrorCode::TypeError, state.context()->staticStrings().lazyCapitalPlainMonthDay().string(), true, String::fromASCII("day"), ErrorObject::Messages::GlobalObject_CalledOnIncompatibleReceiver);
|
||||
}
|
||||
TemporalPlainMonthDayObject* s = thisValue.asObject()->asTemporalPlainMonthDayObject();
|
||||
return Value(s->plainDate().day()); }, 0, NativeFunctionInfo::Strict));
|
||||
JSGetterSetter gs(getter, Value());
|
||||
ObjectPropertyDescriptor desc(gs, ObjectPropertyDescriptor::ConfigurablePresent);
|
||||
m_temporalPlainMonthDayPrototype->directDefineOwnProperty(state, ObjectPropertyName(state, strings->lazyDay()), desc);
|
||||
}
|
||||
|
||||
m_temporal = new Object(state);
|
||||
m_temporal->setGlobalIntrinsicObject(state);
|
||||
|
|
@ -1105,6 +1281,9 @@ void GlobalObject::installTemporal(ExecutionState& state)
|
|||
m_temporal->directDefineOwnProperty(state, ObjectPropertyName(strings->lazyCapitalPlainYearMonth()),
|
||||
ObjectPropertyDescriptor(m_temporalPlainYearMonth, (ObjectPropertyDescriptor::PresentAttribute)(ObjectPropertyDescriptor::WritablePresent | ObjectPropertyDescriptor::ConfigurablePresent)));
|
||||
|
||||
m_temporal->directDefineOwnProperty(state, ObjectPropertyName(strings->lazyCapitalPlainMonthDay()),
|
||||
ObjectPropertyDescriptor(m_temporalPlainMonthDay, (ObjectPropertyDescriptor::PresentAttribute)(ObjectPropertyDescriptor::WritablePresent | ObjectPropertyDescriptor::ConfigurablePresent)));
|
||||
|
||||
redefineOwnProperty(state, ObjectPropertyName(strings->lazyCapitalTemporal()),
|
||||
ObjectPropertyDescriptor(m_temporal, (ObjectPropertyDescriptor::PresentAttribute)(ObjectPropertyDescriptor::WritablePresent | ObjectPropertyDescriptor::ConfigurablePresent)));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -287,6 +287,8 @@ class FunctionObject;
|
|||
F(temporalPlainTimePrototype, Object, objName) \
|
||||
F(temporalPlainDate, FunctionObject, objName) \
|
||||
F(temporalPlainDatePrototype, Object, objName) \
|
||||
F(temporalPlainMonthDay, FunctionObject, objName) \
|
||||
F(temporalPlainMonthDayPrototype, Object, objName) \
|
||||
F(temporalPlainYearMonth, FunctionObject, objName) \
|
||||
F(temporalPlainYearMonthPrototype, Object, objName)
|
||||
#else
|
||||
|
|
|
|||
|
|
@ -969,6 +969,7 @@ namespace Escargot {
|
|||
F(CapitalPlainDate, "PlainDate") \
|
||||
F(CapitalPlainDateTime, "PlainDateTime") \
|
||||
F(CapitalPlainTime, "PlainTime") \
|
||||
F(CapitalPlainMonthDay, "PlainMonthDay") \
|
||||
F(CapitalPlainYearMonth, "PlainYearMonth") \
|
||||
F(CapitalTemporal, "Temporal") \
|
||||
F(Critical, "critical") \
|
||||
|
|
@ -1007,6 +1008,7 @@ namespace Escargot {
|
|||
F(TemporalDotPlainDate, "Temporal.PlainDate") \
|
||||
F(TemporalDotPlainDateTime, "Temporal.PlainDateTime") \
|
||||
F(TemporalDotPlainTime, "Temporal.PlainTime") \
|
||||
F(TemporalDotPlainMonthDay, "Temporal.PlainMonthDay") \
|
||||
F(TemporalDotPlainYearMonth, "Temporal.PlainYearMonth") \
|
||||
F(ToPlainDate, "toPlainDate") \
|
||||
F(TimeZoneId, "timeZoneId") \
|
||||
|
|
|
|||
|
|
@ -52,6 +52,7 @@
|
|||
#include "runtime/TemporalInstantObject.h"
|
||||
#include "runtime/TemporalPlainTimeObject.h"
|
||||
#include "runtime/TemporalPlainDateObject.h"
|
||||
#include "runtime/TemporalPlainMonthDayObject.h"
|
||||
#include "runtime/TemporalPlainYearMonthObject.h"
|
||||
#include "intl/Intl.h"
|
||||
|
||||
|
|
@ -603,6 +604,110 @@ TemporalPlainYearMonthObject* Temporal::toTemporalYearMonth(ExecutionState& stat
|
|||
plainDate, mayID.value());
|
||||
}
|
||||
|
||||
TemporalPlainMonthDayObject* Temporal::toTemporalMonthDay(ExecutionState& state, Value item, Value options)
|
||||
{
|
||||
// If options is not present, set options to undefined.
|
||||
// If item is an Object, then
|
||||
if (item.isObject()) {
|
||||
// If item has an [[InitializedTemporalDate]] internal slot, then
|
||||
if (item.asObject()->isTemporalPlainMonthDayObject()) {
|
||||
// Let resolvedOptions be ? GetOptionsObject(options).
|
||||
auto resolvedOptions = Intl::getOptionsObject(state, options);
|
||||
// Perform ? GetTemporalOverflowOption(resolvedOptions).
|
||||
Temporal::getTemporalOverflowOption(state, resolvedOptions);
|
||||
// Return ! CreateTemporalYearMonth(item.[[ISODate]], item.[[Calendar]]).
|
||||
return new TemporalPlainMonthDayObject(state, state.context()->globalObject()->temporalPlainMonthDayPrototype(),
|
||||
item.asObject()->asTemporalPlainMonthDayObject()->plainDate(), item.asObject()->asTemporalPlainMonthDayObject()->calendarID());
|
||||
}
|
||||
|
||||
// Let calendar be ? GetTemporalCalendarIdentifierWithISODefault(item).
|
||||
auto calendar = Temporal::getTemporalCalendarIdentifierWithISODefault(state, item);
|
||||
// Let fields be ? PrepareCalendarFields(calendar, item, « year, month, month-code », «», «»).
|
||||
CalendarField f[4] = { CalendarField::Year, CalendarField::Month, CalendarField::MonthCode, CalendarField::Day };
|
||||
auto fields = prepareCalendarFields(state, calendar, item.asObject(), f, 4, nullptr, 0, nullptr, 0);
|
||||
// Let resolvedOptions be ? GetOptionsObject(options).
|
||||
auto resolvedOptions = Intl::getOptionsObject(state, options);
|
||||
// Let overflow be ? GetTemporalOverflowOption(resolvedOptions).
|
||||
auto overflow = Temporal::getTemporalOverflowOption(state, resolvedOptions);
|
||||
// Let isoDate be ? CalendarMonthDayFromFields(calendar, fields, overflow).
|
||||
auto isoDate = calendarDateFromFields(state, calendar, fields, overflow, CalendarDateFromFieldsMode::MonthDay);
|
||||
// Return ! CreateTemporalMonthDay(isoDate, calendar).
|
||||
return new TemporalPlainMonthDayObject(state, state.context()->globalObject()->temporalPlainMonthDayPrototype(),
|
||||
isoDate, calendar);
|
||||
}
|
||||
|
||||
// If item is not a String, throw a TypeError exception.
|
||||
if (!item.isString()) {
|
||||
ErrorObject::throwBuiltinError(state, ErrorCode::TypeError, "ToTemporalMonthDay needs Object or String");
|
||||
}
|
||||
// Let result be ? ParseISODateTime(item, « TemporalMonthDayString »).
|
||||
ISO8601::DateTimeParseOption option;
|
||||
option.allowTimeZoneTimeWithoutTime = true;
|
||||
auto result = ISO8601::parseCalendarDateTime(item.asString(), option);
|
||||
auto parseResultMonthDay = ISO8601::parseCalendarMonthDay(item.asString(), option);
|
||||
if (!result && !parseResultMonthDay) {
|
||||
ErrorObject::throwBuiltinError(state, ErrorCode::RangeError, "ToTemporalMonthDay needs ISO Date string");
|
||||
}
|
||||
|
||||
int32_t testYear = 1972;
|
||||
ISO8601::PlainDate plainDate;
|
||||
Optional<ISO8601::TimeZoneRecord> timeZone;
|
||||
Optional<ISO8601::CalendarID> calendarID;
|
||||
|
||||
if (result) {
|
||||
plainDate = std::get<0>(result.value());
|
||||
timeZone = std::get<2>(result.value());
|
||||
calendarID = std::get<3>(result.value());
|
||||
|
||||
if (calendarID && calendarID.value() != "iso8601") {
|
||||
testYear = plainDate.year();
|
||||
}
|
||||
|
||||
if (!std::get<1>(result.value()) && timeZone && timeZone.value().m_offset) {
|
||||
ErrorObject::throwBuiltinError(state, ErrorCode::RangeError, "ToTemporalMonthDay needs ISO Time string without UTC designator");
|
||||
}
|
||||
} else {
|
||||
plainDate = std::get<0>(parseResultMonthDay.value());
|
||||
timeZone = std::get<1>(parseResultMonthDay.value());
|
||||
calendarID = std::get<2>(parseResultMonthDay.value());
|
||||
}
|
||||
|
||||
// override year
|
||||
plainDate = ISO8601::PlainDate(1972, plainDate.month(), plainDate.day());
|
||||
|
||||
if (timeZone && timeZone.value().m_z) {
|
||||
ErrorObject::throwBuiltinError(state, ErrorCode::RangeError, "ToTemporalMonthDay needs ISO Time string without UTC designator");
|
||||
}
|
||||
if (parseResultMonthDay && timeZone && timeZone.value().m_offset.hasValue() && !calendarID) {
|
||||
ErrorObject::throwBuiltinError(state, ErrorCode::RangeError, "ToTemporalMonthDay needs ISO Date string");
|
||||
}
|
||||
if (!result && parseResultMonthDay && calendarID && calendarID.value() != "iso8601") {
|
||||
ErrorObject::throwBuiltinError(state, ErrorCode::RangeError, "ToTemporalMonthDay needs ISO8601 calendar");
|
||||
}
|
||||
|
||||
if (!ISO8601::isDateTimeWithinLimits(testYear, plainDate.month(), plainDate.day(), 12, 0, 0, 0, 0, 0)) {
|
||||
ErrorObject::throwBuiltinError(state, ErrorCode::RangeError, "ToTemporalMonthDay needs ISO Date string in valid range");
|
||||
}
|
||||
|
||||
// Let calendar be result.[[Calendar]].
|
||||
// If calendar is empty, set calendar to "iso8601".
|
||||
String* calendar = state.context()->staticStrings().lazyISO8601().string();
|
||||
if (calendarID) {
|
||||
calendar = String::fromUTF8(calendarID.value().data(), calendarID.value().length());
|
||||
}
|
||||
// Set calendar to ? CanonicalizeCalendar(calendar).
|
||||
auto mayID = Calendar::fromString(calendar);
|
||||
if (!mayID) {
|
||||
ErrorObject::throwBuiltinError(state, ErrorCode::RangeError, "Invalid CalendarID");
|
||||
}
|
||||
// Let resolvedOptions be ? GetOptionsObject(options).
|
||||
auto resolvedOptions = Intl::getOptionsObject(state, options);
|
||||
// Perform ? GetTemporalOverflowOption(resolvedOptions).
|
||||
Temporal::getTemporalOverflowOption(state, resolvedOptions);
|
||||
return new TemporalPlainMonthDayObject(state, state.context()->globalObject()->temporalPlainMonthDayPrototype(),
|
||||
plainDate, mayID.value());
|
||||
}
|
||||
|
||||
Optional<unsigned> Temporal::getTemporalFractionalSecondDigitsOption(ExecutionState& state, Optional<Object*> resolvedOptions)
|
||||
{
|
||||
constexpr auto msg = "The value you gave for GetTemporalFractionalSecondDigitsOption is invalid";
|
||||
|
|
@ -1345,7 +1450,7 @@ Calendar Temporal::toTemporalCalendarIdentifier(ExecutionState& state, Value tem
|
|||
}
|
||||
}
|
||||
if (parseResultMonthDay) {
|
||||
auto cid = tryOnce(state, std::get<1>(parseResultMonthDay.value()));
|
||||
auto cid = tryOnce(state, std::get<2>(parseResultMonthDay.value()));
|
||||
if (cid) {
|
||||
return cid.value();
|
||||
}
|
||||
|
|
@ -1550,6 +1655,10 @@ CalendarFieldsRecord Temporal::prepareCalendarFields(ExecutionState& state, Cale
|
|||
// https://tc39.es/proposal-temporal/#sec-temporal-calendarresolvefields
|
||||
UCalendar* Temporal::calendarResolveFields(ExecutionState& state, Calendar calendar, CalendarFieldsRecord fields, TemporalOverflowOption overflow, CalendarDateFromFieldsMode mode)
|
||||
{
|
||||
if (mode == CalendarDateFromFieldsMode::MonthDay && calendar.isISO8601() && !fields.year) {
|
||||
fields.year = 1972;
|
||||
}
|
||||
|
||||
if (calendar.isISO8601() || !calendar.isEraRelated()) {
|
||||
if (!fields.year || !fields.day) {
|
||||
ErrorObject::throwBuiltinError(state, ErrorCode::TypeError, "Missing required field");
|
||||
|
|
@ -1680,6 +1789,18 @@ UCalendar* Temporal::calendarDateFromFields(ExecutionState& state, Calendar cale
|
|||
// TODO If ISOYearMonthWithinLimits(result) is false, throw a RangeError exception.
|
||||
// Return result.
|
||||
return ucal;
|
||||
} else if (mode == CalendarDateFromFieldsMode::MonthDay) {
|
||||
// Perform ? CalendarResolveFields(calendar, fields, month-day).
|
||||
// Let result be ? CalendarMonthDayToISOReferenceDate(calendar, fields, overflow).
|
||||
auto ucal = calendarResolveFields(state, calendar, fields, overflow, mode);
|
||||
|
||||
if (calendar.isISO8601()) {
|
||||
ucal_set(ucal, UCAL_YEAR, 1972);
|
||||
}
|
||||
|
||||
// TODO If ISODateWithinLimits(result) is false, throw a RangeError exception.
|
||||
// Return result.
|
||||
return ucal;
|
||||
}
|
||||
return calendarResolveFields(state, calendar, fields, overflow, mode);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -253,6 +253,9 @@ public:
|
|||
// https://tc39.es/proposal-temporal/#sec-temporal-totemporalyearmonth
|
||||
static TemporalPlainYearMonthObject* toTemporalYearMonth(ExecutionState& state, Value item, Value options);
|
||||
|
||||
// https://tc39.es/proposal-temporal/#sec-temporal-totemporalmonthday
|
||||
static TemporalPlainMonthDayObject* toTemporalMonthDay(ExecutionState& state, Value item, Value options);
|
||||
|
||||
// https://tc39.es/proposal-temporal/#sec-temporal-gettemporalfractionalseconddigitsoption
|
||||
// NullOption means AUTO
|
||||
static Optional<unsigned> getTemporalFractionalSecondDigitsOption(ExecutionState& state, Optional<Object*> resolvedOptions);
|
||||
|
|
@ -340,7 +343,8 @@ public:
|
|||
// https://tc39.es/proposal-temporal/#sec-temporal-calendardatefromfields
|
||||
enum class CalendarDateFromFieldsMode {
|
||||
Date,
|
||||
YearMonth
|
||||
YearMonth,
|
||||
MonthDay
|
||||
};
|
||||
static UCalendar* calendarDateFromFields(ExecutionState& state, Calendar calendar, CalendarFieldsRecord fields, TemporalOverflowOption overflow, CalendarDateFromFieldsMode mode = CalendarDateFromFieldsMode::Date);
|
||||
|
||||
|
|
|
|||
185
src/runtime/TemporalPlainMonthDayObject.cpp
Normal file
185
src/runtime/TemporalPlainMonthDayObject.cpp
Normal file
|
|
@ -0,0 +1,185 @@
|
|||
#if defined(ENABLE_TEMPORAL)
|
||||
/*
|
||||
* Copyright (c) 2025-present Samsung Electronics Co., Ltd
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
|
||||
* USA
|
||||
*/
|
||||
|
||||
#include "Escargot.h"
|
||||
#include "TemporalPlainMonthDayObject.h"
|
||||
#include "TemporalPlainDateObject.h"
|
||||
#include "TemporalDurationObject.h"
|
||||
#include "intl/Intl.h"
|
||||
#include "util/ISO8601.h"
|
||||
#include "runtime/Context.h"
|
||||
#include "runtime/GlobalObject.h"
|
||||
|
||||
namespace Escargot {
|
||||
|
||||
#define CHECK_ICU() \
|
||||
if (U_FAILURE(status)) { \
|
||||
ErrorObject::throwBuiltinError(state, ErrorCode::TypeError, "failed to get value from ICU calendar"); \
|
||||
}
|
||||
|
||||
TemporalPlainMonthDayObject::TemporalPlainMonthDayObject(ExecutionState& state, Object* proto, ISO8601::PlainDate plainDate, Calendar calendar)
|
||||
: TemporalPlainDateObject(state, proto, plainDate, calendar)
|
||||
{
|
||||
}
|
||||
|
||||
TemporalPlainMonthDayObject::TemporalPlainMonthDayObject(ExecutionState& state, Object* proto, UCalendar* icuCalendar, Calendar calendar)
|
||||
: TemporalPlainDateObject(state, proto, icuCalendar, calendar)
|
||||
{
|
||||
}
|
||||
|
||||
String* TemporalPlainMonthDayObject::toString(ExecutionState& state, Value options)
|
||||
{
|
||||
auto resolvedOptions = Intl::getOptionsObject(state, options);
|
||||
auto showCalendar = Temporal::getTemporalShowCalendarNameOption(state, resolvedOptions);
|
||||
auto isoDate = computeISODate(state);
|
||||
StringBuilder builder;
|
||||
int32_t year = isoDate.year();
|
||||
int32_t month = isoDate.month();
|
||||
int32_t day = isoDate.day();
|
||||
|
||||
if (showCalendar == TemporalShowCalendarNameOption::Always || showCalendar == TemporalShowCalendarNameOption::Critical || !calendarID().isISO8601()) {
|
||||
if (year > 9999 || year < 0) {
|
||||
builder.appendChar(year < 0 ? '-' : '+');
|
||||
auto s = pad('0', 6, std::to_string(std::abs(year)));
|
||||
builder.appendString(String::fromASCII(s.data(), s.length()));
|
||||
} else {
|
||||
auto s = pad('0', 4, std::to_string(std::abs(year)));
|
||||
builder.appendString(String::fromASCII(s.data(), s.length()));
|
||||
}
|
||||
|
||||
builder.appendChar('-');
|
||||
}
|
||||
|
||||
{
|
||||
auto s = pad('0', 2, std::to_string(month));
|
||||
builder.appendString(String::fromASCII(s.data(), s.length()));
|
||||
}
|
||||
|
||||
builder.appendChar('-');
|
||||
|
||||
{
|
||||
auto s = pad('0', 2, std::to_string(day));
|
||||
builder.appendString(String::fromASCII(s.data(), s.length()));
|
||||
}
|
||||
|
||||
Temporal::formatCalendarAnnotation(builder, m_calendarID, showCalendar);
|
||||
|
||||
return builder.finalize();
|
||||
}
|
||||
|
||||
TemporalPlainMonthDayObject* TemporalPlainMonthDayObject::with(ExecutionState& state, Value temporalMonthDayLike, Value options)
|
||||
{
|
||||
// If ? IsPartialTemporalObject(temporalMonthDayLike) is false, throw a TypeError exception.
|
||||
if (!Temporal::isPartialTemporalObject(state, temporalMonthDayLike)) {
|
||||
ErrorObject::throwBuiltinError(state, ErrorCode::TypeError, "Invalid temporalMonthDayLike");
|
||||
}
|
||||
// Let calendar be plainMonthDay.[[Calendar]].
|
||||
auto calendar = calendarID();
|
||||
// Let fields be ISODateToFields(calendar, plainMonthDay.[[ISODate]], month-day).
|
||||
CalendarFieldsRecord fields;
|
||||
auto isoDate = computeISODate(state);
|
||||
fields.year = isoDate.year();
|
||||
fields.month = isoDate.month();
|
||||
MonthCode mc;
|
||||
mc.monthNumber = isoDate.month();
|
||||
fields.monthCode = mc;
|
||||
fields.day = isoDate.day();
|
||||
// Let partialMonthDay be ? PrepareCalendarFields(calendar, temporalMonthDayLike, « year, month, month-code, day », « », partial).
|
||||
CalendarField f[4] = { CalendarField::Year, CalendarField::Month, CalendarField::MonthCode, CalendarField::Day };
|
||||
auto partialMonthDay = Temporal::prepareCalendarFields(state, calendar, temporalMonthDayLike.asObject(), f, 4, nullptr, 0, nullptr, SIZE_MAX);
|
||||
|
||||
// intl402/Temporal/PlainMonthDay/prototype/with/fields-missing-properties
|
||||
if (!calendar.isISO8601()) {
|
||||
bool missing = false;
|
||||
if (partialMonthDay.month && !partialMonthDay.day) {
|
||||
missing = true;
|
||||
} else if (partialMonthDay.monthCode && !partialMonthDay.day) {
|
||||
missing = true;
|
||||
} else if (partialMonthDay.day && !partialMonthDay.month && !partialMonthDay.monthCode) {
|
||||
missing = true;
|
||||
}
|
||||
if (missing) {
|
||||
ErrorObject::throwBuiltinError(state, ErrorCode::TypeError, "Invalid temporalMonthDayLike");
|
||||
}
|
||||
}
|
||||
|
||||
// Set fields to CalendarMergeFields(calendar, fields, partialMonthDay).
|
||||
fields = Temporal::calendarMergeFields(state, calendar, fields, partialMonthDay);
|
||||
// Let resolvedOptions be ? GetOptionsObject(options).
|
||||
auto resolvedOptions = Intl::getOptionsObject(state, options);
|
||||
// Let overflow be ? GetTemporalOverflowOption(resolvedOptions).
|
||||
auto overflow = Temporal::getTemporalOverflowOption(state, resolvedOptions);
|
||||
// Let isoDate be ? CalendarMonthDayFromFields(calendar, fields, overflow).
|
||||
auto icuDate = Temporal::calendarDateFromFields(state, calendar, fields, overflow, Temporal::CalendarDateFromFieldsMode::MonthDay);
|
||||
// Return ! CreateTemporalMonthDay(isoDate, calendar).
|
||||
return new TemporalPlainMonthDayObject(state, state.context()->globalObject()->temporalPlainMonthDayPrototype(),
|
||||
icuDate, calendar);
|
||||
}
|
||||
|
||||
bool TemporalPlainMonthDayObject::equals(ExecutionState& state, Value other)
|
||||
{
|
||||
auto otherDate = Temporal::toTemporalMonthDay(state, other, Value());
|
||||
int c = compareISODate(state, this, otherDate);
|
||||
if (c == 0) {
|
||||
if (calendarID() == otherDate->calendarID()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
TemporalPlainDateObject* TemporalPlainMonthDayObject::toPlainDate(ExecutionState& state, Value item)
|
||||
{
|
||||
// If item is not an Object, then
|
||||
if (!item.isObject()) {
|
||||
// Throw a TypeError exception.
|
||||
ErrorObject::throwBuiltinError(state, ErrorCode::TypeError, "Invalid item");
|
||||
}
|
||||
|
||||
// Let calendar be plainMonthDay.[[Calendar]].
|
||||
auto calendar = calendarID();
|
||||
// Let fields be ISODateToFields(calendar, plainMonthDay.[[ISODate]], month-day).
|
||||
CalendarFieldsRecord fields;
|
||||
auto isoDate = computeISODate(state);
|
||||
fields.year = isoDate.year();
|
||||
fields.month = isoDate.month();
|
||||
MonthCode mc;
|
||||
mc.monthNumber = isoDate.month();
|
||||
fields.monthCode = mc;
|
||||
fields.day = isoDate.day();
|
||||
// Let inputFields be ? PrepareCalendarFields(calendar, item, « year », « », « »).
|
||||
CalendarField f[1] = { CalendarField::Year };
|
||||
auto inputFields = Temporal::prepareCalendarFields(state, calendar, item.asObject(), f, 1, nullptr, 0, nullptr, SIZE_MAX);
|
||||
// Let mergedFields be CalendarMergeFields(calendar, fields, inputFields).
|
||||
auto mergedFields = Temporal::calendarMergeFields(state, calendar, fields, inputFields);
|
||||
// Let isoDate be ? CalendarDateFromFields(calendar, mergedFields, constrain).
|
||||
auto icuDate = Temporal::calendarDateFromFields(state, calendar, mergedFields, TemporalOverflowOption::Constrain);
|
||||
// Return ! CreateTemporalDate(isoDate, calendar).
|
||||
if (calendar.isISO8601() && !ISO8601::isDateTimeWithinLimits(mergedFields.year.value(), mergedFields.monthCode ? mergedFields.monthCode.value().monthNumber : mergedFields.month.value(), mergedFields.day.value(), 12, 0, 0, 0, 0, 0)) {
|
||||
ucal_close(icuDate);
|
||||
ErrorObject::throwBuiltinError(state, ErrorCode::RangeError, "date is out of range");
|
||||
}
|
||||
return new TemporalPlainDateObject(state, state.context()->globalObject()->temporalPlainDatePrototype(),
|
||||
icuDate, calendar);
|
||||
}
|
||||
|
||||
} // namespace Escargot
|
||||
|
||||
#endif
|
||||
59
src/runtime/TemporalPlainMonthDayObject.h
Normal file
59
src/runtime/TemporalPlainMonthDayObject.h
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
#if defined(ENABLE_TEMPORAL)
|
||||
/*
|
||||
* Copyright (c) 2025-present Samsung Electronics Co., Ltd
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
|
||||
* USA
|
||||
*/
|
||||
|
||||
#ifndef __EscargotTemporalPlainMonthDayObject__
|
||||
#define __EscargotTemporalPlainMonthDayObject__
|
||||
|
||||
#include "runtime/TemporalPlainDateObject.h"
|
||||
|
||||
namespace Escargot {
|
||||
|
||||
class TemporalPlainMonthDayObject : public TemporalPlainDateObject {
|
||||
public:
|
||||
TemporalPlainMonthDayObject(ExecutionState& state, Object* proto, ISO8601::PlainDate plainYearMonth, Calendar calendar);
|
||||
TemporalPlainMonthDayObject(ExecutionState& state, Object* proto, UCalendar* icuCalendar, Calendar calendar);
|
||||
|
||||
virtual bool isTemporalPlainDateObject() const override
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
virtual bool isTemporalPlainMonthDayObject() const override
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
// https://tc39.es/proposal-temporal/#sec-temporal.plainmonthday.prototype.tostring
|
||||
String* toString(ExecutionState& state, Value options);
|
||||
|
||||
// https://tc39.es/proposal-temporal/#sec-temporal.plainmonthday.prototype.with
|
||||
TemporalPlainMonthDayObject* with(ExecutionState& state, Value temporalMonthDayLike, Value options);
|
||||
|
||||
bool equals(ExecutionState& state, Value other);
|
||||
|
||||
TemporalPlainDateObject* toPlainDate(ExecutionState& state, Value item);
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
} // namespace Escargot
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
|
@ -334,6 +334,18 @@ TemporalDurationObject* TemporalPlainYearMonthObject::until(ExecutionState& stat
|
|||
return new TemporalDurationObject(state, differenceTemporalPlainYearMonth(state, DifferenceTemporalYearMonth::Until, other, options));
|
||||
}
|
||||
|
||||
bool TemporalPlainYearMonthObject::equals(ExecutionState& state, Value other)
|
||||
{
|
||||
auto otherDate = Temporal::toTemporalYearMonth(state, other, Value());
|
||||
int c = compareISODate(state, this, otherDate);
|
||||
if (c == 0) {
|
||||
if (calendarID() == otherDate->calendarID()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
} // namespace Escargot
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -62,6 +62,8 @@ public:
|
|||
TemporalDurationObject* since(ExecutionState& state, Value other, Value options);
|
||||
TemporalDurationObject* until(ExecutionState& state, Value other, Value options);
|
||||
|
||||
bool equals(ExecutionState& state, Value other);
|
||||
|
||||
private:
|
||||
// https://tc39.es/proposal-temporal/#sec-temporal-differencetemporalplainyearmonth
|
||||
enum class DifferenceTemporalYearMonth {
|
||||
|
|
|
|||
|
|
@ -1328,6 +1328,11 @@ static Optional<PlainDate> parseDate(ParserString& buffer, bool parseYear = true
|
|||
if (buffer.atEnd())
|
||||
return NullOption;
|
||||
|
||||
// --10-01 form
|
||||
if (!parseYear && parseMonth && parseDay && *buffer == '-' && buffer.lengthRemaining() > 2 && buffer[1] == '-') {
|
||||
buffer.advanceBy(2);
|
||||
}
|
||||
|
||||
auto firstMonthCharacter = *buffer;
|
||||
if (firstMonthCharacter == '0' || firstMonthCharacter == '1') {
|
||||
buffer.advance();
|
||||
|
|
@ -1497,13 +1502,20 @@ static Optional<std::tuple<PlainDate, Optional<TimeZoneRecord>, Optional<Calenda
|
|||
return std::make_tuple(std::move(date.value()), tz, std::move(calendarOptional));
|
||||
}
|
||||
|
||||
static Optional<std::tuple<PlainDate, Optional<CalendarID>>> parseCalendarMonthDay(ParserString& buffer, DateTimeParseOption option)
|
||||
static Optional<std::tuple<PlainDate, Optional<TimeZoneRecord>, Optional<CalendarID>>> parseCalendarMonthDay(ParserString& buffer, DateTimeParseOption option)
|
||||
{
|
||||
auto date = parseDate(buffer, false, true, true);
|
||||
if (!date) {
|
||||
return NullOption;
|
||||
}
|
||||
|
||||
Optional<TimeZoneRecord> tz;
|
||||
if (!buffer.atEnd() && canBeTimeZone(buffer, *buffer)) {
|
||||
tz = parseTimeZone(buffer, option);
|
||||
if (!tz)
|
||||
return NullOption;
|
||||
}
|
||||
|
||||
Optional<CalendarID> calendarOptional;
|
||||
if (!buffer.atEnd() && canBeRFC9557Annotation(buffer)) {
|
||||
auto calendars = parseCalendar(buffer);
|
||||
|
|
@ -1513,7 +1525,7 @@ static Optional<std::tuple<PlainDate, Optional<CalendarID>>> parseCalendarMonthD
|
|||
calendarOptional = std::move(calendars.value()[0]);
|
||||
}
|
||||
|
||||
return std::make_tuple(std::move(date.value()), std::move(calendarOptional));
|
||||
return std::make_tuple(std::move(date.value()), tz, std::move(calendarOptional));
|
||||
}
|
||||
|
||||
Optional<std::tuple<PlainDate, Optional<TimeZoneRecord>, Optional<CalendarID>>> parseCalendarYearMonth(String* input, DateTimeParseOption option)
|
||||
|
|
@ -1526,7 +1538,7 @@ Optional<std::tuple<PlainDate, Optional<TimeZoneRecord>, Optional<CalendarID>>>
|
|||
return result;
|
||||
}
|
||||
|
||||
Optional<std::tuple<PlainDate, Optional<CalendarID>>> parseCalendarMonthDay(String* input, DateTimeParseOption option)
|
||||
Optional<std::tuple<PlainDate, Optional<TimeZoneRecord>, Optional<CalendarID>>> parseCalendarMonthDay(String* input, DateTimeParseOption option)
|
||||
{
|
||||
ParserString buffer(input);
|
||||
auto result = parseCalendarMonthDay(buffer, option);
|
||||
|
|
|
|||
|
|
@ -577,7 +577,7 @@ Optional<std::tuple<PlainTime, Optional<TimeZoneRecord>>> parseTime(String* inpu
|
|||
Optional<std::tuple<PlainDate, Optional<PlainTime>, Optional<TimeZoneRecord>>> parseDateTime(String* input);
|
||||
Optional<std::tuple<PlainDate, Optional<PlainTime>, Optional<TimeZoneRecord>, Optional<CalendarID>>> parseCalendarDateTime(String* input, DateTimeParseOption option = {});
|
||||
Optional<std::tuple<PlainDate, Optional<TimeZoneRecord>, Optional<CalendarID>>> parseCalendarYearMonth(String* input, DateTimeParseOption option = {});
|
||||
Optional<std::tuple<PlainDate, Optional<CalendarID>>> parseCalendarMonthDay(String* input, DateTimeParseOption option = {});
|
||||
Optional<std::tuple<PlainDate, Optional<TimeZoneRecord>, Optional<CalendarID>>> parseCalendarMonthDay(String* input, DateTimeParseOption option = {});
|
||||
Optional<String*> parseCalendarString(String* input);
|
||||
|
||||
// https://tc39.es/proposal-temporal/#sec-temporal-roundnumbertoincrement
|
||||
|
|
|
|||
|
|
@ -1220,184 +1220,10 @@
|
|||
<test id="built-ins/Temporal/PlainDateTime/subclass"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainDateTime/throws-if-date-is-invalid"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainDateTime/throws-if-time-is-invalid"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/argument-invalid"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/basic"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/builtin"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/calendar-always"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/calendar-case-insensitive"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/calendar-invalid"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/calendar-invalid-iso-string"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/calendar-string"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/calendar-undefined"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/from/argument-plainmonthday"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/from/argument-propertybag-calendar-case-insensitive"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/from/argument-propertybag-calendar-invalid-iso-string"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/from/argument-propertybag-calendar-iso-string"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/from/argument-propertybag-calendar-leap-second"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/from/argument-propertybag-calendar-string"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/from/argument-propertybag-calendar-year-zero"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/from/argument-string-calendar-annotation"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/from/argument-string-calendar-annotation-invalid-key"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/from/argument-string-critical-unknown-annotation"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/from/argument-string-date-with-utc-offset"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/from/argument-string-minus-sign"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/from/argument-string-multiple-calendar"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/from/argument-string-multiple-time-zone"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/from/argument-string-time-separators"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/from/argument-string-time-zone-annotation"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/from/argument-string-unknown-annotation"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/from/argument-string-with-utc-designator"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/from/argument-wrong-type"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/from/basic"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/from/builtin"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/from/calendar-temporal-object"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/from/constrain-to-leap-day"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/from/fields-leap-day"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/from/fields-object"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/from/fields-plainmonthday"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/from/fields-string"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/from/infinity-throws-rangeerror"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/from/leap-second"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/from/length"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/from/monthcode-invalid"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/from/name"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/from/not-a-constructor"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/from/observable-get-overflow-argument-primitive"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/from/observable-get-overflow-argument-string-invalid"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/from/one-of-era-erayear-undefined"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/from/options-object"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/from/options-undefined"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/from/options-wrong-type"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/from/order-of-operations"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/from/overflow"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/from/overflow-invalid-string"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/from/overflow-undefined"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/from/overflow-wrong-type"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/from/prop-desc"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/from/subclassing-ignored"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/from/year-zero"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/get-prototype-from-constructor-throws"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/infinity-throws-rangeerror"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/length"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/missing-arguments"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/name"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/negative-infinity-throws-rangeerror"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prop-desc"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/calendarId/branding"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/calendarId/prop-desc"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/constructor"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/day/basic"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/day/branding"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/day/prop-desc"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/equals/argument-number"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/equals/argument-propertybag-calendar-case-insensitive"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/equals/argument-propertybag-calendar-invalid-iso-string"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/equals/argument-propertybag-calendar-iso-string"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/equals/argument-propertybag-calendar-leap-second"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/equals/argument-propertybag-calendar-string"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/equals/argument-propertybag-calendar-wrong-type"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/equals/argument-propertybag-calendar-year-zero"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/equals/argument-string"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/equals/argument-string-calendar-annotation"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/equals/argument-string-calendar-annotation-invalid-key"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/equals/argument-string-critical-unknown-annotation"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/equals/argument-string-date-with-utc-offset"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/equals/argument-string-invalid"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/equals/argument-string-minus-sign"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/equals/argument-string-multiple-calendar"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/equals/argument-string-multiple-time-zone"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/equals/argument-string-time-separators"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/equals/argument-string-time-zone-annotation"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/equals/argument-string-unknown-annotation"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/equals/argument-string-with-utc-designator"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/equals/argument-wrong-type"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/equals/basic"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/equals/branding"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/equals/builtin"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/equals/calendar-temporal-object"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/equals/infinity-throws-rangeerror"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/equals/leap-second"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/equals/length"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/equals/name"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/equals/not-a-constructor"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/equals/prop-desc"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/equals/year-zero"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/month/unsupported"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/monthCode/basic"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/monthCode/branding"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/monthCode/prop-desc"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/prop-desc"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/toJSON/basic"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/toJSON/branding"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/toJSON/builtin"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/toJSON/length"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/toJSON/name"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/toJSON/not-a-constructor"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/toJSON/prop-desc"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/toLocaleString/branding"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/toLocaleString/builtin"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/toLocaleString/length"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/toLocaleString/name"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/toLocaleString/not-a-constructor"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/toLocaleString/prop-desc"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/toLocaleString/return-string"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/toPlainDate/argument-not-object"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/toPlainDate/basic"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/toPlainDate/branding"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/toPlainDate/builtin"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/toPlainDate/default-overflow-behaviour"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/toPlainDate/infinity-throws-rangeerror"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/toPlainDate/length"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/toPlainDate/limits"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/toPlainDate/name"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/toPlainDate/not-a-constructor"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/toPlainDate/prop-desc"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/toString/branding"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/toString/builtin"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/toString/calendarname-always"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/toString/calendarname-auto"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/toString/calendarname-critical"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/toString/calendarname-invalid-string"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/toString/calendarname-never"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/toString/calendarname-undefined"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/toString/calendarname-wrong-type"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/toString/length"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/toString/name"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/toString/not-a-constructor"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/toString/options-object"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/toString/options-wrong-type"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/toString/order-of-operations"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/toString/prop-desc"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/toStringTag/prop-desc"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/valueOf/basic"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/valueOf/branding"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/valueOf/builtin"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/valueOf/length"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/valueOf/name"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/valueOf/not-a-constructor"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/valueOf/prop-desc"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/with/basic"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/with/branding"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/with/builtin"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/with/copy-properties-not-undefined"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/with/infinity-throws-rangeerror"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/with/length"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/with/monthdaylike-invalid"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/with/name"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/with/not-a-constructor"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/with/options-invalid"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/with/options-object"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/with/options-undefined"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/with/options-wrong-type"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/with/order-of-operations"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/with/overflow-invalid-string"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/with/overflow-undefined"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/with/overflow-wrong-type"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/with/prop-desc"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/prototype/with/subclassing-ignored"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/refisoyear-out-of-range"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/refisoyear-undefined"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainMonthDay/subclass"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainTime/compare/argument-string-time-designator-required-for-disambiguation"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainTime/compare/argument-zoneddatetime-negative-epochnanoseconds"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainTime/from/argument-plaindatetime"><reason>TODO</reason></test>
|
||||
|
|
@ -1424,41 +1250,7 @@
|
|||
<test id="built-ins/Temporal/PlainYearMonth/limits"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainYearMonth/prototype/add/argument-duration-max"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainYearMonth/prototype/add/throws-if-year-outside-valid-iso-range"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainYearMonth/prototype/equals/argument-cast"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainYearMonth/prototype/equals/argument-propertybag-calendar-case-insensitive"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainYearMonth/prototype/equals/argument-propertybag-calendar-invalid-iso-string"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainYearMonth/prototype/equals/argument-propertybag-calendar-iso-string"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainYearMonth/prototype/equals/argument-propertybag-calendar-leap-second"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainYearMonth/prototype/equals/argument-propertybag-calendar-string"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainYearMonth/prototype/equals/argument-propertybag-calendar-year-zero"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainYearMonth/prototype/equals/argument-string"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainYearMonth/prototype/equals/argument-string-calendar-annotation"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainYearMonth/prototype/equals/argument-string-calendar-annotation-invalid-key"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainYearMonth/prototype/equals/argument-string-critical-unknown-annotation"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainYearMonth/prototype/equals/argument-string-date-with-utc-offset"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainYearMonth/prototype/equals/argument-string-invalid"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainYearMonth/prototype/equals/argument-string-limits"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainYearMonth/prototype/equals/argument-string-minus-sign"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainYearMonth/prototype/equals/argument-string-multiple-calendar"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainYearMonth/prototype/equals/argument-string-multiple-time-zone"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainYearMonth/prototype/equals/argument-string-time-separators"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainYearMonth/prototype/equals/argument-string-time-zone-annotation"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainYearMonth/prototype/equals/argument-string-unknown-annotation"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainYearMonth/prototype/equals/argument-string-with-utc-designator"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainYearMonth/prototype/equals/argument-wrong-type"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainYearMonth/prototype/equals/basic"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainYearMonth/prototype/equals/branding"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainYearMonth/prototype/equals/builtin"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainYearMonth/prototype/equals/calendar-temporal-object"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainYearMonth/prototype/equals/compare-reference-day"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainYearMonth/prototype/equals/infinity-throws-rangeerror"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainYearMonth/prototype/equals/leap-second"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainYearMonth/prototype/equals/length"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainYearMonth/prototype/equals/name"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainYearMonth/prototype/equals/not-a-constructor"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainYearMonth/prototype/equals/prop-desc"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainYearMonth/prototype/equals/use-internal-slots"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainYearMonth/prototype/equals/year-zero"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainYearMonth/prototype/since/argument-string-limits"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainYearMonth/prototype/since/calendar-temporal-object"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Temporal/PlainYearMonth/prototype/since/throws-if-year-outside-valid-iso-range"><reason>TODO</reason></test>
|
||||
|
|
@ -2426,37 +2218,21 @@
|
|||
<test id="intl402/Temporal/PlainDateTime/prototype/withCalendar/argument-string"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainDateTime/prototype/withCalendar/canonicalize-calendar"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainDateTime/prototype/yearOfWeek/non-iso-week-of-year"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainMonthDay/canonicalize-calendar"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainMonthDay/from/calendar-not-supporting-eras"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainMonthDay/from/canonicalize-calendar"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainMonthDay/from/constrain-to-leap-day"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainMonthDay/from/fields-object"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainMonthDay/from/reference-date-noniso-calendar"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainMonthDay/from/reference-year-1972"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainMonthDay/prototype/equals/calendars"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainMonthDay/prototype/equals/canonicalize-calendar"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainMonthDay/prototype/equals/infinity-throws-rangeerror"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainMonthDay/prototype/toJSON/calendarname"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainMonthDay/prototype/toJSON/year-format"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainMonthDay/prototype/toLocaleString/calendar-mismatch"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainMonthDay/prototype/toLocaleString/dateStyle"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainMonthDay/prototype/toLocaleString/dateStyle-timeStyle-undefined"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainMonthDay/prototype/toLocaleString/default-does-not-include-year-time-and-time-zone-name"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainMonthDay/prototype/toLocaleString/locales-undefined"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainMonthDay/prototype/toLocaleString/lone-options-accepted"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainMonthDay/prototype/toLocaleString/options-conflict"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainMonthDay/prototype/toLocaleString/options-undefined"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainMonthDay/prototype/toLocaleString/resolved-time-zone"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainMonthDay/prototype/toPlainDate/infinity-throws-rangeerror"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainMonthDay/prototype/toString/calendarname-always"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainMonthDay/prototype/toString/calendarname-auto"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainMonthDay/prototype/toString/calendarname-critical"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainMonthDay/prototype/toString/calendarname-never"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainMonthDay/prototype/toString/calendarname-undefined"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainMonthDay/prototype/toString/calendarname-wrong-type"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainMonthDay/prototype/toString/options-undefined"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainMonthDay/prototype/toString/year-format"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainMonthDay/prototype/with/fields-missing-properties"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainMonthDay/prototype/with/non-iso-calendar-fields"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainTime/prototype/toLocaleString/default-does-not-include-date-and-time-zone-name"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainTime/prototype/toLocaleString/locales-undefined"><reason>TODO</reason></test>
|
||||
|
|
@ -2471,10 +2247,7 @@
|
|||
<test id="intl402/Temporal/PlainYearMonth/from/remapping-era"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainYearMonth/prototype/add/options-undefined"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainYearMonth/prototype/equals/canonicalize-calendar"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainYearMonth/prototype/equals/compare-calendar"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainYearMonth/prototype/equals/infinity-throws-rangeerror"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainYearMonth/prototype/since/canonicalize-calendar"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainYearMonth/prototype/since/mixed-calendar-invalid"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainYearMonth/prototype/toLocaleString/calendar-mismatch"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainYearMonth/prototype/toLocaleString/dateStyle"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainYearMonth/prototype/toLocaleString/dateStyle-undefined"><reason>TODO</reason></test>
|
||||
|
|
@ -2483,14 +2256,7 @@
|
|||
<test id="intl402/Temporal/PlainYearMonth/prototype/toLocaleString/options-conflict"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainYearMonth/prototype/toLocaleString/options-undefined"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainYearMonth/prototype/toLocaleString/resolved-time-zone"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainYearMonth/prototype/toString/calendarname-always"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainYearMonth/prototype/toString/calendarname-auto"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainYearMonth/prototype/toString/calendarname-critical"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainYearMonth/prototype/toString/calendarname-never"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainYearMonth/prototype/toString/calendarname-undefined"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainYearMonth/prototype/toString/calendarname-wrong-type"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainYearMonth/prototype/until/canonicalize-calendar"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainYearMonth/prototype/until/mixed-calendar-invalid"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainYearMonth/prototype/with/minimum-valid-year-month"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/PlainYearMonth/prototype/with/non-iso-calendar-fields"><reason>TODO</reason></test>
|
||||
<test id="intl402/Temporal/ZonedDateTime/canonicalize-calendar"><reason>TODO</reason></test>
|
||||
|
|
@ -3230,7 +2996,6 @@
|
|||
<test id="staging/Temporal/Duration/old/relativeto-not-required-to-round-fixed-length-units-in-durations-without-variable-units"><reason>TODO</reason></test>
|
||||
<test id="staging/Temporal/Regex/old/instant"><reason>TODO</reason></test>
|
||||
<test id="staging/Temporal/Regex/old/plaindatetime"><reason>TODO</reason></test>
|
||||
<test id="staging/Temporal/Regex/old/plainmonthday"><reason>TODO</reason></test>
|
||||
<test id="staging/Temporal/removed-methods"><reason>TODO</reason></test>
|
||||
<test id="staging/built-ins/Object/preventExtensions/preventExtensions-variable-length-typed-arrays"><reason>TODO</reason></test>
|
||||
<test id="staging/built-ins/Object/seal/seal-variable-length-typed-arrays"><reason>TODO</reason></test>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue