From 97f92edab1d0096479113565b79205cde11de202 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Tue, 29 Aug 2023 16:52:48 +0000 Subject: [PATCH] Updated Rector to commit 6424bae725296eb72307e5f4902715ea41dad3ba https://github.com/rectorphp/rector-src/commit/6424bae725296eb72307e5f4902715ea41dad3ba [TypeDeclaration] Using ClassMethodReturnTypeOverrideGuard on ReturnTypeFromStrictParamRector (#4878) --- .../ClassMethodReturnTypeOverrideGuard.php | 2 +- .../ReturnTypeFromStrictParamRector.php | 23 ++++++++----------- src/Application/VersionResolver.php | 4 ++-- vendor/autoload.php | 2 +- vendor/composer/autoload_real.php | 10 ++++---- vendor/composer/autoload_static.php | 8 +++---- 6 files changed, 22 insertions(+), 27 deletions(-) diff --git a/packages/VendorLocker/NodeVendorLocker/ClassMethodReturnTypeOverrideGuard.php b/packages/VendorLocker/NodeVendorLocker/ClassMethodReturnTypeOverrideGuard.php index cd0415005b3..51529ddb9fc 100644 --- a/packages/VendorLocker/NodeVendorLocker/ClassMethodReturnTypeOverrideGuard.php +++ b/packages/VendorLocker/NodeVendorLocker/ClassMethodReturnTypeOverrideGuard.php @@ -136,7 +136,7 @@ final class ClassMethodReturnTypeOverrideGuard $parentClassMethodReflection = $this->parentClassMethodTypeOverrideGuard->getParentClassMethod($classMethod); // nothing to check if (!$parentClassMethodReflection instanceof MethodReflection) { - return \true; + return !$this->parentClassMethodTypeOverrideGuard->hasParentClassMethod($classMethod); } $parametersAcceptor = ParametersAcceptorSelectorVariantsWrapper::select($parentClassMethodReflection, $classMethod, $scope); if ($parametersAcceptor instanceof FunctionVariantWithPhpDocs && !$parametersAcceptor->getNativeReturnType() instanceof MixedType) { diff --git a/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictParamRector.php b/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictParamRector.php index f0131d54699..9274b11f8d0 100644 --- a/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictParamRector.php +++ b/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictParamRector.php @@ -24,7 +24,7 @@ use PHPStan\Type\UnionType; use Rector\Core\Rector\AbstractScopeAwareRector; use Rector\Core\ValueObject\PhpVersionFeature; use Rector\TypeDeclaration\TypeInferer\ReturnTypeInferer; -use Rector\VendorLocker\ParentClassMethodTypeOverrideGuard; +use Rector\VendorLocker\NodeVendorLocker\ClassMethodReturnTypeOverrideGuard; use Rector\VersionBonding\Contract\MinPhpVersionInterface; use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample; use Symplify\RuleDocGenerator\ValueObject\RuleDefinition; @@ -35,17 +35,17 @@ final class ReturnTypeFromStrictParamRector extends AbstractScopeAwareRector imp { /** * @readonly - * @var \Rector\VendorLocker\ParentClassMethodTypeOverrideGuard + * @var \Rector\VendorLocker\NodeVendorLocker\ClassMethodReturnTypeOverrideGuard */ - private $parentClassMethodTypeOverrideGuard; + private $classMethodReturnTypeOverrideGuard; /** * @readonly * @var \Rector\TypeDeclaration\TypeInferer\ReturnTypeInferer */ private $returnTypeInferer; - public function __construct(ParentClassMethodTypeOverrideGuard $parentClassMethodTypeOverrideGuard, ReturnTypeInferer $returnTypeInferer) + public function __construct(ClassMethodReturnTypeOverrideGuard $classMethodReturnTypeOverrideGuard, ReturnTypeInferer $returnTypeInferer) { - $this->parentClassMethodTypeOverrideGuard = $parentClassMethodTypeOverrideGuard; + $this->classMethodReturnTypeOverrideGuard = $classMethodReturnTypeOverrideGuard; $this->returnTypeInferer = $returnTypeInferer; } public function getRuleDefinition() : RuleDefinition @@ -89,7 +89,7 @@ CODE_SAMPLE if ($node->stmts === null) { return null; } - if ($this->shouldSkipNode($node)) { + if ($this->shouldSkipNode($node, $scope)) { return null; } $return = $this->findCurrentScopeReturn($node->stmts); @@ -171,18 +171,13 @@ CODE_SAMPLE /** * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_|\PhpParser\Node\Expr\Closure $node */ - private function shouldSkipNode($node) : bool + private function shouldSkipNode($node, Scope $scope) : bool { if ($node->returnType !== null) { return \true; } - if ($node instanceof ClassMethod) { - if ($this->parentClassMethodTypeOverrideGuard->hasParentClassMethod($node)) { - return \true; - } - if ($node->isMagic()) { - return \true; - } + if ($node instanceof ClassMethod && $this->classMethodReturnTypeOverrideGuard->shouldSkipClassMethod($node, $scope)) { + return \true; } $returnType = $this->returnTypeInferer->inferFunctionLike($node); if ($returnType instanceof MixedType) { diff --git a/src/Application/VersionResolver.php b/src/Application/VersionResolver.php index ebe594b4b2a..0637d372027 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 = 'ea2252a374c5ce46f6a19f93649aef43634ff997'; + public const PACKAGE_VERSION = '6424bae725296eb72307e5f4902715ea41dad3ba'; /** * @api * @var string */ - public const RELEASE_DATE = '2023-08-29 23:35:51'; + public const RELEASE_DATE = '2023-08-29 23:50:04'; /** * @var int */ diff --git a/vendor/autoload.php b/vendor/autoload.php index a9823000eda..c25187739db 100644 --- a/vendor/autoload.php +++ b/vendor/autoload.php @@ -22,4 +22,4 @@ if (PHP_VERSION_ID < 50600) { require_once __DIR__ . '/composer/autoload_real.php'; -return ComposerAutoloaderInit897956a1577aae52550f42eea19fea3c::getLoader(); +return ComposerAutoloaderInit21dbde0d9f3f9af9e1bd4144fa43d611::getLoader(); diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php index 59cda700e54..c708649e68f 100644 --- a/vendor/composer/autoload_real.php +++ b/vendor/composer/autoload_real.php @@ -2,7 +2,7 @@ // autoload_real.php @generated by Composer -class ComposerAutoloaderInit897956a1577aae52550f42eea19fea3c +class ComposerAutoloaderInit21dbde0d9f3f9af9e1bd4144fa43d611 { private static $loader; @@ -22,17 +22,17 @@ class ComposerAutoloaderInit897956a1577aae52550f42eea19fea3c return self::$loader; } - spl_autoload_register(array('ComposerAutoloaderInit897956a1577aae52550f42eea19fea3c', 'loadClassLoader'), true, true); + spl_autoload_register(array('ComposerAutoloaderInit21dbde0d9f3f9af9e1bd4144fa43d611', 'loadClassLoader'), true, true); self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); - spl_autoload_unregister(array('ComposerAutoloaderInit897956a1577aae52550f42eea19fea3c', 'loadClassLoader')); + spl_autoload_unregister(array('ComposerAutoloaderInit21dbde0d9f3f9af9e1bd4144fa43d611', 'loadClassLoader')); require __DIR__ . '/autoload_static.php'; - call_user_func(\Composer\Autoload\ComposerStaticInit897956a1577aae52550f42eea19fea3c::getInitializer($loader)); + call_user_func(\Composer\Autoload\ComposerStaticInit21dbde0d9f3f9af9e1bd4144fa43d611::getInitializer($loader)); $loader->setClassMapAuthoritative(true); $loader->register(true); - $filesToLoad = \Composer\Autoload\ComposerStaticInit897956a1577aae52550f42eea19fea3c::$files; + $filesToLoad = \Composer\Autoload\ComposerStaticInit21dbde0d9f3f9af9e1bd4144fa43d611::$files; $requireFile = \Closure::bind(static function ($fileIdentifier, $file) { if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index 9122f0ec4e4..a5b0b6c50c5 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -4,7 +4,7 @@ namespace Composer\Autoload; -class ComposerStaticInit897956a1577aae52550f42eea19fea3c +class ComposerStaticInit21dbde0d9f3f9af9e1bd4144fa43d611 { public static $files = array ( 'ad155f8f1cf0d418fe49e248db8c661b' => __DIR__ . '/..' . '/react/promise/src/functions_include.php', @@ -2607,9 +2607,9 @@ class ComposerStaticInit897956a1577aae52550f42eea19fea3c public static function getInitializer(ClassLoader $loader) { return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInit897956a1577aae52550f42eea19fea3c::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInit897956a1577aae52550f42eea19fea3c::$prefixDirsPsr4; - $loader->classMap = ComposerStaticInit897956a1577aae52550f42eea19fea3c::$classMap; + $loader->prefixLengthsPsr4 = ComposerStaticInit21dbde0d9f3f9af9e1bd4144fa43d611::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInit21dbde0d9f3f9af9e1bd4144fa43d611::$prefixDirsPsr4; + $loader->classMap = ComposerStaticInit21dbde0d9f3f9af9e1bd4144fa43d611::$classMap; }, null, ClassLoader::class); }