From d7097281ba7b8bbabf7ea3fe038f85db7c6fd266 Mon Sep 17 00:00:00 2001 From: Aleksandr Zhuravlev Date: Wed, 31 Aug 2022 21:02:20 +1200 Subject: [PATCH] trim(), ltrim(), rtrim() now keep lowercase string attribute --- stubs/CoreGenericFunctions.phpstub | 14 +++++++++++++- tests/FunctionCallTest.php | 27 +++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/stubs/CoreGenericFunctions.phpstub b/stubs/CoreGenericFunctions.phpstub index 720ba46e1d8..6cc5eec57a4 100644 --- a/stubs/CoreGenericFunctions.phpstub +++ b/stubs/CoreGenericFunctions.phpstub @@ -566,6 +566,12 @@ function strpos($haystack, $needle, int $offset = 0) : int {} /** * @psalm-pure * + * @return ( + * $string is class-string + * ? ($characters is '\\' ? class-string : string) + * : ($string is lowercase-string ? lowercase-string : string) + * ) + * * @psalm-flow ($string) -> return */ function trim(string $string, string $characters = " \t\n\r\0\x0B") : string {} @@ -573,7 +579,11 @@ function trim(string $string, string $characters = " \t\n\r\0\x0B") : string {} /** * @psalm-pure * - * @return ($string is class-string ? ($characters is '\\' ? class-string : string) : string) + * @return ( + * $string is class-string + * ? ($characters is '\\' ? class-string : string) + * : ($string is lowercase-string ? lowercase-string : string) + * ) * * @psalm-flow ($string) -> return */ @@ -582,6 +592,8 @@ function ltrim(string $string, string $characters = " \t\n\r\0\x0B") : string {} /** * @psalm-pure * + * @return ($string is lowercase-string ? lowercase-string : string) + * * @psalm-flow ($string) -> return */ function rtrim(string $string, string $characters = " \t\n\r\0\x0B") : string {} diff --git a/tests/FunctionCallTest.php b/tests/FunctionCallTest.php index 955cc9b13e3..be4f4c32b17 100644 --- a/tests/FunctionCallTest.php +++ b/tests/FunctionCallTest.php @@ -1785,6 +1785,33 @@ function sayHello(string $needle): void { [], '8.0', ], + 'trimSavesLowercaseAttribute' => [ + ' [ + '$b===' => 'lowercase-string', + ], + ], + 'ltrimSavesLowercaseAttribute' => [ + ' [ + '$b===' => 'lowercase-string', + ], + ], + 'rtrimSavesLowercaseAttribute' => [ + ' [ + '$b===' => 'lowercase-string', + ], + ], ]; }