mirror of
https://github.com/Samsung/escargot.git
synced 2026-06-22 10:01:50 +00:00
Implement ECMA-402 Intl.supportedValuesOf
Signed-off-by: Seonghyun Kim <sh8281.kim@samsung.com>
This commit is contained in:
parent
5632e3f811
commit
1d1abe1e69
11 changed files with 1434 additions and 279 deletions
|
|
@ -1125,6 +1125,198 @@ static Value builtinIntlGetCanonicalLocales(ExecutionState& state, Value thisVal
|
|||
return Object::createArrayFromList(state, ll);
|
||||
}
|
||||
|
||||
static ValueVector availableCalendars()
|
||||
{
|
||||
ValueVector resultVector;
|
||||
|
||||
auto ns = Intl::calendarsForLocale(String::emptyString());
|
||||
|
||||
for (const auto& s : ns) {
|
||||
resultVector.pushBack(String::fromUTF8(s.data(), s.length()));
|
||||
}
|
||||
return resultVector;
|
||||
}
|
||||
|
||||
static ValueVector availableCollation()
|
||||
{
|
||||
ValueVector resultVector;
|
||||
UErrorCode status = U_ZERO_ERROR;
|
||||
LocalResourcePointer<UEnumeration> collation(
|
||||
ucol_getKeywordValues("collation", &status),
|
||||
[](UEnumeration* fmt) { uenum_close(fmt); });
|
||||
|
||||
if (!U_SUCCESS(status)) {
|
||||
return {};
|
||||
}
|
||||
|
||||
const char* buffer;
|
||||
int32_t bufferLength = 0;
|
||||
while ((buffer = uenum_next(collation.get(), &bufferLength, &status)) && U_SUCCESS(status)) {
|
||||
std::string co(uloc_toUnicodeLocaleType("co", buffer));
|
||||
if (co == "search") {
|
||||
continue;
|
||||
}
|
||||
if (co == "standard") {
|
||||
continue;
|
||||
}
|
||||
resultVector.pushBack(String::fromUTF8(co.data(), co.size()));
|
||||
}
|
||||
|
||||
if (!U_SUCCESS(status)) {
|
||||
return {};
|
||||
}
|
||||
|
||||
return resultVector;
|
||||
}
|
||||
|
||||
static ValueVector availableCurrency()
|
||||
{
|
||||
ValueVector resultVector;
|
||||
UErrorCode status = U_ZERO_ERROR;
|
||||
|
||||
LocalResourcePointer<UEnumeration> curr(
|
||||
ucurr_getKeywordValuesForLocale("currency", "", false, &status),
|
||||
[](UEnumeration* fmt) { uenum_close(fmt); });
|
||||
|
||||
if (!U_SUCCESS(status)) {
|
||||
return {};
|
||||
}
|
||||
|
||||
const char* buffer;
|
||||
int32_t bufferLength = 0;
|
||||
while ((buffer = uenum_next(curr.get(), &bufferLength, &status)) && U_SUCCESS(status)) {
|
||||
resultVector.pushBack(String::fromUTF8(buffer, bufferLength));
|
||||
}
|
||||
|
||||
if (!U_SUCCESS(status)) {
|
||||
return {};
|
||||
}
|
||||
|
||||
return resultVector;
|
||||
}
|
||||
|
||||
static ValueVector availableNumberingSystem()
|
||||
{
|
||||
ValueVector resultVector;
|
||||
auto ns = Intl::numberingSystemsForLocale(String::emptyString());
|
||||
|
||||
for (const auto& s : ns) {
|
||||
resultVector.pushBack(String::fromUTF8(s.data(), s.length()));
|
||||
}
|
||||
|
||||
return resultVector;
|
||||
}
|
||||
|
||||
static ValueVector availableTimeZone()
|
||||
{
|
||||
// 1. Let records be AvailableNamedTimeZoneIdentifiers().
|
||||
// 2. Let result be a new empty List.
|
||||
// 3. For each element timeZoneIdentifierRecord of records, do
|
||||
// a. If timeZoneIdentifierRecord.[[Identifier]] is timeZoneIdentifierRecord.[[PrimaryIdentifier]], then
|
||||
// i. Append timeZoneIdentifierRecord.[[Identifier]] to result.
|
||||
// 4. Return result.
|
||||
ValueVector resultVector;
|
||||
UErrorCode status = U_ZERO_ERROR;
|
||||
|
||||
LocalResourcePointer<UEnumeration> tzs(ucal_openTimeZoneIDEnumeration(UCAL_ZONE_TYPE_CANONICAL_LOCATION, nullptr, nullptr, &status),
|
||||
[](UEnumeration* fmt) { uenum_close(fmt); });
|
||||
|
||||
if (!U_SUCCESS(status)) {
|
||||
return {};
|
||||
}
|
||||
|
||||
const char* buffer;
|
||||
int32_t bufferLength = 0;
|
||||
while ((buffer = uenum_next(tzs.get(), &bufferLength, &status)) && U_SUCCESS(status)) {
|
||||
std::string id(buffer, bufferLength);
|
||||
if (id == "UTC" || (id.find("Etc/GMT") != std::string::npos)) {
|
||||
continue;
|
||||
}
|
||||
resultVector.pushBack(String::fromUTF8(buffer, bufferLength));
|
||||
}
|
||||
|
||||
resultVector.pushBack(String::fromASCII("UTC"));
|
||||
|
||||
for (int i = 1; i <= 12; i++) {
|
||||
std::string s;
|
||||
s += "Etc/GMT+" + std::to_string(i);
|
||||
resultVector.pushBack(String::fromASCII(s.data(), s.length()));
|
||||
s = "";
|
||||
s += "Etc/GMT-" + std::to_string(i);
|
||||
resultVector.pushBack(String::fromASCII(s.data(), s.length()));
|
||||
}
|
||||
|
||||
resultVector.pushBack(String::fromASCII("Etc/GMT-13"));
|
||||
resultVector.pushBack(String::fromASCII("Etc/GMT-14"));
|
||||
|
||||
if (!U_SUCCESS(status)) {
|
||||
return {};
|
||||
}
|
||||
return resultVector;
|
||||
}
|
||||
|
||||
static ValueVector availableUnit()
|
||||
{
|
||||
// ecma402 #sec-issanctionedsimpleunitidentifier
|
||||
ValueVector resultVector;
|
||||
std::array<const char*, 45> data = {
|
||||
"acre", "bit", "byte", "celsius",
|
||||
"centimeter", "day", "degree", "fahrenheit",
|
||||
"fluid-ounce", "foot", "gallon", "gigabit",
|
||||
"gigabyte", "gram", "hectare", "hour",
|
||||
"inch", "kilobit", "kilobyte", "kilogram",
|
||||
"kilometer", "liter", "megabit", "megabyte",
|
||||
"meter", "microsecond", "mile", "mile-scandinavian",
|
||||
"millimeter", "milliliter", "millisecond", "minute",
|
||||
"month", "nanosecond", "ounce", "percent",
|
||||
"petabyte", "pound", "second", "stone",
|
||||
"terabit", "terabyte", "week", "yard",
|
||||
"year"
|
||||
};
|
||||
for (size_t i = 0; i < data.size(); i++) {
|
||||
resultVector.pushBack(String::fromASCII(data[i], strlen(data[i])));
|
||||
}
|
||||
return resultVector;
|
||||
}
|
||||
|
||||
|
||||
// https://402.ecma-international.org/12.0/index.html#sec-intl.supportedvaluesof
|
||||
static Value builtinIntlSupportedValuesOf(ExecutionState& state, Value thisValue, size_t argc, Value* argv, Optional<Object*> newTarget)
|
||||
{
|
||||
// Let key be ? ToString(key).
|
||||
String* key = argv[0].toString(state);
|
||||
ValueVector resultVector;
|
||||
// If key is "calendar", then
|
||||
if (key->equals("calendar")) {
|
||||
resultVector = availableCalendars();
|
||||
} else if (key->equals("collation")) {
|
||||
// Else if key is "collation", then
|
||||
resultVector = availableCollation();
|
||||
} else if (key->equals("currency")) {
|
||||
// Else if key is "currency", then
|
||||
resultVector = availableCurrency();
|
||||
} else if (key->equals("numberingSystem")) {
|
||||
// Else if key is "numberingSystem", then
|
||||
resultVector = availableNumberingSystem();
|
||||
} else if (key->equals("timeZone")) {
|
||||
// Else if key is "timeZone", then
|
||||
resultVector = availableTimeZone();
|
||||
} else if (key->equals("unit")) {
|
||||
// Else if key is "unit", then
|
||||
resultVector = availableUnit();
|
||||
} else {
|
||||
// Throw a RangeError exception.
|
||||
ErrorObject::throwBuiltinError(state, ErrorCode::RangeError, "Invalid key");
|
||||
}
|
||||
|
||||
ArrayObject* arr = Object::createArrayFromList(state, resultVector);
|
||||
arr->sort(state, arr->length(state), [](const Value& a, const Value& b) -> bool {
|
||||
return *a.asString() < *b.asString();
|
||||
});
|
||||
|
||||
return arr;
|
||||
}
|
||||
|
||||
void GlobalObject::initializeIntl(ExecutionState& state)
|
||||
{
|
||||
ObjectPropertyNativeGetterSetterData* nativeData = new ObjectPropertyNativeGetterSetterData(true, false, true, [](ExecutionState& state, Object* self, const Value& receiver, const EncodedValue& privateDataFromObjectPrivateArea) -> Value {
|
||||
|
|
@ -1457,6 +1649,10 @@ void GlobalObject::installIntl(ExecutionState& state)
|
|||
FunctionObject* getCanonicalLocales = new NativeFunctionObject(state, NativeFunctionInfo(strings->getCanonicalLocales, builtinIntlGetCanonicalLocales, 1, NativeFunctionInfo::Strict));
|
||||
m_intl->directDefineOwnProperty(state, ObjectPropertyName(strings->getCanonicalLocales),
|
||||
ObjectPropertyDescriptor(getCanonicalLocales, (ObjectPropertyDescriptor::PresentAttribute)(ObjectPropertyDescriptor::WritablePresent | ObjectPropertyDescriptor::ConfigurablePresent)));
|
||||
|
||||
m_intl->directDefineOwnProperty(state, ObjectPropertyName(strings->lazySupportedValuesOf()),
|
||||
ObjectPropertyDescriptor(new NativeFunctionObject(state, NativeFunctionInfo(strings->lazySupportedValuesOf(), builtinIntlSupportedValuesOf, 1, NativeFunctionInfo::Strict)),
|
||||
(ObjectPropertyDescriptor::PresentAttribute)(ObjectPropertyDescriptor::WritablePresent | ObjectPropertyDescriptor::ConfigurablePresent)));
|
||||
}
|
||||
|
||||
#else
|
||||
|
|
|
|||
|
|
@ -1679,25 +1679,33 @@ String* Intl::icuLocaleToBCP47Tag(String* string)
|
|||
|
||||
std::string Intl::convertICUCalendarKeywordToBCP47KeywordIfNeeds(const std::string& icuCalendar)
|
||||
{
|
||||
if (icuCalendar == std::string("gregorian")) {
|
||||
if (icuCalendar == "gregorian") {
|
||||
return "gregory";
|
||||
} else if (icuCalendar == std::string("islamic-civil")) {
|
||||
return "islamicc";
|
||||
} else if (icuCalendar == std::string("ethiopic-amete-alem")) {
|
||||
} else if (icuCalendar == "ethiopic-amete-alem") {
|
||||
return "ethioaa";
|
||||
}
|
||||
return icuCalendar;
|
||||
}
|
||||
|
||||
std::string Intl::convertBCP47KeywordToICUCalendarKeywordIfNeeds(const std::string& keyword)
|
||||
{
|
||||
if (keyword == "gregory") {
|
||||
return "gregorian";
|
||||
} else if (keyword == "ethioaa") {
|
||||
return "ethiopic-amete-alem";
|
||||
}
|
||||
return keyword;
|
||||
}
|
||||
|
||||
std::string Intl::convertICUCollationKeywordToBCP47KeywordIfNeeds(const std::string& icuCollation)
|
||||
{
|
||||
if (icuCollation == std::string("dictionary")) {
|
||||
if (icuCollation == "dictionary") {
|
||||
return "dict";
|
||||
} else if (icuCollation == std::string("gb2312han")) {
|
||||
} else if (icuCollation == "gb2312han") {
|
||||
return "gb2312";
|
||||
} else if (icuCollation == std::string("phonebook")) {
|
||||
} else if (icuCollation == "phonebook") {
|
||||
return "phonebk";
|
||||
} else if (icuCollation == std::string("traditional")) {
|
||||
} else if (icuCollation == "traditional") {
|
||||
return "trad";
|
||||
}
|
||||
return icuCollation;
|
||||
|
|
@ -2357,9 +2365,13 @@ std::vector<std::string> Intl::numberingSystemsForLocale(String* locale)
|
|||
std::string defaultSystemName(unumsys_getName(defaultSystem));
|
||||
unumsys_close(defaultSystem);
|
||||
|
||||
std::vector<std::string> numberingSystems;
|
||||
numberingSystems.push_back(defaultSystemName);
|
||||
numberingSystems.insert(numberingSystems.end(), availableNumberingSystems.begin(), availableNumberingSystems.end());
|
||||
std::vector<std::string> numberingSystems = availableNumberingSystems;
|
||||
|
||||
auto iter = std::find(numberingSystems.begin(), numberingSystems.end(), defaultSystemName);
|
||||
if (iter != numberingSystems.end()) {
|
||||
numberingSystems.erase(iter);
|
||||
}
|
||||
numberingSystems.insert(numberingSystems.begin(), defaultSystemName);
|
||||
return numberingSystems;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -52,6 +52,7 @@ public:
|
|||
static std::string preferredLanguage(const std::string& language);
|
||||
static String* icuLocaleToBCP47Tag(String* string);
|
||||
static std::string convertICUCalendarKeywordToBCP47KeywordIfNeeds(const std::string& icuCalendar);
|
||||
static std::string convertBCP47KeywordToICUCalendarKeywordIfNeeds(const std::string& icuCalendar);
|
||||
static std::string convertICUCollationKeywordToBCP47KeywordIfNeeds(const std::string& icuCollation);
|
||||
static std::vector<std::string> calendarsForLocale(String* locale);
|
||||
static std::vector<std::string> numberingSystemsForLocale(String* locale);
|
||||
|
|
|
|||
|
|
@ -220,9 +220,7 @@ static String* canonicalCodeForDisplayNames(ExecutionState& state, String* type,
|
|||
// b. Let code be the result of mapping code to lower case as described in 6.1.
|
||||
// c. Return code.
|
||||
|
||||
if (code->equals("gregory")) {
|
||||
code = String::fromASCII("gregorian", sizeof("gregorian") - 1);
|
||||
} else if (code->equals("islamicc")) {
|
||||
if (code->equals("islamicc")) {
|
||||
code = String::fromASCII("islamic-civil", sizeof("islamic-civil") - 1);
|
||||
} else if (code->equals("ethioaa")) {
|
||||
code = String::fromASCII("ethiopic-amete-alem", sizeof("ethiopic-amete-alem") - 1);
|
||||
|
|
@ -291,7 +289,8 @@ Value IntlDisplayNamesObject::of(ExecutionState& state, const Value& codeInput)
|
|||
} else if (m_type->equals("script")) {
|
||||
result = INTL_ICU_STRING_BUFFER_OPERATION(uldn_scriptDisplayName, m_icuLocaleDisplayNames, code->toNonGCUTF8StringData().data());
|
||||
} else if (m_type->equals("calendar")) {
|
||||
result = INTL_ICU_STRING_BUFFER_OPERATION(uldn_keyValueDisplayName, m_icuLocaleDisplayNames, "calendar", code->toNonGCUTF8StringData().data());
|
||||
auto icuKey = Intl::convertBCP47KeywordToICUCalendarKeywordIfNeeds(code->toNonGCUTF8StringData());
|
||||
result = INTL_ICU_STRING_BUFFER_OPERATION(uldn_keyValueDisplayName, m_icuLocaleDisplayNames, "calendar", icuKey.data());
|
||||
} else if (m_type->equals("currency")) {
|
||||
UCurrNameStyle style = UCURR_LONG_NAME;
|
||||
if (m_style->equals("long")) {
|
||||
|
|
|
|||
|
|
@ -212,11 +212,15 @@ static bool isSanctionedSimpleUnitIdentifier(const std::string& s)
|
|||
return true;
|
||||
} else if (s == "millisecond") {
|
||||
return true;
|
||||
} else if (s == "microsecond") {
|
||||
return true;
|
||||
} else if (s == "minute") {
|
||||
return true;
|
||||
}
|
||||
return (s == "month");
|
||||
}
|
||||
case 'n':
|
||||
return (s == "nanosecond");
|
||||
case 'o':
|
||||
return (s == "ounce");
|
||||
case 'p':
|
||||
|
|
@ -296,6 +300,8 @@ static const char* findICUUnitTypeFromUnitString(const std::string& s)
|
|||
COMPARE_ONCE(volume, milliliter)
|
||||
COMPARE_ONCE(length, millimeter)
|
||||
COMPARE_ONCE(duration, millisecond)
|
||||
COMPARE_ONCE(duration, microsecond)
|
||||
COMPARE_ONCE(duration, nanosecond)
|
||||
COMPARE_ONCE(duration, minute)
|
||||
COMPARE_ONCE(duration, month)
|
||||
COMPARE_ONCE(mass, ounce)
|
||||
|
|
|
|||
|
|
@ -815,6 +815,7 @@ namespace Escargot {
|
|||
F(SmallLetterNaN, "nan") \
|
||||
F(Standard, "standard") \
|
||||
F(Style, "style") \
|
||||
F(SupportedValuesOf, "supportedValuesOf") \
|
||||
F(TextInfo, "textInfo") \
|
||||
F(Time, "time") \
|
||||
F(TimeStyle, "timeStyle") \
|
||||
|
|
|
|||
4
third_party/runtime_icu_binder/ICUPolyfill.h
vendored
4
third_party/runtime_icu_binder/ICUPolyfill.h
vendored
|
|
@ -47,6 +47,7 @@
|
|||
#define uloc_getCharacterOrientation RuntimeICUBinder::ICU::instance().uloc_getCharacterOrientation
|
||||
#define uloc_countAvailable RuntimeICUBinder::ICU::instance().uloc_countAvailable
|
||||
#define uloc_getAvailable RuntimeICUBinder::ICU::instance().uloc_getAvailable
|
||||
#define uloc_toUnicodeLocaleType RuntimeICUBinder::ICU::instance().uloc_toUnicodeLocaleType
|
||||
|
||||
#define u_getIntPropertyValue RuntimeICUBinder::ICU::instance().u_getIntPropertyValue
|
||||
#define u_getIntPropertyMaxValue RuntimeICUBinder::ICU::instance().u_getIntPropertyMaxValue
|
||||
|
|
@ -74,6 +75,7 @@
|
|||
#define ucol_getAvailable RuntimeICUBinder::ICU::instance().ucol_getAvailable
|
||||
#define ucol_setAttribute RuntimeICUBinder::ICU::instance().ucol_setAttribute
|
||||
#define ucol_close RuntimeICUBinder::ICU::instance().ucol_close
|
||||
#define ucol_getKeywordValues RuntimeICUBinder::ICU::instance().ucol_getKeywordValues
|
||||
#define ucol_getKeywordValuesForLocale RuntimeICUBinder::ICU::instance().ucol_getKeywordValuesForLocale
|
||||
#define ucol_open RuntimeICUBinder::ICU::instance().ucol_open
|
||||
#define ucol_strcollIter RuntimeICUBinder::ICU::instance().ucol_strcollIter
|
||||
|
|
@ -207,6 +209,8 @@
|
|||
#define ucurr_getName RuntimeICUBinder::ICU::instance().ucurr_getName
|
||||
#define ucurr_getDefaultFractionDigits RuntimeICUBinder::ICU::instance().ucurr_getDefaultFractionDigits
|
||||
#define ucurr_getDefaultFractionDigitsForUsage RuntimeICUBinder::ICU::instance().ucurr_getDefaultFractionDigitsForUsage
|
||||
#define ucurr_openISOCurrencies RuntimeICUBinder::ICU::instance().ucurr_openISOCurrencies
|
||||
#define ucurr_getKeywordValuesForLocale RuntimeICUBinder::ICU::instance().ucurr_getKeywordValuesForLocale
|
||||
|
||||
#define ureldatefmt_open RuntimeICUBinder::ICU::instance().ureldatefmt_open
|
||||
#define ureldatefmt_openResult RuntimeICUBinder::ICU::instance().ureldatefmt_openResult
|
||||
|
|
|
|||
43
third_party/runtime_icu_binder/ICUTypes.h
vendored
43
third_party/runtime_icu_binder/ICUTypes.h
vendored
|
|
@ -6301,6 +6301,49 @@ typedef enum UNumberCompactStyle {
|
|||
/** @stable ICU 51 */
|
||||
} UNumberCompactStyle;
|
||||
|
||||
/**
|
||||
* Selector constants for ucurr_openCurrencies().
|
||||
*
|
||||
* @see ucurr_openCurrencies
|
||||
* @stable ICU 3.2
|
||||
*/
|
||||
typedef enum UCurrCurrencyType {
|
||||
/**
|
||||
* Select all ISO-4217 currency codes.
|
||||
* @stable ICU 3.2
|
||||
*/
|
||||
UCURR_ALL = INT32_MAX,
|
||||
/**
|
||||
* Select only ISO-4217 commonly used currency codes.
|
||||
* These currencies can be found in common use, and they usually have
|
||||
* bank notes or coins associated with the currency code.
|
||||
* This does not include fund codes, precious metals and other
|
||||
* various ISO-4217 codes limited to special financial products.
|
||||
* @stable ICU 3.2
|
||||
*/
|
||||
UCURR_COMMON = 1,
|
||||
/**
|
||||
* Select ISO-4217 uncommon currency codes.
|
||||
* These codes respresent fund codes, precious metals and other
|
||||
* various ISO-4217 codes limited to special financial products.
|
||||
* A fund code is a monetary resource associated with a currency.
|
||||
* @stable ICU 3.2
|
||||
*/
|
||||
UCURR_UNCOMMON = 2,
|
||||
/**
|
||||
* Select only deprecated ISO-4217 codes.
|
||||
* These codes are no longer in general public use.
|
||||
* @stable ICU 3.2
|
||||
*/
|
||||
UCURR_DEPRECATED = 4,
|
||||
/**
|
||||
* Select only non-deprecated ISO-4217 codes.
|
||||
* These codes are in general public use.
|
||||
* @stable ICU 3.2
|
||||
*/
|
||||
UCURR_NON_DEPRECATED = 8
|
||||
} UCurrCurrencyType;
|
||||
|
||||
/**
|
||||
* Constants for specifying currency spacing
|
||||
* @stable ICU 4.8
|
||||
|
|
|
|||
|
|
@ -71,6 +71,7 @@ namespace RuntimeICUBinder {
|
|||
F(uloc_getCharacterOrientation, ULayoutType (*)(const char* localeID, UErrorCode* err), ULayoutType) \
|
||||
F(uloc_countAvailable, int32_t (*)(), int32_t) \
|
||||
F(uloc_getAvailable, const char* (*)(int32_t n), const char*) \
|
||||
F(uloc_toUnicodeLocaleType, const char* (*)(const char*, const char*), const char*) \
|
||||
F(ucnv_open, UConverter* (*)(const char* converterName, UErrorCode* err), UConverter*) \
|
||||
F(ucnv_compareNames, int (*)(const char* name1, const char* name2), int) \
|
||||
F(ucnv_getDisplayName, int32_t (*)(const UConverter* converter, const char* displayLocale, UChar* displayName, int32_t displayNameCapacity, UErrorCode* err), int32_t) \
|
||||
|
|
@ -106,6 +107,7 @@ namespace RuntimeICUBinder {
|
|||
F(vzone_getRawOffset, int32_t (*)(VZone*), int32_t) \
|
||||
F(ucol_countAvailable, int32_t (*)(), int32_t) \
|
||||
F(ucol_getAvailable, const char* (*)(int32_t), const char*) \
|
||||
F(ucol_getKeywordValues, UEnumeration* (*)(const char* key, UErrorCode* status), UEnumeration*) \
|
||||
F(ucol_getKeywordValuesForLocale, UEnumeration* (*)(const char* key, const char* locale, UBool commonlyUsed, UErrorCode* status), UEnumeration*) \
|
||||
F(ucol_open, UCollator* (*)(const char* loc, UErrorCode* status), UCollator*) \
|
||||
F(ucol_strcollIter, UCollationResult (*)(const UCollator* coll, UCharIterator* sIter, UCharIterator* tIter, UErrorCode* status), UCollationResult) \
|
||||
|
|
@ -176,6 +178,8 @@ namespace RuntimeICUBinder {
|
|||
F(ucurr_getName, const UChar* (*)(const UChar* currency, const char* locale, UCurrNameStyle nameStyle, UBool* isChoiceFormat, int32_t* len, UErrorCode* ec), const UChar*) \
|
||||
F(ucurr_getDefaultFractionDigits, int32_t (*)(const UChar* currency, UErrorCode* ec), int32_t) \
|
||||
F(ucurr_getDefaultFractionDigitsForUsage, int32_t (*)(const UChar* currency, const UCurrencyUsage usage, UErrorCode* ec), int32_t) \
|
||||
F(ucurr_openISOCurrencies, UEnumeration* (*)(uint32_t currType, UErrorCode *pErrorCode), UEnumeration*) \
|
||||
F(ucurr_getKeywordValuesForLocale, UEnumeration* (*)(const char *key, const char *locale, UBool commonlyUsed, UErrorCode *status), UEnumeration*) \
|
||||
F(ureldatefmt_open, URelativeDateTimeFormatter* (*)(const char*, UNumberFormat*, UDateRelativeDateTimeFormatterStyle, UDisplayContext, UErrorCode*), URelativeDateTimeFormatter*) \
|
||||
F(ureldatefmt_openResult, UFormattedRelativeDateTime* (*)(UErrorCode * ec), UFormattedRelativeDateTime*) \
|
||||
F(ureldatefmt_resultAsValue, const UFormattedValue* (*)(const UFormattedRelativeDateTime* ufrdt, UErrorCode* ec), const UFormattedValue*) \
|
||||
|
|
|
|||
|
|
@ -326,7 +326,6 @@
|
|||
<test id="built-ins/Iterator/prototype/Symbol.toStringTag/weird-setter"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Iterator/prototype/constructor/prop-desc"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Iterator/prototype/constructor/weird-setter"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Iterator/prototype/drop/argument-validation-failure-closes-underlying"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Iterator/prototype/filter/argument-validation-failure-closes-underlying"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Iterator/prototype/find/argument-validation-failure-closes-underlying"><reason>TODO</reason></test>
|
||||
<test id="built-ins/Iterator/prototype/flatMap/argument-validation-failure-closes-underlying"><reason>TODO</reason></test>
|
||||
|
|
@ -4734,7 +4733,6 @@
|
|||
<test id="intl402/Array/prototype/toLocaleString/invoke-element-tolocalestring"><reason>TODO</reason></test>
|
||||
<test id="intl402/Collator/constructor-options-throwing-getters"><reason>TODO</reason></test>
|
||||
<test id="intl402/Collator/prototype/compare/ignorePunctuation"><reason>TODO</reason></test>
|
||||
<test id="intl402/Collator/prototype/resolvedOptions/basic"><reason>TODO</reason></test>
|
||||
<test id="intl402/Collator/prototype/resolvedOptions/ignorePunctuation-default"><reason>TODO</reason></test>
|
||||
<test id="intl402/Collator/prototype/resolvedOptions/resolved-collation-unicode-extensions-and-options"><reason>TODO</reason></test>
|
||||
<test id="intl402/DateTimeFormat/canonicalize-calendar"><reason>TODO</reason></test>
|
||||
|
|
@ -4801,7 +4799,6 @@
|
|||
<test id="intl402/DateTimeFormat/prototype/formatToParts/temporal-objects-not-overlapping-options"><reason>TODO</reason></test>
|
||||
<test id="intl402/DateTimeFormat/prototype/formatToParts/temporal-objects-resolved-time-zone"><reason>TODO</reason></test>
|
||||
<test id="intl402/DateTimeFormat/prototype/formatToParts/temporal-zoneddatetime-not-supported"><reason>TODO</reason></test>
|
||||
<test id="intl402/DateTimeFormat/prototype/resolvedOptions/basic"><reason>TODO</reason></test>
|
||||
<test id="intl402/DateTimeFormat/prototype/resolvedOptions/hourCycle-default"><reason>TODO</reason></test>
|
||||
<test id="intl402/DateTimeFormat/prototype/resolvedOptions/hourCycle-timeStyle"><reason>TODO</reason></test>
|
||||
<test id="intl402/DateTimeFormat/prototype/resolvedOptions/offset-timezone-basic"><reason>TODO</reason></test>
|
||||
|
|
@ -4939,33 +4936,9 @@
|
|||
<test id="intl402/Intl/getCanonicalLocales/unicode-ext-canonicalize-timezone"><reason>TODO</reason></test>
|
||||
<test id="intl402/Intl/getCanonicalLocales/unicode-ext-canonicalize-yes-to-true"><reason>TODO</reason></test>
|
||||
<test id="intl402/Intl/getCanonicalLocales/unicode-ext-key-with-digit"><reason>TODO</reason></test>
|
||||
<test id="intl402/Intl/supportedValuesOf/builtin"><reason>TODO</reason></test>
|
||||
<test id="intl402/Intl/supportedValuesOf/calendars"><reason>TODO</reason></test>
|
||||
<test id="intl402/Intl/supportedValuesOf/calendars-accepted-by-DateTimeFormat"><reason>TODO</reason></test>
|
||||
<test id="intl402/Intl/supportedValuesOf/calendars-accepted-by-DisplayNames"><reason>TODO</reason></test>
|
||||
<test id="intl402/Intl/supportedValuesOf/coerced-to-string"><reason>TODO</reason></test>
|
||||
<test id="intl402/Intl/supportedValuesOf/collations"><reason>TODO</reason></test>
|
||||
<test id="intl402/Intl/supportedValuesOf/collations-accepted-by-Collator"><reason>TODO</reason></test>
|
||||
<test id="intl402/Intl/supportedValuesOf/currencies"><reason>TODO</reason></test>
|
||||
<test id="intl402/Intl/supportedValuesOf/currencies-accepted-by-DisplayNames"><reason>TODO</reason></test>
|
||||
<test id="intl402/Intl/supportedValuesOf/currencies-accepted-by-NumberFormat"><reason>TODO</reason></test>
|
||||
<test id="intl402/Intl/supportedValuesOf/invalid-key"><reason>TODO</reason></test>
|
||||
<test id="intl402/Intl/supportedValuesOf/length"><reason>TODO</reason></test>
|
||||
<test id="intl402/Intl/supportedValuesOf/name"><reason>TODO</reason></test>
|
||||
<test id="intl402/Intl/supportedValuesOf/numberingSystems"><reason>TODO</reason></test>
|
||||
<test id="intl402/Intl/supportedValuesOf/numberingSystems-accepted-by-DateTimeFormat"><reason>TODO</reason></test>
|
||||
<test id="intl402/Intl/supportedValuesOf/numberingSystems-accepted-by-NumberFormat"><reason>TODO</reason></test>
|
||||
<test id="intl402/Intl/supportedValuesOf/numberingSystems-accepted-by-RelativeTimeFormat"><reason>TODO</reason></test>
|
||||
<test id="intl402/Intl/supportedValuesOf/numberingSystems-with-simple-digit-mappings"><reason>TODO</reason></test>
|
||||
<test id="intl402/Intl/supportedValuesOf/prop-desc"><reason>TODO</reason></test>
|
||||
<test id="intl402/Intl/supportedValuesOf/timeZones"><reason>TODO</reason></test>
|
||||
<test id="intl402/Intl/supportedValuesOf/timeZones-accepted-by-DateTimeFormat"><reason>TODO</reason></test>
|
||||
<test id="intl402/Intl/supportedValuesOf/timeZones-include-non-continental"><reason>TODO</reason></test>
|
||||
<test id="intl402/Intl/supportedValuesOf/units"><reason>TODO</reason></test>
|
||||
<test id="intl402/Intl/supportedValuesOf/units-accepted-by-NumberFormat"><reason>TODO</reason></test>
|
||||
<test id="intl402/Locale/constructor-apply-options-canonicalizes-twice"><reason>TODO</reason></test>
|
||||
<test id="intl402/Locale/constructor-getter-order"><reason>TODO</reason></test>
|
||||
<test id="intl402/Locale/constructor-non-iana-canon"><reason>TODO</reason></test>
|
||||
<test id="intl402/Locale/constructor-options-canonicalized"><reason>TODO</reason></test>
|
||||
<test id="intl402/Locale/constructor-options-firstDayOfWeek-invalid"><reason>TODO</reason></test>
|
||||
<test id="intl402/Locale/constructor-options-firstDayOfWeek-valid"><reason>TODO</reason></test>
|
||||
|
|
@ -5019,7 +4992,6 @@
|
|||
<test id="intl402/Locale/prototype/getWeekInfo/output-object"><reason>TODO</reason></test>
|
||||
<test id="intl402/Locale/prototype/getWeekInfo/output-object-keys"><reason>TODO</reason></test>
|
||||
<test id="intl402/Locale/prototype/getWeekInfo/prop-desc"><reason>TODO</reason></test>
|
||||
<test id="intl402/Locale/prototype/minimize/removing-likely-subtags-first-adds-likely-subtags"><reason>TODO</reason></test>
|
||||
<test id="intl402/Locale/prototype/variants/name"><reason>TODO</reason></test>
|
||||
<test id="intl402/Locale/prototype/variants/prop-desc"><reason>TODO</reason></test>
|
||||
<test id="intl402/Locale/reject-duplicate-variants-in-tlang"><reason>TODO</reason></test>
|
||||
|
|
@ -5034,7 +5006,6 @@
|
|||
<test id="intl402/NumberFormat/constructor-signDisplay-negative"><reason>TODO</reason></test>
|
||||
<test id="intl402/NumberFormat/constructor-trailingZeroDisplay"><reason>TODO</reason></test>
|
||||
<test id="intl402/NumberFormat/constructor-trailingZeroDisplay-invalid"><reason>TODO</reason></test>
|
||||
<test id="intl402/NumberFormat/constructor-unit"><reason>TODO</reason></test>
|
||||
<test id="intl402/NumberFormat/currency-digits-nonstandard-notation"><reason>TODO</reason></test>
|
||||
<test id="intl402/NumberFormat/dft-currency-mnfd-range-check-mxfd"><reason>TODO</reason></test>
|
||||
<test id="intl402/NumberFormat/prototype/format/format-rounding-increment-10"><reason>TODO</reason></test>
|
||||
|
|
@ -5072,7 +5043,6 @@
|
|||
<test id="intl402/NumberFormat/prototype/format/signDisplay-negative-ja-JP"><reason>TODO</reason></test>
|
||||
<test id="intl402/NumberFormat/prototype/format/signDisplay-negative-ko-KR"><reason>TODO</reason></test>
|
||||
<test id="intl402/NumberFormat/prototype/format/signDisplay-negative-zh-TW"><reason>TODO</reason></test>
|
||||
<test id="intl402/NumberFormat/prototype/format/units"><reason>TODO</reason></test>
|
||||
<test id="intl402/NumberFormat/prototype/format/useGrouping-extended-de-DE"><reason>TODO</reason></test>
|
||||
<test id="intl402/NumberFormat/prototype/format/useGrouping-extended-en-IN"><reason>TODO</reason></test>
|
||||
<test id="intl402/NumberFormat/prototype/format/useGrouping-extended-en-US"><reason>TODO</reason></test>
|
||||
|
|
@ -6290,9 +6260,6 @@
|
|||
<test id="staging/sm/Iterator/from/wrap-next-forwards-value"><reason>TODO</reason></test>
|
||||
<test id="staging/sm/Iterator/from/wrap-next-not-object-throws"><reason>TODO</reason></test>
|
||||
<test id="staging/sm/Iterator/from/wrap-return-closes-iterator"><reason>TODO</reason></test>
|
||||
<test id="staging/sm/Iterator/prototype/drop/drop-more-than-available"><reason>TODO</reason></test>
|
||||
<test id="staging/sm/Iterator/prototype/drop/length"><reason>TODO</reason></test>
|
||||
<test id="staging/sm/Iterator/prototype/drop/name"><reason>TODO</reason></test>
|
||||
<test id="staging/sm/Iterator/prototype/find/check-fn-after-getting-iterator"><reason>TODO</reason></test>
|
||||
<test id="staging/sm/Iterator/prototype/flatMap/close-iterator-when-inner-complete-throws"><reason>TODO</reason></test>
|
||||
<test id="staging/sm/Iterator/prototype/flatMap/close-iterator-when-inner-next-throws"><reason>TODO</reason></test>
|
||||
|
|
@ -6313,8 +6280,6 @@
|
|||
<test id="staging/sm/Iterator/prototype/lazy-methods-iterator-not-closed-on-value-throws"><reason>TODO</reason></test>
|
||||
<test id="staging/sm/Iterator/prototype/lazy-methods-iterator-returns-done-generator-finishes"><reason>TODO</reason></test>
|
||||
<test id="staging/sm/Iterator/prototype/lazy-methods-multiple-return-close-iterator-once"><reason>TODO</reason></test>
|
||||
<test id="staging/sm/Iterator/prototype/lazy-methods-pass-through-lastValue"><reason>TODO</reason></test>
|
||||
<test id="staging/sm/Iterator/prototype/lazy-methods-pass-value-through-chain"><reason>TODO</reason></test>
|
||||
<test id="staging/sm/Iterator/prototype/lazy-methods-proxy-accesses"><reason>TODO</reason></test>
|
||||
<test id="staging/sm/Iterator/prototype/lazy-methods-reentry-not-close-iterator"><reason>TODO</reason></test>
|
||||
<test id="staging/sm/Iterator/prototype/lazy-methods-return-closes-iterator"><reason>TODO</reason></test>
|
||||
|
|
@ -6326,7 +6291,6 @@
|
|||
<test id="staging/sm/Iterator/prototype/map/proxy-accesses"><reason>TODO</reason></test>
|
||||
<test id="staging/sm/Iterator/prototype/reduce/check-fn-after-getting-iterator"><reason>TODO</reason></test>
|
||||
<test id="staging/sm/Iterator/prototype/some/check-fn-after-getting-iterator"><reason>TODO</reason></test>
|
||||
<test id="staging/sm/Iterator/prototype/take-drop-throw-eagerly-on-negative"><reason>TODO</reason></test>
|
||||
<test id="staging/sm/Iterator/prototype/take/take-more-than-available"><reason>TODO</reason></test>
|
||||
<test id="staging/sm/JSON/parse-number-syntax"><reason>TODO</reason></test>
|
||||
<test id="staging/sm/JSON/parse-syntax-errors-03"><reason>TODO</reason></test>
|
||||
|
|
@ -6386,9 +6350,7 @@
|
|||
<test id="staging/sm/Set/is-superset-of"><reason>TODO</reason></test>
|
||||
<test id="staging/sm/String/AdvanceStringIndex"><reason>TODO</reason></test>
|
||||
<test id="staging/sm/String/matchAll"><reason>TODO</reason></test>
|
||||
<test id="staging/sm/String/string-code-point-upper-lower-mapping"><reason>TODO</reason></test>
|
||||
<test id="staging/sm/String/string-pad-start-end"><reason>TODO</reason></test>
|
||||
<test id="staging/sm/String/string-upper-lower-mapping"><reason>TODO</reason></test>
|
||||
<test id="staging/sm/String/unicode-braced"><reason>TODO</reason></test>
|
||||
<test id="staging/sm/Symbol/as-base-value"><reason>TODO</reason></test>
|
||||
<test id="staging/sm/Symbol/comparisons"><reason>TODO</reason></test>
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue