Skip to content

Commit d7407b2

Browse files
Fix the minLength/maxLength constraint checks on Darwin for nullables. (#27355)
This is the darwin-framework-tool equivalent of #27312 Also fixes a similar issue for minValue/maxValue.
1 parent c1581aa commit d7407b2

File tree

1 file changed

+40
-10
lines changed

1 file changed

+40
-10
lines changed

examples/darwin-framework-tool/commands/tests/TestCommandBridge.h

+40-10
Original file line numberDiff line numberDiff line change
@@ -396,25 +396,37 @@ class TestCommandBridge : public CHIPCommandBridge,
396396

397397
using ConstraintsChecker::CheckConstraintMinLength;
398398

399-
bool CheckConstraintMinLength(const char * _Nonnull itemName, NSString * _Nonnull current, uint64_t expected)
399+
bool CheckConstraintMinLength(const char * _Nonnull itemName, NSString * _Nullable current, uint64_t expected)
400400
{
401+
if (current == nil) {
402+
return true;
403+
}
401404
return CheckConstraintMinLength(itemName, [current length], expected);
402405
}
403406

404-
bool CheckConstraintMinLength(const char * _Nonnull itemName, NSArray * _Nonnull current, uint64_t expected)
407+
bool CheckConstraintMinLength(const char * _Nonnull itemName, NSArray * _Nullable current, uint64_t expected)
405408
{
409+
if (current == nil) {
410+
return true;
411+
}
406412
return CheckConstraintMinLength(itemName, [current count], expected);
407413
}
408414

409415
using ConstraintsChecker::CheckConstraintMaxLength;
410416

411-
bool CheckConstraintMaxLength(const char * _Nonnull itemName, NSString * _Nonnull current, uint64_t expected)
417+
bool CheckConstraintMaxLength(const char * _Nonnull itemName, NSString * _Nullable current, uint64_t expected)
412418
{
419+
if (current == nil) {
420+
return true;
421+
}
413422
return CheckConstraintMaxLength(itemName, [current length], expected);
414423
}
415424

416-
bool CheckConstraintMaxLength(const char * _Nonnull itemName, NSArray * _Nonnull current, uint64_t expected)
425+
bool CheckConstraintMaxLength(const char * _Nonnull itemName, NSArray * _Nullable current, uint64_t expected)
417426
{
427+
if (current == nil) {
428+
return true;
429+
}
418430
return CheckConstraintMaxLength(itemName, [current count], expected);
419431
}
420432

@@ -423,20 +435,29 @@ class TestCommandBridge : public CHIPCommandBridge,
423435
// Used when the minValue is a saved variable, since ConstraintsChecker does
424436
// not expect Core Foundation types.
425437
template <typename T, std::enable_if_t<std::is_integral<T>::value && std::is_signed<T>::value, int> = 0>
426-
bool CheckConstraintMinValue(const char * _Nonnull itemName, T current, const NSNumber * _Nonnull expected)
438+
bool CheckConstraintMinValue(const char * _Nonnull itemName, T current, const NSNumber * _Nullable expected)
427439
{
440+
if (expected == nil) {
441+
return true;
442+
}
428443
return ConstraintsChecker::CheckConstraintMinValue(itemName, current, [expected longLongValue]);
429444
}
430445

431446
template <typename T, std::enable_if_t<std::is_integral<T>::value && !std::is_signed<T>::value, int> = 0>
432-
bool CheckConstraintMinValue(const char * _Nonnull itemName, T current, const NSNumber * _Nonnull expected)
447+
bool CheckConstraintMinValue(const char * _Nonnull itemName, T current, const NSNumber * _Nullable expected)
433448
{
449+
if (expected == nil) {
450+
return true;
451+
}
434452
return ConstraintsChecker::CheckConstraintMinValue(itemName, current, [expected unsignedLongLongValue]);
435453
}
436454

437455
template <typename T, std::enable_if_t<std::is_floating_point<T>::value, int> = 0>
438-
bool CheckConstraintMinValue(const char * _Nonnull itemName, T current, const NSNumber * _Nonnull expected)
456+
bool CheckConstraintMinValue(const char * _Nonnull itemName, T current, const NSNumber * _Nullable expected)
439457
{
458+
if (expected == nil) {
459+
return true;
460+
}
440461
return ConstraintsChecker::CheckConstraintMinValue(itemName, current, [expected doubleValue]);
441462
}
442463

@@ -445,20 +466,29 @@ class TestCommandBridge : public CHIPCommandBridge,
445466
// Used when the maxValue is a saved variable, since ConstraintsChecker does
446467
// not expect Core Foundation types.
447468
template <typename T, std::enable_if_t<std::is_integral<T>::value && std::is_signed<T>::value, int> = 0>
448-
bool CheckConstraintMaxValue(const char * _Nonnull itemName, T current, const NSNumber * _Nonnull expected)
469+
bool CheckConstraintMaxValue(const char * _Nonnull itemName, T current, const NSNumber * _Nullable expected)
449470
{
471+
if (expected == nil) {
472+
return true;
473+
}
450474
return ConstraintsChecker::CheckConstraintMaxValue(itemName, current, [expected longLongValue]);
451475
}
452476

453477
template <typename T, std::enable_if_t<std::is_integral<T>::value && !std::is_signed<T>::value, int> = 0>
454-
bool CheckConstraintMaxValue(const char * _Nonnull itemName, T current, const NSNumber * _Nonnull expected)
478+
bool CheckConstraintMaxValue(const char * _Nonnull itemName, T current, const NSNumber * _Nullable expected)
455479
{
480+
if (expected == nil) {
481+
return true;
482+
}
456483
return ConstraintsChecker::CheckConstraintMaxValue(itemName, current, [expected unsignedLongLongValue]);
457484
}
458485

459486
template <typename T, std::enable_if_t<std::is_floating_point<T>::value, int> = 0>
460-
bool CheckConstraintMaxValue(const char * _Nonnull itemName, T current, const NSNumber * _Nonnull expected)
487+
bool CheckConstraintMaxValue(const char * _Nonnull itemName, T current, const NSNumber * _Nullable expected)
461488
{
489+
if (expected == nil) {
490+
return true;
491+
}
462492
return ConstraintsChecker::CheckConstraintMaxValue(itemName, current, [expected doubleValue]);
463493
}
464494

0 commit comments

Comments
 (0)