diff --git a/rules-tests/Php81/Rector/FuncCall/NullToStrictStringFuncCallArgRector/Fixture/skip_array_of_strings_on_array_map.php.inc b/rules-tests/Php81/Rector/FuncCall/NullToStrictStringFuncCallArgRector/Fixture/skip_array_of_strings_on_array_map.php.inc new file mode 100644 index 00000000000..e6dd64e9ded --- /dev/null +++ b/rules-tests/Php81/Rector/FuncCall/NullToStrictStringFuncCallArgRector/Fixture/skip_array_of_strings_on_array_map.php.inc @@ -0,0 +1,19 @@ + + strtolower($part), + $parts + ) + ); + } +} diff --git a/rules-tests/TypeDeclaration/Rector/ArrowFunction/AddArrowFunctionReturnTypeRector/Fixture/return_by_array_shape_type.php.inc b/rules-tests/TypeDeclaration/Rector/ArrowFunction/AddArrowFunctionReturnTypeRector/Fixture/return_by_array_shape_type.php.inc new file mode 100644 index 00000000000..c26c1fe0509 --- /dev/null +++ b/rules-tests/TypeDeclaration/Rector/ArrowFunction/AddArrowFunctionReturnTypeRector/Fixture/return_by_array_shape_type.php.inc @@ -0,0 +1,33 @@ + $values + */ + private function foo(array $values): void + { + $bars = array_map(fn($value) => $value['bar'], $values); + } +} + +?> +----- + $values + */ + private function foo(array $values): void + { + $bars = array_map(fn($value): int => $value['bar'], $values); + } +} + +?> \ No newline at end of file diff --git a/rules/CodingStyle/Rector/Enum_/EnumCaseToPascalCaseRector.php b/rules/CodingStyle/Rector/Enum_/EnumCaseToPascalCaseRector.php index 93def346301..e3b48e80ded 100644 --- a/rules/CodingStyle/Rector/Enum_/EnumCaseToPascalCaseRector.php +++ b/rules/CodingStyle/Rector/Enum_/EnumCaseToPascalCaseRector.php @@ -208,9 +208,9 @@ private function convertToPascalCase(string $name): string fn ($part): string => // If part is all uppercase, convert to ucfirst(strtolower()) // If part is already mixed or PascalCase, keep as is except ucfirst - ctype_upper((string) $part) - ? ucfirst(strtolower((string) $part)) - : ucfirst((string) $part), + ctype_upper($part) + ? ucfirst(strtolower($part)) + : ucfirst($part), $parts ) ); diff --git a/rules/TypeDeclaration/Rector/FuncCall/AddArrowFunctionParamArrayWhereDimFetchRector.php b/rules/TypeDeclaration/Rector/FuncCall/AddArrowFunctionParamArrayWhereDimFetchRector.php index 58d691f303a..1fa3c45f010 100644 --- a/rules/TypeDeclaration/Rector/FuncCall/AddArrowFunctionParamArrayWhereDimFetchRector.php +++ b/rules/TypeDeclaration/Rector/FuncCall/AddArrowFunctionParamArrayWhereDimFetchRector.php @@ -12,7 +12,6 @@ use PhpParser\Node\Expr\Instanceof_; use PhpParser\Node\Expr\Variable; use PhpParser\Node\Identifier; -use PhpParser\Node\Scalar\String_; use PHPStan\Type\ArrayType; use Rector\PhpParser\Node\BetterNodeFinder; use Rector\Rector\AbstractRector; @@ -149,8 +148,7 @@ private function resolveDimFetchVariableNames(Closure|ArrowFunction $closureExpr if ($arrayDimFetch->var instanceof Variable) { $type = $this->nodeTypeResolver->getNativeType($arrayDimFetch->var); - // skip string values - if (! $arrayDimFetch->dim instanceof String_ && ($type->isString()->yes() || $type->isString()->maybe())) { + if ($type->isString()->yes()) { continue; } diff --git a/src/DependencyInjection/PHPStan/PHPStanContainerMemento.php b/src/DependencyInjection/PHPStan/PHPStanContainerMemento.php index 0edd4491c97..f130414c097 100644 --- a/src/DependencyInjection/PHPStan/PHPStanContainerMemento.php +++ b/src/DependencyInjection/PHPStan/PHPStanContainerMemento.php @@ -7,6 +7,7 @@ use PHPStan\DependencyInjection\MemoizingContainer; use PHPStan\DependencyInjection\Nette\NetteContainer; use PHPStan\Parser\AnonymousClassVisitor; +use PHPStan\Parser\ArrayMapArgVisitor; use PHPStan\Parser\RichParser; use PHPStan\Parser\VariadicFunctionsVisitor; use PHPStan\Parser\VariadicMethodsVisitor; @@ -42,6 +43,7 @@ public static function removeRichVisitors(RichParser $richParser): void $container->findServiceNamesByType(AnonymousClassVisitor::class)[0] => true, $container->findServiceNamesByType(VariadicFunctionsVisitor::class)[0] => true, $container->findServiceNamesByType(VariadicMethodsVisitor::class)[0] => true, + $container->findServiceNamesByType(ArrayMapArgVisitor::class)[0] => true, ]; $tags[RichParser::VISITOR_SERVICE_TAG] = $nodeVisitorsToKeep;