diff --git a/src/Type/Php/NonEmptyStringFunctionsReturnTypeExtension.php b/src/Type/Php/NonEmptyStringFunctionsReturnTypeExtension.php index 893627aae2..6933beb828 100644 --- a/src/Type/Php/NonEmptyStringFunctionsReturnTypeExtension.php +++ b/src/Type/Php/NonEmptyStringFunctionsReturnTypeExtension.php @@ -34,6 +34,7 @@ public function isFunctionSupported(FunctionReflection $functionReflection): boo 'preg_quote', 'rawurlencode', 'rawurldecode', + 'strrev', ], true); } diff --git a/tests/PHPStan/Analyser/nsrt/non-empty-string.php b/tests/PHPStan/Analyser/nsrt/non-empty-string.php index c8031310ae..a48f93c88b 100644 --- a/tests/PHPStan/Analyser/nsrt/non-empty-string.php +++ b/tests/PHPStan/Analyser/nsrt/non-empty-string.php @@ -359,6 +359,9 @@ public function doFoo(string $s, string $nonEmpty, string $nonFalsy, int $i, boo assertType('string', preg_quote($s)); assertType('non-empty-string', preg_quote($nonEmpty)); + assertType('string', strrev($s)); + assertType('non-empty-string', strrev($nonEmpty)); + assertType('string', sprintf($s)); assertType('string', sprintf($nonEmpty)); assertType('string', sprintf($s, $nonEmpty)); diff --git a/tests/PHPStan/Analyser/nsrt/non-falsy-string.php b/tests/PHPStan/Analyser/nsrt/non-falsy-string.php index cef87c8ac4..b287388234 100644 --- a/tests/PHPStan/Analyser/nsrt/non-falsy-string.php +++ b/tests/PHPStan/Analyser/nsrt/non-falsy-string.php @@ -110,6 +110,9 @@ function stringFunctions(string $s, $nonFalsey, $arrayOfNonFalsey, $nonEmptyArra assertType('non-falsy-string', preg_quote($nonFalsey)); + assertType('string', strrev($s)); + assertType('non-falsy-string', strrev($nonFalsey)); + assertType('string', sprintf($nonFalsey)); assertType("'foo'", sprintf('foo')); assertType("string", sprintf(...$arr));