From 649f0f5ffb1874fd285d1ec17e28fb658d2a8b3f Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Fri, 6 Oct 2023 09:33:45 +0000 Subject: [PATCH] Updated Rector to commit caf08c4efa0c3351a9d899e568ded816bacd1993 https://github.com/rectorphp/rector-src/commit/caf08c4efa0c3351a9d899e568ded816bacd1993 Skip `__construct()` in BoolReturnTypeFromStrictScalarReturnsRector (#5133) --- ...eturnTypeFromStrictScalarReturnsRector.php | 32 ++++++++++++++++--- src/Application/VersionResolver.php | 4 +-- 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/rules/TypeDeclaration/Rector/ClassMethod/BoolReturnTypeFromStrictScalarReturnsRector.php b/rules/TypeDeclaration/Rector/ClassMethod/BoolReturnTypeFromStrictScalarReturnsRector.php index 0e6bd3681e5..039beca18ce 100644 --- a/rules/TypeDeclaration/Rector/ClassMethod/BoolReturnTypeFromStrictScalarReturnsRector.php +++ b/rules/TypeDeclaration/Rector/ClassMethod/BoolReturnTypeFromStrictScalarReturnsRector.php @@ -26,16 +26,19 @@ use PHPStan\Reflection\ReflectionProvider; use PHPStan\Type\BooleanType; use Rector\Core\PhpParser\Node\BetterNodeFinder; use Rector\Core\PhpParser\Node\Value\ValueResolver; -use Rector\Core\Rector\AbstractRector; +use PHPStan\Analyser\Scope; +use Rector\Core\Rector\AbstractScopeAwareRector; +use Rector\Core\ValueObject\MethodName; use Rector\Core\ValueObject\PhpVersionFeature; use Rector\TypeDeclaration\NodeAnalyzer\ReturnAnalyzer; +use Rector\VendorLocker\NodeVendorLocker\ClassMethodReturnTypeOverrideGuard; use Rector\VersionBonding\Contract\MinPhpVersionInterface; use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample; use Symplify\RuleDocGenerator\ValueObject\RuleDefinition; /** * @see \Rector\Tests\TypeDeclaration\Rector\ClassMethod\BoolReturnTypeFromStrictScalarReturnsRector\BoolReturnTypeFromStrictScalarReturnsRectorTest */ -final class BoolReturnTypeFromStrictScalarReturnsRector extends AbstractRector implements MinPhpVersionInterface +final class BoolReturnTypeFromStrictScalarReturnsRector extends AbstractScopeAwareRector implements MinPhpVersionInterface { /** * @readonly @@ -57,12 +60,18 @@ final class BoolReturnTypeFromStrictScalarReturnsRector extends AbstractRector i * @var \Rector\Core\PhpParser\Node\BetterNodeFinder */ private $betterNodeFinder; - public function __construct(ReturnAnalyzer $returnAnalyzer, ReflectionProvider $reflectionProvider, ValueResolver $valueResolver, BetterNodeFinder $betterNodeFinder) + /** + * @readonly + * @var \Rector\VendorLocker\NodeVendorLocker\ClassMethodReturnTypeOverrideGuard + */ + private $classMethodReturnTypeOverrideGuard; + public function __construct(ReturnAnalyzer $returnAnalyzer, ReflectionProvider $reflectionProvider, ValueResolver $valueResolver, BetterNodeFinder $betterNodeFinder, ClassMethodReturnTypeOverrideGuard $classMethodReturnTypeOverrideGuard) { $this->returnAnalyzer = $returnAnalyzer; $this->reflectionProvider = $reflectionProvider; $this->valueResolver = $valueResolver; $this->betterNodeFinder = $betterNodeFinder; + $this->classMethodReturnTypeOverrideGuard = $classMethodReturnTypeOverrideGuard; } public function getRuleDefinition() : RuleDefinition { @@ -104,9 +113,9 @@ CODE_SAMPLE /** * @param ClassMethod|Function_|Closure $node */ - public function refactor(Node $node) : ?Node + public function refactorWithScope(Node $node, Scope $scope) : ?Node { - if ($node->returnType instanceof Node) { + if ($this->shouldSkip($node, $scope)) { return null; } $returns = $this->betterNodeFinder->findInstancesOfInFunctionLikeScoped($node, Return_::class); @@ -116,6 +125,19 @@ CODE_SAMPLE $node->returnType = new Identifier('bool'); return $node; } + /** + * @param ClassMethod|Function_|Closure $node + */ + private function shouldSkip(Node $node, Scope $scope) : bool + { + if ($node->returnType instanceof Node) { + return \true; + } + if ($node instanceof ClassMethod && $this->classMethodReturnTypeOverrideGuard->shouldSkipClassMethod($node, $scope)) { + return \true; + } + return \false; + } public function provideMinPhpVersion() : int { return PhpVersionFeature::SCALAR_TYPES; diff --git a/src/Application/VersionResolver.php b/src/Application/VersionResolver.php index aa9e7998fc9..59cc78dccbd 100644 --- a/src/Application/VersionResolver.php +++ b/src/Application/VersionResolver.php @@ -19,12 +19,12 @@ final class VersionResolver * @api * @var string */ - public const PACKAGE_VERSION = '8179073d77b744e70404ec57a02ac730a877516a'; + public const PACKAGE_VERSION = 'caf08c4efa0c3351a9d899e568ded816bacd1993'; /** * @api * @var string */ - public const RELEASE_DATE = '2023-10-06 15:48:02'; + public const RELEASE_DATE = '2023-10-06 16:30:14'; /** * @var int */