Skip to content

Commit c5c7f0d

Browse files
authored
Fix check for AppleClang in src/native/libs and fix warnings (#101875)
While looking at #101781 I noticed that we weren't catching AppleClang in the CMAKE_C_COMPILER_ID in src/native/libs/CMakeLists.txt because we used STREQUAL instead of MATCHES like we do everywhere else. The result was that we didn't enable `-Weverything` on Apple platforms for the libs.native subset and a bunch of warnings didn't get enabled, this PR fixes that.
1 parent 042d3e9 commit c5c7f0d

35 files changed

+183
-154
lines changed

src/native/libs/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ if (CLR_CMAKE_TARGET_UNIX OR CLR_CMAKE_TARGET_BROWSER OR CLR_CMAKE_TARGET_WASI)
109109
add_subdirectory(System.IO.Ports.Native)
110110
endif ()
111111

112-
if (CMAKE_C_COMPILER_ID STREQUAL Clang)
112+
if (CMAKE_C_COMPILER_ID MATCHES "Clang")
113113
add_compile_options(-Weverything)
114114
add_compile_options(-Wno-format-nonliteral)
115115
add_compile_options(-Wno-disabled-macro-expansion)

src/native/libs/System.Globalization.Native/pal_calendarData.m

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ static CalendarId GetCalendarId(const char* calendarName)
8787
{
8888
@autoreleasepool
8989
{
90-
NSString *locName = [NSString stringWithFormat:@"%s", localeName];
90+
NSString *locName = [[NSString alloc] initWithUTF8String:localeName];
9191
NSLocale *currentLocale = [[NSLocale alloc] initWithLocaleIdentifier:locName];
9292

9393
if (dataType == CalendarData_MonthDay)
@@ -162,8 +162,8 @@ static CalendarId GetCalendarId(const char* calendarName)
162162
assert(false);
163163
return NULL;
164164
}
165-
166-
NSString *arrayToString = [[result valueForKey:@"description"] componentsJoinedByString:@"||"];
165+
NSArray *descriptionsArray = [result valueForKey:@"description"];
166+
NSString *arrayToString = [descriptionsArray componentsJoinedByString:@"||"];
167167
return arrayToString ? strdup([arrayToString UTF8String]) : NULL;
168168
}
169169
}
@@ -211,7 +211,7 @@ int32_t GlobalizationNative_GetJapaneseEraStartDateNative(int32_t era, int32_t*
211211
for (int month = 0; month <= 12; month++)
212212
{
213213
NSDateComponents *eraComponents = [japaneseCalendar components:NSCalendarUnitEra fromDate:date];
214-
currentEra = [eraComponents era];
214+
currentEra = (int32_t)[eraComponents era];
215215
if (currentEra == era)
216216
{
217217
for (int day = 0; day < 31; day++)
@@ -220,17 +220,17 @@ int32_t GlobalizationNative_GetJapaneseEraStartDateNative(int32_t era, int32_t*
220220
startDateComponents.day = startDateComponents.day - 1;
221221
date = [japaneseCalendar dateFromComponents:startDateComponents];
222222
eraComponents = [japaneseCalendar components:NSCalendarUnitEra fromDate:date];
223-
currentEra = [eraComponents era];
223+
currentEra = (int32_t)[eraComponents era];
224224
if (currentEra != era)
225225
{
226226
// add back 1 day to get back into the specified Era
227227
startDateComponents.day = startDateComponents.day + 1;
228228
date = [japaneseCalendar dateFromComponents:startDateComponents];
229229
NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
230230
NSDateComponents *components = [gregorianCalendar components:NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear fromDate:date];
231-
*startYear = [components year];
232-
*startMonth = [components month];
233-
*startDay = [components day];
231+
*startYear = (int32_t)[components year];
232+
*startMonth = (int32_t)[components month];
233+
*startDay = (int32_t)[components day];
234234
return 1;
235235
}
236236
}
@@ -239,7 +239,7 @@ int32_t GlobalizationNative_GetJapaneseEraStartDateNative(int32_t era, int32_t*
239239
startDateComponents.month = startDateComponents.month + 1;
240240
date = [japaneseCalendar dateFromComponents:startDateComponents];
241241
eraComponents = [japaneseCalendar components:NSCalendarUnitEra fromDate:date];
242-
currentEra = [eraComponents era];
242+
currentEra = (int32_t)[eraComponents era];
243243
}
244244

245245
return 0;
@@ -267,17 +267,18 @@ int32_t GlobalizationNative_GetCalendarsNative(const char* localeName, CalendarI
267267
NSCalendarIdentifierRepublicOfChina,
268268
];
269269

270-
NSString *locName = [NSString stringWithFormat:@"%s", localeName];
270+
NSString *locName = [[NSString alloc] initWithUTF8String:localeName];
271271
NSLocale *currentLocale = [[NSLocale alloc] initWithLocaleIdentifier:locName];
272272
NSString *defaultCalendarIdentifier = [currentLocale calendarIdentifier];
273-
int32_t calendarCount = MIN(calendarIdentifiers.count, calendarsCapacity);
273+
int32_t calendarCount = (int32_t)calendarIdentifiers.count < calendarsCapacity ? (int32_t)calendarIdentifiers.count : calendarsCapacity;
274274
int32_t calendarIndex = 0;
275275
CalendarId defaultCalendarId = GetCalendarId([defaultCalendarIdentifier UTF8String]);
276276
// If the default calendar is not supported, return the Gregorian calendar as the default.
277277
calendars[calendarIndex++] = defaultCalendarId == UNINITIALIZED_VALUE ? GREGORIAN : defaultCalendarId;
278278
for (int i = 0; i < calendarCount; i++)
279279
{
280-
CalendarId calendarId = GetCalendarId([calendarIdentifiers[i] UTF8String]);
280+
NSCalendarIdentifier calendarIdentifier = calendarIdentifiers[(NSUInteger)i];
281+
CalendarId calendarId = GetCalendarId([calendarIdentifier UTF8String]);
281282
if (calendarId == UNINITIALIZED_VALUE || calendarId == defaultCalendarId)
282283
continue;
283284
calendars[calendarIndex++] = calendarId;

src/native/libs/System.Globalization.Native/pal_casing.m

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ int32_t GlobalizationNative_ChangeCaseNative(const uint16_t* localeName, int32_t
7878
}
7979
else
8080
{
81-
NSString *locName = [NSString stringWithCharacters: localeName length: lNameLength];
81+
NSString *locName = [NSString stringWithCharacters: localeName length: (NSUInteger)lNameLength];
8282
currentLocale = [NSLocale localeWithLocaleIdentifier:locName];
8383
}
8484

@@ -89,14 +89,14 @@ int32_t GlobalizationNative_ChangeCaseNative(const uint16_t* localeName, int32_t
8989
int32_t startIndex = srcIdx;
9090
NEXTOFFSET(lpSrc, srcIdx, cwSrcLength);
9191
int32_t srcLength = srcIdx - startIndex;
92-
NSString *src = [NSString stringWithCharacters: lpSrc + startIndex length: srcLength];
92+
NSString *src = [NSString stringWithCharacters: lpSrc + startIndex length: (NSUInteger)srcLength];
9393
NSString *dst = bToUpper ? [src uppercaseStringWithLocale:currentLocale] : [src lowercaseStringWithLocale:currentLocale];
9494
int32_t index = 0;
9595
// iterate over all code points of a surrogate pair character
9696
while (index < srcLength)
9797
{
9898
// the dst.length > srcLength is to prevent code point expansions
99-
dstCodepoint = dst.length > srcLength ? [src characterAtIndex: index] : [dst characterAtIndex: index];
99+
dstCodepoint = (int32_t)dst.length > srcLength ? [src characterAtIndex: (NSUInteger)index] : [dst characterAtIndex: (NSUInteger)index];
100100
Append(lpDst, dstIdx, cwDstLength, dstCodepoint, isError);
101101
index++;
102102
}
@@ -130,14 +130,14 @@ int32_t GlobalizationNative_ChangeCaseInvariantNative(const uint16_t* lpSrc, int
130130
int32_t startIndex = srcIdx;
131131
NEXTOFFSET(lpSrc, srcIdx, cwSrcLength);
132132
int32_t srcLength = srcIdx - startIndex;
133-
NSString *src = [NSString stringWithCharacters: lpSrc + startIndex length: srcLength];
133+
NSString *src = [NSString stringWithCharacters: lpSrc + startIndex length: (NSUInteger)srcLength];
134134
NSString *dst = bToUpper ? src.uppercaseString : src.lowercaseString;
135135
int32_t index = 0;
136136
// iterate over all code points of a surrogate pair character
137137
while (index < srcLength)
138138
{
139139
// the dst.length > srcLength is to prevent code point expansions
140-
dstCodepoint = dst.length > srcLength ? [src characterAtIndex: index] : [dst characterAtIndex: index];
140+
dstCodepoint = (int32_t)dst.length > srcLength ? [src characterAtIndex: (NSUInteger)index] : [dst characterAtIndex: (NSUInteger)index];
141141
Append(lpDst, dstIdx, cwDstLength, dstCodepoint, isError);
142142
index++;
143143
}

src/native/libs/System.Globalization.Native/pal_collation.m

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
}
4040
else
4141
{
42-
NSString *locName = [NSString stringWithCharacters: localeName length: lNameLength];
42+
NSString *locName = [NSString stringWithCharacters: localeName length: (NSUInteger)lNameLength];
4343
currentLocale = [NSLocale localeWithLocaleIdentifier:locName];
4444
}
4545
return currentLocale;
@@ -90,9 +90,9 @@ int32_t GlobalizationNative_CompareStringNative(const uint16_t* localeName, int3
9090
if (!IsComparisonOptionSupported(comparisonOptions))
9191
return ERROR_COMPARISON_OPTIONS_NOT_FOUND;
9292
NSLocale *currentLocale = GetCurrentLocale(localeName, lNameLength);
93-
NSString *sourceString = [NSString stringWithCharacters: lpSource length: cwSourceLength];
93+
NSString *sourceString = [NSString stringWithCharacters: lpSource length: (NSUInteger)cwSourceLength];
9494
NSString *sourceStrPrecomposed = sourceString.precomposedStringWithCanonicalMapping;
95-
NSString *targetString = [NSString stringWithCharacters: lpTarget length: cwTargetLength];
95+
NSString *targetString = [NSString stringWithCharacters: lpTarget length: (NSUInteger)cwTargetLength];
9696
NSString *targetStrPrecomposed = targetString.precomposedStringWithCanonicalMapping;
9797

9898
if (comparisonOptions & IgnoreKanaType)
@@ -110,7 +110,7 @@ int32_t GlobalizationNative_CompareStringNative(const uint16_t* localeName, int3
110110

111111
NSStringCompareOptions options = ConvertFromCompareOptionsToNSStringCompareOptions(comparisonOptions, true);
112112
NSRange comparisonRange = NSMakeRange(0, sourceStrPrecomposed.length);
113-
return [sourceStrPrecomposed compare:targetStrPrecomposed
113+
return (int32_t)[sourceStrPrecomposed compare:targetStrPrecomposed
114114
options:options
115115
range:comparisonRange
116116
locale:currentLocale];
@@ -158,9 +158,9 @@ Range GlobalizationNative_IndexOfNative(const uint16_t* localeName, int32_t lNam
158158
return result;
159159
}
160160
NSStringCompareOptions options = ConvertFromCompareOptionsToNSStringCompareOptions(comparisonOptions, true);
161-
NSString *searchString = [NSString stringWithCharacters: lpTarget length: cwTargetLength];
161+
NSString *searchString = [NSString stringWithCharacters: lpTarget length: (NSUInteger)cwTargetLength];
162162
NSString *searchStrCleaned = RemoveWeightlessCharacters(searchString);
163-
NSString *sourceString = [NSString stringWithCharacters: lpSource length: cwSourceLength];
163+
NSString *sourceString = [NSString stringWithCharacters: lpSource length: (NSUInteger)cwSourceLength];
164164
NSString *sourceStrCleaned = RemoveWeightlessCharacters(sourceString);
165165
if (comparisonOptions & IgnoreKanaType)
166166
{
@@ -170,7 +170,7 @@ Range GlobalizationNative_IndexOfNative(const uint16_t* localeName, int32_t lNam
170170

171171
if (sourceStrCleaned.length == 0 || searchStrCleaned.length == 0)
172172
{
173-
result.location = fromBeginning ? 0 : sourceString.length;
173+
result.location = fromBeginning ? 0 : (int32_t)sourceString.length;
174174
return result;
175175
}
176176

@@ -204,8 +204,8 @@ Range GlobalizationNative_IndexOfNative(const uint16_t* localeName, int32_t lNam
204204

205205
if (nsRange.location != NSNotFound)
206206
{
207-
result.location = nsRange.location;
208-
result.length = nsRange.length;
207+
result.location = (int32_t)nsRange.location;
208+
result.length = (int32_t)nsRange.length;
209209
// in case of CompareOptions.IgnoreCase if letters have different representations in source and search strings
210210
// and case insensitive search appears more than one time in source string take last index for LastIndexOf and first index for IndexOf
211211
// e.g. new CultureInfo().CompareInfo.LastIndexOf("Is \u0055\u0308 or \u0075\u0308 the same as \u00DC or \u00FC?", "U\u0308", 25,18, CompareOptions.IgnoreCase);
@@ -230,8 +230,8 @@ Range GlobalizationNative_IndexOfNative(const uint16_t* localeName, int32_t lNam
230230
if ((comparisonOptions & IgnoreCase) && IsIndexFound(fromBeginning, (int32_t)result.location, (int32_t)precomposedRange.location))
231231
return result;
232232

233-
result.location = precomposedRange.location;
234-
result.length = precomposedRange.length;
233+
result.location = (int32_t)precomposedRange.location;
234+
result.length = (int32_t)precomposedRange.length;
235235
if (!(comparisonOptions & IgnoreCase))
236236
return result;
237237
}
@@ -249,8 +249,8 @@ Range GlobalizationNative_IndexOfNative(const uint16_t* localeName, int32_t lNam
249249
if ((comparisonOptions & IgnoreCase) && IsIndexFound(fromBeginning, (int32_t)result.location, (int32_t)decomposedRange.location))
250250
return result;
251251

252-
result.location = decomposedRange.location;
253-
result.length = decomposedRange.length;
252+
result.location = (int32_t)decomposedRange.location;
253+
result.length = (int32_t)decomposedRange.length;
254254
return result;
255255
}
256256

@@ -270,9 +270,9 @@ int32_t GlobalizationNative_StartsWithNative(const uint16_t* localeName, int32_t
270270
return ERROR_COMPARISON_OPTIONS_NOT_FOUND;
271271
NSStringCompareOptions options = ConvertFromCompareOptionsToNSStringCompareOptions(comparisonOptions, true);
272272
NSLocale *currentLocale = GetCurrentLocale(localeName, lNameLength);
273-
NSString *prefixString = [NSString stringWithCharacters: lpPrefix length: cwPrefixLength];
273+
NSString *prefixString = [NSString stringWithCharacters: lpPrefix length: (NSUInteger)cwPrefixLength];
274274
NSString *prefixStrComposed = RemoveWeightlessCharacters(prefixString.precomposedStringWithCanonicalMapping);
275-
NSString *sourceString = [NSString stringWithCharacters: lpSource length: cwSourceLength];
275+
NSString *sourceString = [NSString stringWithCharacters: lpSource length: (NSUInteger)cwSourceLength];
276276
NSString *sourceStrComposed = RemoveWeightlessCharacters(sourceString.precomposedStringWithCanonicalMapping);
277277
if (comparisonOptions & IgnoreKanaType)
278278
{
@@ -282,7 +282,7 @@ int32_t GlobalizationNative_StartsWithNative(const uint16_t* localeName, int32_t
282282

283283
NSRange sourceRange = NSMakeRange(0, prefixStrComposed.length > sourceStrComposed.length ? sourceStrComposed.length : prefixStrComposed.length);
284284

285-
int32_t result = [sourceStrComposed compare:prefixStrComposed
285+
int32_t result = (int32_t)[sourceStrComposed compare:prefixStrComposed
286286
options:options
287287
range:sourceRange
288288
locale:currentLocale];
@@ -302,19 +302,19 @@ int32_t GlobalizationNative_EndsWithNative(const uint16_t* localeName, int32_t l
302302
return ERROR_COMPARISON_OPTIONS_NOT_FOUND;
303303
NSStringCompareOptions options = ConvertFromCompareOptionsToNSStringCompareOptions(comparisonOptions, true);
304304
NSLocale *currentLocale = GetCurrentLocale(localeName, lNameLength);
305-
NSString *suffixString = [NSString stringWithCharacters: lpSuffix length: cwSuffixLength];
305+
NSString *suffixString = [NSString stringWithCharacters: lpSuffix length: (NSUInteger)cwSuffixLength];
306306
NSString *suffixStrComposed = RemoveWeightlessCharacters(suffixString.precomposedStringWithCanonicalMapping);
307-
NSString *sourceString = [NSString stringWithCharacters: lpSource length: cwSourceLength];
307+
NSString *sourceString = [NSString stringWithCharacters: lpSource length: (NSUInteger)cwSourceLength];
308308
NSString *sourceStrComposed = RemoveWeightlessCharacters(sourceString.precomposedStringWithCanonicalMapping);
309309
if (comparisonOptions & IgnoreKanaType)
310310
{
311311
suffixStrComposed = ConvertToKatakana(suffixStrComposed);
312312
sourceStrComposed = ConvertToKatakana(sourceStrComposed);
313313
}
314-
int32_t startIndex = suffixStrComposed.length > sourceStrComposed.length ? 0 : sourceStrComposed.length - suffixStrComposed.length;
314+
NSUInteger startIndex = suffixStrComposed.length > sourceStrComposed.length ? 0 : sourceStrComposed.length - suffixStrComposed.length;
315315
NSRange sourceRange = NSMakeRange(startIndex, sourceStrComposed.length - startIndex);
316316

317-
int32_t result = [sourceStrComposed compare:suffixStrComposed
317+
int32_t result = (int32_t)[sourceStrComposed compare:suffixStrComposed
318318
options:options
319319
range:sourceRange
320320
locale:currentLocale];
@@ -334,7 +334,7 @@ int32_t GlobalizationNative_GetSortKeyNative(const uint16_t* localeName, int32_t
334334
}
335335
if (!IsComparisonOptionSupported(options))
336336
return 0;
337-
NSString *sourceString = [NSString stringWithCharacters: lpStr length: cwStrLength];
337+
NSString *sourceString = [NSString stringWithCharacters: lpStr length: (NSUInteger)cwStrLength];
338338
if (options & IgnoreKanaType)
339339
{
340340
sourceString = ConvertToKatakana(sourceString);
@@ -363,6 +363,7 @@ int32_t GlobalizationNative_GetSortKeyNative(const uint16_t* localeName, int32_t
363363
if (result)
364364
return (int32_t)usedLength;
365365

366+
(void)cbSortKeyLength; // ignore unused parameter
366367
return 0;
367368
}
368369
}

0 commit comments

Comments
 (0)