From d32040ff25de17c3a84a8fb1e556501bf8a939a7 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Thu, 10 Aug 2023 11:45:09 +0700 Subject: [PATCH] [TypeDeclaration] Skip void type on caller on ReturnTypeFromStrictTypedCallRector (#4751) * [TypeDeclaration] Skip void type on ReturnTypeFromStrictTypedCallRector * [ci-review] Rector Rectify * Fixed :tada: * cs fix --------- Co-authored-by: GitHub Action --- .../RenameClassRector/config/configured_rule.php | 7 +++++-- .../Fixture/skip_void_type.php.inc | 15 +++++++++++++++ .../TypeAnalyzer/ReturnStrictTypeAnalyzer.php | 4 ++++ 3 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 rules-tests/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictTypedCallRector/Fixture/skip_void_type.php.inc diff --git a/rules-tests/Renaming/Rector/Name/RenameClassRector/config/configured_rule.php b/rules-tests/Renaming/Rector/Name/RenameClassRector/config/configured_rule.php index 39346d0d70f..6ce55b063fb 100644 --- a/rules-tests/Renaming/Rector/Name/RenameClassRector/config/configured_rule.php +++ b/rules-tests/Renaming/Rector/Name/RenameClassRector/config/configured_rule.php @@ -4,11 +4,14 @@ use Acme\Bar\DoNotUpdateExistingTargetNamespace; use Rector\Config\RectorConfig; + use Rector\Renaming\Rector\Name\RenameClassRector; use Rector\Tests\Renaming\Rector\Name\RenameClassRector\Fixture\DuplicatedClass; use Rector\Tests\Renaming\Rector\Name\RenameClassRector\Source\Contract\FirstInterface; use Rector\Tests\Renaming\Rector\Name\RenameClassRector\Source\Contract\SecondInterface; use Rector\Tests\Renaming\Rector\Name\RenameClassRector\Source\Contract\ThirdInterface; +use Rector\Tests\Renaming\Rector\Name\RenameClassRector\Source\InterfaceAndClass\SomeBasicDateTime; +use Rector\Tests\Renaming\Rector\Name\RenameClassRector\Source\InterfaceAndClass\SomeBasicDateTimeInterface; use Rector\Tests\Renaming\Rector\Name\RenameClassRector\Source\NewClass; use Rector\Tests\Renaming\Rector\Name\RenameClassRector\Source\NewClassWithoutTypo; use Rector\Tests\Renaming\Rector\Name\RenameClassRector\Source\OldClass; @@ -24,8 +27,8 @@ 'FqnizeNamespaced' => 'Abc\FqnizeNamespaced', OldClass::class => NewClass::class, // interface to class - \Rector\Tests\Renaming\Rector\Name\RenameClassRector\Source\InterfaceAndClass\SomeBasicDateTime::class => - \Rector\Tests\Renaming\Rector\Name\RenameClassRector\Source\InterfaceAndClass\SomeBasicDateTimeInterface::class, + SomeBasicDateTime::class => + SomeBasicDateTimeInterface::class, // test casing OldClassWithTypo::class => NewClassWithoutTypo::class, diff --git a/rules-tests/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictTypedCallRector/Fixture/skip_void_type.php.inc b/rules-tests/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictTypedCallRector/Fixture/skip_void_type.php.inc new file mode 100644 index 00000000000..32ac0ad9928 --- /dev/null +++ b/rules-tests/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictTypedCallRector/Fixture/skip_void_type.php.inc @@ -0,0 +1,15 @@ +execute(); + } + + private function execute(): void + { + } +} diff --git a/rules/TypeDeclaration/TypeAnalyzer/ReturnStrictTypeAnalyzer.php b/rules/TypeDeclaration/TypeAnalyzer/ReturnStrictTypeAnalyzer.php index 8f28cbac2ef..bab06acbe79 100644 --- a/rules/TypeDeclaration/TypeAnalyzer/ReturnStrictTypeAnalyzer.php +++ b/rules/TypeDeclaration/TypeAnalyzer/ReturnStrictTypeAnalyzer.php @@ -72,6 +72,10 @@ public function collectStrictReturnTypes(array $returns, Scope $scope): array return []; } + if ($returnNode instanceof Identifier && $returnNode->toString() === 'void') { + return []; + } + $returnedStrictTypeNodes[] = $returnNode; }