diff --git a/src/Type/Php/NonEmptyStringFunctionsReturnTypeExtension.php b/src/Type/Php/NonEmptyStringFunctionsReturnTypeExtension.php index 17d77f39e0..f4afe77ea8 100644 --- a/src/Type/Php/NonEmptyStringFunctionsReturnTypeExtension.php +++ b/src/Type/Php/NonEmptyStringFunctionsReturnTypeExtension.php @@ -17,6 +17,10 @@ class NonEmptyStringFunctionsReturnTypeExtension implements DynamicFunctionRetur public function isFunctionSupported(FunctionReflection $functionReflection): bool { return in_array($functionReflection->getName(), [ + 'addslashes', + 'addcslashes', + 'escapeshellarg', + 'escapeshellcmd', 'strtoupper', 'strtolower', 'mb_strtoupper', diff --git a/tests/PHPStan/Analyser/data/non-empty-string.php b/tests/PHPStan/Analyser/data/non-empty-string.php index a233259c5a..457229c9ba 100644 --- a/tests/PHPStan/Analyser/data/non-empty-string.php +++ b/tests/PHPStan/Analyser/data/non-empty-string.php @@ -305,6 +305,16 @@ class MoreNonEmptyStringFunctions */ public function doFoo(string $s, string $nonEmpty, int $i) { + assertType('string', addslashes($s)); + assertType('non-empty-string', addslashes($nonEmpty)); + assertType('string', addcslashes($s)); + assertType('non-empty-string', addcslashes($nonEmpty)); + + assertType('string', escapeshellarg($s)); + assertType('non-empty-string', escapeshellarg($nonEmpty)); + assertType('string', escapeshellcmd($s)); + assertType('non-empty-string', escapeshellcmd($nonEmpty)); + assertType('string', strtoupper($s)); assertType('non-empty-string', strtoupper($nonEmpty)); assertType('string', strtolower($s));