[Temporal] Sync to PR2395 Address calendar case sensitivity
This cl only convert the part for calendar in PR2395. The part to cover TimeZone change will be coded in another cl. Spec Text: https://tc39.es/proposal-temporal/#sec-temporal-isbuiltincalendar Spec change https://github.com/tc39/proposal-temporal/pull/2395 PR2395 achieved consensus at the September 2022 TC39 meeting. Also merge unnecessary const std::string& id version of IsBuiltinCalendar to the Handle<String> version and remove the unnecessary version. Bug: v8:11544 Change-Id: Idb711d48dbcf929059b71c48681c03b30089adb0 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3901200 Reviewed-by: Adam Klein <adamk@chromium.org> Commit-Queue: Frank Tang <ftang@chromium.org> Cr-Commit-Position: refs/heads/main@{#84073}
This commit is contained in:
parent
cd31c5bdcc
commit
8e3b455f53
@ -4610,13 +4610,12 @@ class CalendarMap final {
|
||||
|
||||
DEFINE_LAZY_LEAKY_OBJECT_GETTER(CalendarMap, GetCalendarMap)
|
||||
|
||||
// #sec-temporal-isbuiltincalendar
|
||||
bool IsBuiltinCalendar(Isolate* isolate, const std::string& id) {
|
||||
return GetCalendarMap()->Contains(id);
|
||||
}
|
||||
|
||||
bool IsBuiltinCalendar(Isolate* isolate, Handle<String> id) {
|
||||
return IsBuiltinCalendar(isolate, id->ToCString().get());
|
||||
// 1. Let calendars be AvailableCalendars().
|
||||
// 2. If calendars contains the ASCII-lowercase of id, return true.
|
||||
// 3. Return false.
|
||||
id = Intl::ConvertToLower(isolate, id).ToHandleChecked();
|
||||
return GetCalendarMap()->Contains(id->ToCString().get());
|
||||
}
|
||||
|
||||
Handle<String> CalendarIdentifier(Isolate* isolate, int32_t index) {
|
||||
@ -4625,6 +4624,7 @@ Handle<String> CalendarIdentifier(Isolate* isolate, int32_t index) {
|
||||
}
|
||||
|
||||
int32_t CalendarIndex(Isolate* isolate, Handle<String> id) {
|
||||
id = Intl::ConvertToLower(isolate, id).ToHandleChecked();
|
||||
return GetCalendarMap()->Index(id->ToCString().get());
|
||||
}
|
||||
|
||||
@ -4645,9 +4645,24 @@ Handle<String> CalendarIdentifier(Isolate* isolate, int32_t index) {
|
||||
|
||||
// #sec-temporal-isbuiltincalendar
|
||||
bool IsBuiltinCalendar(Isolate* isolate, Handle<String> id) {
|
||||
// 1. If id is not "iso8601", return false.
|
||||
// 2. Return true
|
||||
return isolate->factory()->iso8601_string()->Equals(*id);
|
||||
// Note: For build without intl support, the only item in AvailableCalendars()
|
||||
// is "iso8601".
|
||||
// 1. Let calendars be AvailableCalendars().
|
||||
// 2. If calendars contains the ASCII-lowercase of id, return true.
|
||||
// 3. Return false.
|
||||
|
||||
// Fast path
|
||||
if (isolate->factory()->iso8601_string()->Equals(*id)) return true;
|
||||
if (id->length() != 7) return false;
|
||||
id = String::Flatten(isolate, id);
|
||||
|
||||
DisallowGarbageCollection no_gc;
|
||||
const String::FlatContent& flat = id->GetFlatContent(no_gc);
|
||||
// Return true if id is case insensitive equals to "iso8601".
|
||||
return AsciiAlphaToLower(flat.Get(0)) == 'i' &&
|
||||
AsciiAlphaToLower(flat.Get(1)) == 's' &&
|
||||
AsciiAlphaToLower(flat.Get(2)) == 'o' && flat.Get(3) == '8' &&
|
||||
flat.Get(4) == '6' && flat.Get(5) == '0' && flat.Get(6) == '1';
|
||||
}
|
||||
|
||||
int32_t CalendarIndex(Isolate* isolate, Handle<String> id) { return 0; }
|
||||
|
@ -10,7 +10,6 @@ assertThrows(() => Temporal.Calendar("iso8601"), TypeError);
|
||||
|
||||
assertThrows(() => new Temporal.Calendar(), RangeError);
|
||||
|
||||
// Wrong case
|
||||
assertThrows(() => new Temporal.Calendar("ISO8601"), RangeError);
|
||||
assertEquals("iso8601", (new Temporal.Calendar("IsO8601")).id)
|
||||
|
||||
assertEquals("iso8601", (new Temporal.Calendar("iso8601")).id)
|
||||
|
@ -427,62 +427,7 @@
|
||||
'staging/Intl402/Temporal/old/yearmonth-toLocaleString': [FAIL],
|
||||
'staging/Intl402/Temporal/old/zoneddatetime-toLocaleString': [FAIL],
|
||||
|
||||
'built-ins/Temporal/Calendar/from/calendar-case-insensitive': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/dateAdd/argument-propertybag-calendar-case-insensitive': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/day/argument-propertybag-calendar-case-insensitive': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/dayOfWeek/argument-propertybag-calendar-case-insensitive': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/dayOfYear/argument-propertybag-calendar-case-insensitive': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/daysInMonth/argument-propertybag-calendar-case-insensitive': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/daysInWeek/argument-propertybag-calendar-case-insensitive': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/daysInYear/argument-propertybag-calendar-case-insensitive': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/inLeapYear/argument-propertybag-calendar-case-insensitive': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/month/argument-propertybag-calendar-case-insensitive': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/monthCode/argument-propertybag-calendar-case-insensitive': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/monthsInYear/argument-propertybag-calendar-case-insensitive': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/weekOfYear/argument-propertybag-calendar-case-insensitive': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/year/argument-propertybag-calendar-case-insensitive': [FAIL],
|
||||
'built-ins/Temporal/Instant/prototype/toZonedDateTime/calendar-case-insensitive': [FAIL],
|
||||
'built-ins/Temporal/Now/plainDate/calendar-case-insensitive': [FAIL],
|
||||
'built-ins/Temporal/Now/plainDateTime/calendar-case-insensitive': [FAIL],
|
||||
'built-ins/Temporal/Now/zonedDateTime/calendar-case-insensitive': [FAIL],
|
||||
'built-ins/Temporal/PlainDate/calendar-case-insensitive': [FAIL],
|
||||
'built-ins/Temporal/PlainDate/from/argument-propertybag-calendar-case-insensitive': [FAIL],
|
||||
'built-ins/Temporal/PlainDate/prototype/equals/argument-propertybag-calendar-case-insensitive': [FAIL],
|
||||
'built-ins/Temporal/PlainDate/prototype/since/argument-propertybag-calendar-case-insensitive': [FAIL],
|
||||
'built-ins/Temporal/PlainDate/prototype/until/argument-propertybag-calendar-case-insensitive': [FAIL],
|
||||
'built-ins/Temporal/PlainDate/prototype/withCalendar/calendar-case-insensitive': [FAIL],
|
||||
'built-ins/Temporal/PlainDateTime/calendar-case-insensitive': [FAIL],
|
||||
'built-ins/Temporal/PlainDateTime/from/argument-propertybag-calendar-case-insensitive': [FAIL],
|
||||
'built-ins/Temporal/PlainDateTime/prototype/equals/argument-propertybag-calendar-case-insensitive': [FAIL],
|
||||
'built-ins/Temporal/PlainDateTime/prototype/since/argument-propertybag-calendar-case-insensitive': [FAIL],
|
||||
'built-ins/Temporal/PlainDateTime/prototype/until/argument-propertybag-calendar-case-insensitive': [FAIL],
|
||||
'built-ins/Temporal/PlainDateTime/prototype/withCalendar/calendar-case-insensitive': [FAIL],
|
||||
'built-ins/Temporal/PlainDateTime/prototype/withPlainDate/argument-propertybag-calendar-case-insensitive': [FAIL],
|
||||
'built-ins/Temporal/PlainMonthDay/calendar-case-insensitive': [FAIL],
|
||||
'built-ins/Temporal/PlainMonthDay/from/argument-propertybag-calendar-case-insensitive': [FAIL],
|
||||
'built-ins/Temporal/PlainMonthDay/prototype/equals/argument-propertybag-calendar-case-insensitive': [FAIL],
|
||||
'built-ins/Temporal/PlainTime/prototype/toPlainDateTime/argument-propertybag-calendar-case-insensitive': [FAIL],
|
||||
'built-ins/Temporal/PlainTime/prototype/toZonedDateTime/argument-propertybag-calendar-case-insensitive': [FAIL],
|
||||
'built-ins/Temporal/PlainYearMonth/calendar-case-insensitive': [FAIL],
|
||||
'built-ins/Temporal/PlainYearMonth/from/argument-propertybag-calendar-case-insensitive': [FAIL],
|
||||
'built-ins/Temporal/PlainYearMonth/prototype/equals/argument-propertybag-calendar-case-insensitive': [FAIL],
|
||||
'built-ins/Temporal/PlainYearMonth/prototype/since/argument-propertybag-calendar-case-insensitive': [FAIL],
|
||||
'built-ins/Temporal/PlainYearMonth/prototype/until/argument-propertybag-calendar-case-insensitive': [FAIL],
|
||||
'built-ins/Temporal/TimeZone/prototype/getInstantFor/argument-propertybag-calendar-case-insensitive': [FAIL],
|
||||
'built-ins/Temporal/TimeZone/prototype/getPlainDateTimeFor/calendar-case-insensitive': [FAIL],
|
||||
'built-ins/Temporal/TimeZone/prototype/getPossibleInstantsFor/argument-propertybag-calendar-case-insensitive': [FAIL],
|
||||
'built-ins/Temporal/ZonedDateTime/calendar-case-insensitive': [FAIL],
|
||||
'built-ins/Temporal/ZonedDateTime/from/argument-propertybag-calendar-case-insensitive': [FAIL],
|
||||
'built-ins/Temporal/ZonedDateTime/prototype/equals/argument-propertybag-calendar-case-insensitive': [FAIL],
|
||||
'built-ins/Temporal/ZonedDateTime/prototype/since/argument-propertybag-calendar-case-insensitive': [FAIL],
|
||||
'built-ins/Temporal/ZonedDateTime/prototype/until/argument-propertybag-calendar-case-insensitive': [FAIL],
|
||||
'built-ins/Temporal/ZonedDateTime/prototype/withCalendar/calendar-case-insensitive': [FAIL],
|
||||
'built-ins/Temporal/ZonedDateTime/prototype/withPlainDate/argument-propertybag-calendar-case-insensitive': [FAIL],
|
||||
# intl402
|
||||
'intl402/Temporal/Calendar/calendar-case-insensitive': [FAIL],
|
||||
'intl402/Temporal/Calendar/from/calendar-case-insensitive': [FAIL],
|
||||
'intl402/Temporal/Calendar/prototype/era/argument-propertybag-calendar-case-insensitive': [FAIL],
|
||||
'intl402/Temporal/Calendar/prototype/eraYear/argument-propertybag-calendar-case-insensitive': [FAIL],
|
||||
'intl402/Temporal/TimeZone/from/timezone-case-insensitive': [FAIL],
|
||||
|
||||
'built-ins/Temporal/Duration/compare/precision-exact-mathematical-values-1': [FAIL],
|
||||
@ -514,7 +459,6 @@
|
||||
'built-ins/Temporal/ZonedDateTime/prototype/until/roundingmode-ceil': [FAIL],
|
||||
'built-ins/Temporal/ZonedDateTime/prototype/until/roundingmode-expand': [FAIL],
|
||||
'built-ins/Temporal/ZonedDateTime/prototype/until/roundingmode-floor': [FAIL],
|
||||
'intl402/Temporal/ZonedDateTime/prototype/withCalendar/calendar-case-insensitive': [FAIL],
|
||||
|
||||
'built-ins/Temporal/Duration/compare/order-of-operations': [FAIL],
|
||||
'built-ins/Temporal/Duration/prototype/round/order-of-operations': [FAIL],
|
||||
|
Loading…
Reference in New Issue
Block a user