Skip to content

Commit a487d1d

Browse files
Assume windows version will always be >= 62
1 parent 106af5f commit a487d1d

File tree

2 files changed

+40
-57
lines changed

2 files changed

+40
-57
lines changed

lib/Runtime/Library/IntlEngineInterfaceExtensionObject.cpp

Lines changed: 40 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -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

lib/Runtime/PlatformAgnostic/ChakraICU.h

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -102,17 +102,6 @@ namespace PlatformAgnostic
102102
u_getVersion(version);
103103
return version[0];
104104
}
105-
106-
inline int LinkedIcuMajorVersion()
107-
{
108-
#if ICU_VERSION
109-
return ICU_VERSION;
110-
#elif U_ICU_VERSION_MAJOR_NUM
111-
return U_ICU_VERSION_MAJOR_NUM;
112-
#else
113-
return GetICUMajorVersion();
114-
#endif
115-
}
116105
}
117106
}
118107
#endif // ifdef HAS_ICU

0 commit comments

Comments
 (0)