@@ -2437,43 +2437,40 @@ DEFINE_ISXLOCALEAVAILABLE(PR, uloc)
24372437 return JavascriptString::NewWithBuffer (formatted, formattedLen, scriptContext);
24382438 }
24392439
2440- if (PlatformAgnostic::ICUHelpers::LinkedIcuMajorVersion () >= 61 )
2441- {
2442- UErrorCode status = U_ZERO_ERROR;
2443- ScopedUFieldPositionIterator fpi (ufieldpositer_open (&status));
2444-
2445- EnsureBuffer ([&](UChar *buf, int bufLen, UErrorCode *status)
2446- {
2447- return unum_formatDoubleForFields (*fmt, num, buf, bufLen, fpi, status);
2448- }, scriptContext->GetRecycler (), &formatted, &formattedLen);
2440+ #if !defined(ICU_VERSION) || ICU_VERSION >= 61
2441+ UErrorCode status = U_ZERO_ERROR;
2442+ ScopedUFieldPositionIterator fpi (ufieldpositer_open (&status));
24492443
2450- NumberFormatPartsBuilder nfpb (num, formatted, formattedLen, scriptContext);
2444+ EnsureBuffer ([&](UChar *buf, int bufLen, UErrorCode *status)
2445+ {
2446+ return unum_formatDoubleForFields (*fmt, num, buf, bufLen, fpi, status);
2447+ }, scriptContext->GetRecycler (), &formatted, &formattedLen);
24512448
2452- int partStart = 0 ;
2453- int partEnd = 0 ;
2454- int i = 0 ;
2455- for (int kind = ufieldpositer_next (fpi, &partStart, &partEnd); kind >= 0 ; kind = ufieldpositer_next (fpi, &partStart, &partEnd), ++i)
2456- {
2457- nfpb.InsertPart (static_cast <UNumberFormatFields>(kind), partStart, partEnd);
2458- }
2449+ NumberFormatPartsBuilder nfpb (num, formatted, formattedLen, scriptContext);
24592450
2460- return nfpb.ToPartsArray ();
2451+ int partStart = 0 ;
2452+ int partEnd = 0 ;
2453+ int i = 0 ;
2454+ for (int kind = ufieldpositer_next (fpi, &partStart, &partEnd); kind >= 0 ; kind = ufieldpositer_next (fpi, &partStart, &partEnd), ++i)
2455+ {
2456+ nfpb.InsertPart (static_cast <UNumberFormatFields>(kind), partStart, partEnd);
24612457 }
2462- else
2458+
2459+ return nfpb.ToPartsArray ();
2460+ #else
2461+ JavascriptLibrary *library = scriptContext->GetLibrary ();
2462+ JavascriptArray *ret = library->CreateArray (1 );
2463+ DynamicObject* part = library->CreateObject ();
2464+ EnsureBuffer ([&](UChar *buf, int bufLen, UErrorCode *status)
24632465 {
2464- JavascriptLibrary *library = scriptContext->GetLibrary ();
2465- JavascriptArray *ret = library->CreateArray (1 );
2466- DynamicObject *part = library->CreateObject ();
2467- EnsureBuffer ([&](UChar *buf, int bufLen, UErrorCode *status)
2468- {
2469- return unum_formatDouble (*fmt, num, buf, bufLen, nullptr , status);
2470- }, scriptContext->GetRecycler (), &formatted, &formattedLen);
2471- JavascriptOperators::InitProperty (part, PropertyIds::type, library->GetIntlUnknownPartString ());
2472- JavascriptOperators::InitProperty (part, PropertyIds::value, JavascriptString::NewWithBuffer (formatted, formattedLen, scriptContext));
2466+ return unum_formatDouble (*fmt, num, buf, bufLen, nullptr , status);
2467+ }, scriptContext->GetRecycler (), &formatted, &formattedLen);
2468+ JavascriptOperators::InitProperty (part, PropertyIds::type, library->GetIntlUnknownPartString ());
2469+ JavascriptOperators::InitProperty (part, PropertyIds::value, JavascriptString::NewWithBuffer (formatted, formattedLen, scriptContext));
24732470
2474- ret->SetItem (0 , part, PropertyOperationFlags::PropertyOperation_None);
2475- return ret;
2476- }
2471+ ret->SetItem (0 , part, PropertyOperationFlags::PropertyOperation_None);
2472+ return ret;
2473+ # endif // #if ICU_VERSION >= 61 ... #else
24772474#else
24782475 INTL_CHECK_ARGS (
24792476 args.Info .Count == 3 &&
@@ -3015,24 +3012,21 @@ DEFINE_ISXLOCALEAVAILABLE(PR, uloc)
30153012 // For ICU < 61, we can fake it by creating an array of ["other"], which
30163013 // uplrules_getKeywords is guaranteed to return at minimum.
30173014 // This array is only used in resolved options, so the majority of the functionality can remain (namely, select() still works)
3018- if (PlatformAgnostic::ICUHelpers::LinkedIcuMajorVersion () >= 61 )
3019- {
3020- DynamicObject *state = UnsafeVarTo<DynamicObject>(args[1 ]);
3021- FinalizableUPluralRules *pr = GetOrCreateCachedUPluralRules (state, scriptContext);
3015+ #if !defined(ICU_VERSION) || ICU_VERSION >= 61
3016+ DynamicObject *state = UnsafeVarTo<DynamicObject>(args[1 ]);
3017+ FinalizableUPluralRules *pr = GetOrCreateCachedUPluralRules (state, scriptContext);
30223018
3023- UErrorCode status = U_ZERO_ERROR;
3024- ScopedUEnumeration keywords (uplrules_getKeywords (*pr, &status));
3025- ICU_ASSERT (status, true );
3019+ UErrorCode status = U_ZERO_ERROR;
3020+ ScopedUEnumeration keywords (uplrules_getKeywords (*pr, &status));
3021+ ICU_ASSERT (status, true );
30263022
3027- ForEachUEnumeration16 (keywords, [&](int index, const char16 *kw, charcount_t kwLength)
3028- {
3029- ret->SetItem (index, JavascriptString::NewCopyBuffer (kw, kwLength, scriptContext), PropertyOperation_None);
3030- });
3031- }
3032- else
3023+ ForEachUEnumeration16 (keywords, [&](int index, const char16 *kw, charcount_t kwLength)
30333024 {
3034- ret->SetItem (0 , scriptContext->GetLibrary ()->GetIntlPluralRulesOtherString (), PropertyOperation_None);
3035- }
3025+ ret->SetItem (index, JavascriptString::NewCopyBuffer (kw, kwLength, scriptContext), PropertyOperation_None);
3026+ });
3027+ #else
3028+ ret->SetItem (0 , scriptContext->GetLibrary ()->GetIntlPluralRulesOtherString (), PropertyOperation_None);
3029+ #endif
30363030
30373031 return ret;
30383032#else
0 commit comments