diff --git a/rules-tests/TypeDeclaration/Rector/ArrowFunction/AddArrowFunctionReturnTypeRector/Fixture/skip_void_return.php.inc b/rules-tests/TypeDeclaration/Rector/ArrowFunction/AddArrowFunctionReturnTypeRector/Fixture/skip_void_return.php.inc new file mode 100644 index 00000000000..03e78363aa6 --- /dev/null +++ b/rules-tests/TypeDeclaration/Rector/ArrowFunction/AddArrowFunctionReturnTypeRector/Fixture/skip_void_return.php.inc @@ -0,0 +1,16 @@ + $this->doNohing($a); + } +} diff --git a/rules/TypeDeclaration/Rector/ArrowFunction/AddArrowFunctionReturnTypeRector.php b/rules/TypeDeclaration/Rector/ArrowFunction/AddArrowFunctionReturnTypeRector.php index 7d5f7126afa..6d89b3ee45e 100644 --- a/rules/TypeDeclaration/Rector/ArrowFunction/AddArrowFunctionReturnTypeRector.php +++ b/rules/TypeDeclaration/Rector/ArrowFunction/AddArrowFunctionReturnTypeRector.php @@ -6,6 +6,7 @@ use PhpParser\Node; use PhpParser\Node\Expr\ArrowFunction; +use PHPStan\Type\VoidType; use Rector\Core\Rector\AbstractRector; use Rector\Core\ValueObject\PhpVersionFeature; use Rector\PHPStanStaticTypeMapper\Enum\TypeKind; @@ -51,6 +52,11 @@ public function refactor(Node $node): ?Node } $type = $this->getType($node->expr); + + if ($type instanceof VoidType) { + return null; + } + $returnTypeNode = $this->staticTypeMapper->mapPHPStanTypeToPhpParserNode($type, TypeKind::RETURN); if ($returnTypeNode === null) {