From 741370570f7c41d216276c9127b05e941a0628cf Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Mon, 17 Jan 2022 11:11:59 +0000 Subject: [PATCH] Updated Rector to commit 7d7edc435c7c0fe95acd6c4c6bd31914c83f9aea https://github.com/rectorphp/rector-src/commit/7d7edc435c7c0fe95acd6c4c6bd31914c83f9aea Revert Fix /self docblock compare removed on on-final class, as it can refer to child this type (#1246) (#1669) --- .../ValueObject/RectorWithLineChange.php | 1 + .../TypeComparator/TypeComparator.php | 21 +++++++------------ src/Application/VersionResolver.php | 4 ++-- vendor/autoload.php | 2 +- vendor/composer/autoload_real.php | 14 ++++++------- vendor/composer/autoload_static.php | 8 +++---- vendor/scoper-autoload.php | 10 ++++----- 7 files changed, 27 insertions(+), 33 deletions(-) diff --git a/packages/ChangesReporting/ValueObject/RectorWithLineChange.php b/packages/ChangesReporting/ValueObject/RectorWithLineChange.php index c17f4255891..d481681094e 100644 --- a/packages/ChangesReporting/ValueObject/RectorWithLineChange.php +++ b/packages/ChangesReporting/ValueObject/RectorWithLineChange.php @@ -50,6 +50,7 @@ final class RectorWithLineChange implements \RectorPrefix20220117\Symplify\EasyP } /** * @param array $json + * @return $this */ public static function decode(array $json) : \RectorPrefix20220117\Symplify\EasyParallel\Contract\SerializableInterface { diff --git a/packages/NodeTypeResolver/TypeComparator/TypeComparator.php b/packages/NodeTypeResolver/TypeComparator/TypeComparator.php index e1f0bd935ea..032ff5d86a8 100644 --- a/packages/NodeTypeResolver/TypeComparator/TypeComparator.php +++ b/packages/NodeTypeResolver/TypeComparator/TypeComparator.php @@ -4,10 +4,8 @@ declare (strict_types=1); namespace Rector\NodeTypeResolver\TypeComparator; use PhpParser\Node; -use PHPStan\Analyser\Scope; use PHPStan\PhpDocParser\Ast\PhpDoc\ParamTagValueNode; use PHPStan\PhpDocParser\Ast\Type\TypeNode; -use PHPStan\Reflection\ClassReflection; use PHPStan\Type\ArrayType; use PHPStan\Type\BooleanType; use PHPStan\Type\Constant\ConstantBooleanType; @@ -22,7 +20,6 @@ use PHPStan\Type\Type; use PHPStan\Type\TypeTraverser; use PHPStan\Type\UnionType; use Rector\BetterPhpDocParser\ValueObject\PhpDocAttributeKey; -use Rector\NodeTypeResolver\Node\AttributeKey; use Rector\NodeTypeResolver\PHPStan\Type\TypeFactory; use Rector\NodeTypeResolver\PHPStan\TypeHasher; use Rector\StaticTypeMapper\StaticTypeMapper; @@ -230,16 +227,12 @@ final class TypeComparator } private function isThisTypeInFinalClass(\PHPStan\Type\Type $phpStanDocType, \PHPStan\Type\Type $phpParserNodeType, \PhpParser\Node $node) : bool { - // special case for non-final $this/self compare; in case of interface/abstract class, it can be another $this - if ($phpStanDocType instanceof \PHPStan\Type\ThisType && $phpParserNodeType instanceof \PHPStan\Type\ThisType) { - $scope = $node->getAttribute(\Rector\NodeTypeResolver\Node\AttributeKey::SCOPE); - if ($scope instanceof \PHPStan\Analyser\Scope) { - $classReflection = $scope->getClassReflection(); - if ($classReflection instanceof \PHPStan\Reflection\ClassReflection) { - return $classReflection->isFinal(); - } - } - } - return \true; + /** + * Special case for $this/(self|static) compare + * + * $this refers to the exact object identity, not just the same type. Therefore, it's valid and should not be removed + * @see https://wiki.php.net/rfc/this_return_type for more context + */ + return !($phpStanDocType instanceof \PHPStan\Type\ThisType && $phpParserNodeType instanceof \PHPStan\Type\StaticType); } } diff --git a/src/Application/VersionResolver.php b/src/Application/VersionResolver.php index 92399a43a16..6b5ccbc09b6 100644 --- a/src/Application/VersionResolver.php +++ b/src/Application/VersionResolver.php @@ -16,11 +16,11 @@ final class VersionResolver /** * @var string */ - public const PACKAGE_VERSION = '65c97a9eb9437bcc432fc6aab79604ad185d0299'; + public const PACKAGE_VERSION = '7d7edc435c7c0fe95acd6c4c6bd31914c83f9aea'; /** * @var string */ - public const RELEASE_DATE = '2022-01-17 11:12:07'; + public const RELEASE_DATE = '2022-01-17 18:04:43'; public static function resolvePackageVersion() : string { $process = new \RectorPrefix20220117\Symfony\Component\Process\Process(['git', 'log', '--pretty="%H"', '-n1', 'HEAD'], __DIR__); diff --git a/vendor/autoload.php b/vendor/autoload.php index 22e41deae82..5debc43ab79 100644 --- a/vendor/autoload.php +++ b/vendor/autoload.php @@ -4,4 +4,4 @@ require_once __DIR__ . '/composer/autoload_real.php'; -return ComposerAutoloaderInit9547ff6cdaa100988ae7e917f5492b78::getLoader(); +return ComposerAutoloaderInit81e22985df5c50b3b6f7475a70999719::getLoader(); diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php index 513f08b7a05..8e3dd03c77c 100644 --- a/vendor/composer/autoload_real.php +++ b/vendor/composer/autoload_real.php @@ -2,7 +2,7 @@ // autoload_real.php @generated by Composer -class ComposerAutoloaderInit9547ff6cdaa100988ae7e917f5492b78 +class ComposerAutoloaderInit81e22985df5c50b3b6f7475a70999719 { private static $loader; @@ -22,15 +22,15 @@ class ComposerAutoloaderInit9547ff6cdaa100988ae7e917f5492b78 return self::$loader; } - spl_autoload_register(array('ComposerAutoloaderInit9547ff6cdaa100988ae7e917f5492b78', 'loadClassLoader'), true, true); + spl_autoload_register(array('ComposerAutoloaderInit81e22985df5c50b3b6f7475a70999719', 'loadClassLoader'), true, true); self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__))); - spl_autoload_unregister(array('ComposerAutoloaderInit9547ff6cdaa100988ae7e917f5492b78', 'loadClassLoader')); + spl_autoload_unregister(array('ComposerAutoloaderInit81e22985df5c50b3b6f7475a70999719', 'loadClassLoader')); $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded()); if ($useStaticLoader) { require __DIR__ . '/autoload_static.php'; - call_user_func(\Composer\Autoload\ComposerStaticInit9547ff6cdaa100988ae7e917f5492b78::getInitializer($loader)); + call_user_func(\Composer\Autoload\ComposerStaticInit81e22985df5c50b3b6f7475a70999719::getInitializer($loader)); } else { $classMap = require __DIR__ . '/autoload_classmap.php'; if ($classMap) { @@ -42,12 +42,12 @@ class ComposerAutoloaderInit9547ff6cdaa100988ae7e917f5492b78 $loader->register(true); if ($useStaticLoader) { - $includeFiles = Composer\Autoload\ComposerStaticInit9547ff6cdaa100988ae7e917f5492b78::$files; + $includeFiles = Composer\Autoload\ComposerStaticInit81e22985df5c50b3b6f7475a70999719::$files; } else { $includeFiles = require __DIR__ . '/autoload_files.php'; } foreach ($includeFiles as $fileIdentifier => $file) { - composerRequire9547ff6cdaa100988ae7e917f5492b78($fileIdentifier, $file); + composerRequire81e22985df5c50b3b6f7475a70999719($fileIdentifier, $file); } return $loader; @@ -59,7 +59,7 @@ class ComposerAutoloaderInit9547ff6cdaa100988ae7e917f5492b78 * @param string $file * @return void */ -function composerRequire9547ff6cdaa100988ae7e917f5492b78($fileIdentifier, $file) +function composerRequire81e22985df5c50b3b6f7475a70999719($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 62ce700614c..f8fa2e84d66 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -4,7 +4,7 @@ namespace Composer\Autoload; -class ComposerStaticInit9547ff6cdaa100988ae7e917f5492b78 +class ComposerStaticInit81e22985df5c50b3b6f7475a70999719 { public static $files = array ( '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php', @@ -3867,9 +3867,9 @@ class ComposerStaticInit9547ff6cdaa100988ae7e917f5492b78 public static function getInitializer(ClassLoader $loader) { return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInit9547ff6cdaa100988ae7e917f5492b78::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInit9547ff6cdaa100988ae7e917f5492b78::$prefixDirsPsr4; - $loader->classMap = ComposerStaticInit9547ff6cdaa100988ae7e917f5492b78::$classMap; + $loader->prefixLengthsPsr4 = ComposerStaticInit81e22985df5c50b3b6f7475a70999719::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInit81e22985df5c50b3b6f7475a70999719::$prefixDirsPsr4; + $loader->classMap = ComposerStaticInit81e22985df5c50b3b6f7475a70999719::$classMap; }, null, ClassLoader::class); } diff --git a/vendor/scoper-autoload.php b/vendor/scoper-autoload.php index 9cbc5b34e7b..c9d336b17f6 100644 --- a/vendor/scoper-autoload.php +++ b/vendor/scoper-autoload.php @@ -9,8 +9,8 @@ $loader = require_once __DIR__.'/autoload.php'; if (!class_exists('AutoloadIncluder', false) && !interface_exists('AutoloadIncluder', false) && !trait_exists('AutoloadIncluder', false)) { spl_autoload_call('RectorPrefix20220117\AutoloadIncluder'); } -if (!class_exists('ComposerAutoloaderInit9547ff6cdaa100988ae7e917f5492b78', false) && !interface_exists('ComposerAutoloaderInit9547ff6cdaa100988ae7e917f5492b78', false) && !trait_exists('ComposerAutoloaderInit9547ff6cdaa100988ae7e917f5492b78', false)) { - spl_autoload_call('RectorPrefix20220117\ComposerAutoloaderInit9547ff6cdaa100988ae7e917f5492b78'); +if (!class_exists('ComposerAutoloaderInit81e22985df5c50b3b6f7475a70999719', false) && !interface_exists('ComposerAutoloaderInit81e22985df5c50b3b6f7475a70999719', false) && !trait_exists('ComposerAutoloaderInit81e22985df5c50b3b6f7475a70999719', false)) { + spl_autoload_call('RectorPrefix20220117\ComposerAutoloaderInit81e22985df5c50b3b6f7475a70999719'); } if (!class_exists('Helmich\TypoScriptParser\Parser\AST\Statement', false) && !interface_exists('Helmich\TypoScriptParser\Parser\AST\Statement', false) && !trait_exists('Helmich\TypoScriptParser\Parser\AST\Statement', false)) { spl_autoload_call('RectorPrefix20220117\Helmich\TypoScriptParser\Parser\AST\Statement'); @@ -71,9 +71,9 @@ if (!function_exists('print_node')) { return \RectorPrefix20220117\print_node(...func_get_args()); } } -if (!function_exists('composerRequire9547ff6cdaa100988ae7e917f5492b78')) { - function composerRequire9547ff6cdaa100988ae7e917f5492b78() { - return \RectorPrefix20220117\composerRequire9547ff6cdaa100988ae7e917f5492b78(...func_get_args()); +if (!function_exists('composerRequire81e22985df5c50b3b6f7475a70999719')) { + function composerRequire81e22985df5c50b3b6f7475a70999719() { + return \RectorPrefix20220117\composerRequire81e22985df5c50b3b6f7475a70999719(...func_get_args()); } } if (!function_exists('scanPath')) {