From cbdf74fadee48bc3cd64b6436ee842183d9b79d2 Mon Sep 17 00:00:00 2001 From: Brandon Olivares Date: Fri, 1 May 2026 21:43:44 -0400 Subject: [PATCH 1/2] Add @psalm-pure to count assertion methods Mark count(), minCount(), maxCount(), and countBetween() as pure so Psalm permits their use in pure contexts. --- src/Assert.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/Assert.php b/src/Assert.php index 9a484c8f..1275d22e 100644 --- a/src/Assert.php +++ b/src/Assert.php @@ -2178,6 +2178,8 @@ public static function validArrayKey(mixed $value, string|callable $message = '' } /** + * @psalm-pure + * * @param string|callable():string $message * * @throws InvalidArgumentException @@ -2201,6 +2203,8 @@ public static function count(mixed $array, mixed $number, string|callable $messa } /** + * @psalm-pure + * * @param string|callable():string $message * * @throws InvalidArgumentException @@ -2223,6 +2227,8 @@ public static function minCount(mixed $array, mixed $min, string|callable $messa } /** + * @psalm-pure + * * @param string|callable():string $message * * @throws InvalidArgumentException @@ -2245,6 +2251,8 @@ public static function maxCount(mixed $array, mixed $max, string|callable $messa } /** + * @psalm-pure + * * @param string|callable():string $message * * @throws InvalidArgumentException From 8669c5d44d6e033f8bfd52a774252c4c9bbb3cb0 Mon Sep 17 00:00:00 2001 From: Brandon Olivares Date: Sat, 2 May 2026 09:43:39 -0400 Subject: [PATCH 2/2] Regenerate mixin --- src/Mixin.php | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/Mixin.php b/src/Mixin.php index bab3889d..22a3321a 100644 --- a/src/Mixin.php +++ b/src/Mixin.php @@ -5139,6 +5139,8 @@ public static function allNullOrValidArrayKey(mixed $value, callable|string $mes } /** + * @psalm-pure + * * @param string|callable():string $message * * @return mixed @@ -5153,6 +5155,8 @@ public static function nullOrCount(mixed $array, mixed $number, callable|string } /** + * @psalm-pure + * * @param string|callable():string $message * * @return mixed @@ -5171,6 +5175,8 @@ public static function allCount(mixed $array, mixed $number, callable|string $me } /** + * @psalm-pure + * * @param string|callable():string $message * * @return mixed @@ -5189,6 +5195,8 @@ public static function allNullOrCount(mixed $array, mixed $number, callable|stri } /** + * @psalm-pure + * * @param string|callable():string $message * * @return mixed @@ -5203,6 +5211,8 @@ public static function nullOrMinCount(mixed $array, mixed $min, callable|string } /** + * @psalm-pure + * * @param string|callable():string $message * * @return mixed @@ -5221,6 +5231,8 @@ public static function allMinCount(mixed $array, mixed $min, callable|string $me } /** + * @psalm-pure + * * @param string|callable():string $message * * @return mixed @@ -5239,6 +5251,8 @@ public static function allNullOrMinCount(mixed $array, mixed $min, callable|stri } /** + * @psalm-pure + * * @param string|callable():string $message * * @return mixed @@ -5253,6 +5267,8 @@ public static function nullOrMaxCount(mixed $array, mixed $max, callable|string } /** + * @psalm-pure + * * @param string|callable():string $message * * @return mixed @@ -5271,6 +5287,8 @@ public static function allMaxCount(mixed $array, mixed $max, callable|string $me } /** + * @psalm-pure + * * @param string|callable():string $message * * @return mixed @@ -5289,6 +5307,8 @@ public static function allNullOrMaxCount(mixed $array, mixed $max, callable|stri } /** + * @psalm-pure + * * @param string|callable():string $message * * @return mixed @@ -5303,6 +5323,8 @@ public static function nullOrCountBetween(mixed $array, mixed $min, mixed $max, } /** + * @psalm-pure + * * @param string|callable():string $message * * @return mixed @@ -5321,6 +5343,8 @@ public static function allCountBetween(mixed $array, mixed $min, mixed $max, cal } /** + * @psalm-pure + * * @param string|callable():string $message * * @return mixed