From b30224c24941050f8f7c2517a1a97761c169950b Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Mon, 26 Jun 2023 18:07:52 +0000 Subject: [PATCH] Updated Rector to commit d50368339398499bb767e80634a4987577c44df5 https://github.com/rectorphp/rector-src/commit/d50368339398499bb767e80634a4987577c44df5 [NodeCollector] Remove parent attribute usage on ArrayCallableMethodMatcher (#4354) --- .../ArrayCallableMethodMatcher.php | 22 +++--------- .../NodeTypeResolver/Node/AttributeKey.php | 4 +++ .../Scope/NodeVisitor/ArgNodeVisitor.php | 36 +++++++++++++++++++ src/Application/VersionResolver.php | 4 +-- vendor/autoload.php | 2 +- vendor/composer/autoload_classmap.php | 1 + vendor/composer/autoload_real.php | 10 +++--- vendor/composer/autoload_static.php | 9 ++--- 8 files changed, 58 insertions(+), 30 deletions(-) create mode 100644 packages/NodeTypeResolver/PHPStan/Scope/NodeVisitor/ArgNodeVisitor.php diff --git a/packages/NodeCollector/NodeAnalyzer/ArrayCallableMethodMatcher.php b/packages/NodeCollector/NodeAnalyzer/ArrayCallableMethodMatcher.php index d34109e4acb..bb60b2b34dd 100644 --- a/packages/NodeCollector/NodeAnalyzer/ArrayCallableMethodMatcher.php +++ b/packages/NodeCollector/NodeAnalyzer/ArrayCallableMethodMatcher.php @@ -3,12 +3,10 @@ declare (strict_types=1); namespace Rector\NodeCollector\NodeAnalyzer; -use PhpParser\Node\Arg; use PhpParser\Node\Expr; use PhpParser\Node\Expr\Array_; use PhpParser\Node\Expr\ArrayItem; use PhpParser\Node\Expr\ClassConstFetch; -use PhpParser\Node\Expr\FuncCall; use PhpParser\Node\Scalar\String_; use PHPStan\Analyser\Scope; use PHPStan\Reflection\ClassReflection; @@ -25,16 +23,10 @@ use Rector\Core\Reflection\ReflectionResolver; use Rector\Core\ValueObject\MethodName; use Rector\NodeCollector\ValueObject\ArrayCallable; use Rector\NodeCollector\ValueObject\ArrayCallableDynamicMethod; -use Rector\NodeNameResolver\NodeNameResolver; use Rector\NodeTypeResolver\Node\AttributeKey; use Rector\NodeTypeResolver\NodeTypeResolver; final class ArrayCallableMethodMatcher { - /** - * @readonly - * @var \Rector\NodeNameResolver\NodeNameResolver - */ - private $nodeNameResolver; /** * @readonly * @var \Rector\NodeTypeResolver\NodeTypeResolver @@ -55,9 +47,8 @@ final class ArrayCallableMethodMatcher * @var \Rector\Core\Reflection\ReflectionResolver */ private $reflectionResolver; - public function __construct(NodeNameResolver $nodeNameResolver, NodeTypeResolver $nodeTypeResolver, ValueResolver $valueResolver, ReflectionProvider $reflectionProvider, ReflectionResolver $reflectionResolver) + public function __construct(NodeTypeResolver $nodeTypeResolver, ValueResolver $valueResolver, ReflectionProvider $reflectionProvider, ReflectionResolver $reflectionResolver) { - $this->nodeNameResolver = $nodeNameResolver; $this->nodeTypeResolver = $nodeTypeResolver; $this->valueResolver = $valueResolver; $this->reflectionProvider = $reflectionProvider; @@ -137,16 +128,11 @@ final class ArrayCallableMethodMatcher */ private function isCallbackAtFunctionNames(Array_ $array, array $functionNames) : bool { - if ($array->getAttribute(AttributeKey::IS_ARG_VALUE) !== \true) { + $fromFuncCallName = $array->getAttribute(AttributeKey::FROM_FUNC_CALL_NAME); + if ($fromFuncCallName === null) { return \false; } - /** @var Arg $parentNode */ - $parentNode = $array->getAttribute(AttributeKey::PARENT_NODE); - $parentParentNode = $parentNode->getAttribute(AttributeKey::PARENT_NODE); - if (!$parentParentNode instanceof FuncCall) { - return \false; - } - return $this->nodeNameResolver->isNames($parentParentNode, $functionNames); + return \in_array($fromFuncCallName, $functionNames, \true); } /** * @return \PHPStan\Type\MixedType|\PHPStan\Type\ObjectType diff --git a/packages/NodeTypeResolver/Node/AttributeKey.php b/packages/NodeTypeResolver/Node/AttributeKey.php index b3a3a7f0a35..5f1ed09dc6f 100644 --- a/packages/NodeTypeResolver/Node/AttributeKey.php +++ b/packages/NodeTypeResolver/Node/AttributeKey.php @@ -240,4 +240,8 @@ final class AttributeKey * @var string */ public const IS_PARAM_TYPE = 'is_param_type'; + /** + * @var string + */ + public const FROM_FUNC_CALL_NAME = 'FROM_FUNC_CALL_NAME'; } diff --git a/packages/NodeTypeResolver/PHPStan/Scope/NodeVisitor/ArgNodeVisitor.php b/packages/NodeTypeResolver/PHPStan/Scope/NodeVisitor/ArgNodeVisitor.php new file mode 100644 index 00000000000..ab92f37a855 --- /dev/null +++ b/packages/NodeTypeResolver/PHPStan/Scope/NodeVisitor/ArgNodeVisitor.php @@ -0,0 +1,36 @@ +name instanceof Name) { + return null; + } + $funcCallName = $node->name->toString(); + foreach ($node->args as $arg) { + if (!$arg instanceof Arg) { + continue; + } + if (!$arg->value instanceof Array_) { + continue; + } + $arg->value->setAttribute(AttributeKey::FROM_FUNC_CALL_NAME, $funcCallName); + } + return null; + } +} diff --git a/src/Application/VersionResolver.php b/src/Application/VersionResolver.php index af3efd6cc17..bd57758a856 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 = '5f7e5dc030e2ec6d7b0ce279788e40b8dd2901c8'; + public const PACKAGE_VERSION = 'd50368339398499bb767e80634a4987577c44df5'; /** * @api * @var string */ - public const RELEASE_DATE = '2023-06-26 23:55:32'; + public const RELEASE_DATE = '2023-06-26 18:03:06'; /** * @var int */ diff --git a/vendor/autoload.php b/vendor/autoload.php index 58a72313a10..340052a7310 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 ComposerAutoloaderInit89bdab5cb573a2edba915eb7e3165378::getLoader(); +return ComposerAutoloaderInit207444d1cfc1ae91e835bdbfc5c542cb::getLoader(); diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php index 2b60a746fd0..c57f7151b40 100644 --- a/vendor/composer/autoload_classmap.php +++ b/vendor/composer/autoload_classmap.php @@ -2023,6 +2023,7 @@ return array( 'Rector\\NodeTypeResolver\\PHPStan\\ObjectWithoutClassTypeWithParentTypes' => $baseDir . '/packages/NodeTypeResolver/PHPStan/ObjectWithoutClassTypeWithParentTypes.php', 'Rector\\NodeTypeResolver\\PHPStan\\ParametersAcceptorSelectorVariantsWrapper' => $baseDir . '/packages/NodeTypeResolver/PHPStan/ParametersAcceptorSelectorVariantsWrapper.php', 'Rector\\NodeTypeResolver\\PHPStan\\Scope\\Contract\\NodeVisitor\\ScopeResolverNodeVisitorInterface' => $baseDir . '/packages/NodeTypeResolver/PHPStan/Scope/Contract/NodeVisitor/ScopeResolverNodeVisitorInterface.php', + 'Rector\\NodeTypeResolver\\PHPStan\\Scope\\NodeVisitor\\ArgNodeVisitor' => $baseDir . '/packages/NodeTypeResolver/PHPStan/Scope/NodeVisitor/ArgNodeVisitor.php', 'Rector\\NodeTypeResolver\\PHPStan\\Scope\\NodeVisitor\\AssignedToNodeVisitor' => $baseDir . '/packages/NodeTypeResolver/PHPStan/Scope/NodeVisitor/AssignedToNodeVisitor.php', 'Rector\\NodeTypeResolver\\PHPStan\\Scope\\NodeVisitor\\ByRefReturnNodeVisitor' => $baseDir . '/packages/NodeTypeResolver/PHPStan/Scope/NodeVisitor/ByRefReturnNodeVisitor.php', 'Rector\\NodeTypeResolver\\PHPStan\\Scope\\NodeVisitor\\ByRefVariableNodeVisitor' => $baseDir . '/packages/NodeTypeResolver/PHPStan/Scope/NodeVisitor/ByRefVariableNodeVisitor.php', diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php index c52e0779f67..4cf9294f28a 100644 --- a/vendor/composer/autoload_real.php +++ b/vendor/composer/autoload_real.php @@ -2,7 +2,7 @@ // autoload_real.php @generated by Composer -class ComposerAutoloaderInit89bdab5cb573a2edba915eb7e3165378 +class ComposerAutoloaderInit207444d1cfc1ae91e835bdbfc5c542cb { private static $loader; @@ -22,17 +22,17 @@ class ComposerAutoloaderInit89bdab5cb573a2edba915eb7e3165378 return self::$loader; } - spl_autoload_register(array('ComposerAutoloaderInit89bdab5cb573a2edba915eb7e3165378', 'loadClassLoader'), true, true); + spl_autoload_register(array('ComposerAutoloaderInit207444d1cfc1ae91e835bdbfc5c542cb', 'loadClassLoader'), true, true); self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); - spl_autoload_unregister(array('ComposerAutoloaderInit89bdab5cb573a2edba915eb7e3165378', 'loadClassLoader')); + spl_autoload_unregister(array('ComposerAutoloaderInit207444d1cfc1ae91e835bdbfc5c542cb', 'loadClassLoader')); require __DIR__ . '/autoload_static.php'; - call_user_func(\Composer\Autoload\ComposerStaticInit89bdab5cb573a2edba915eb7e3165378::getInitializer($loader)); + call_user_func(\Composer\Autoload\ComposerStaticInit207444d1cfc1ae91e835bdbfc5c542cb::getInitializer($loader)); $loader->setClassMapAuthoritative(true); $loader->register(true); - $filesToLoad = \Composer\Autoload\ComposerStaticInit89bdab5cb573a2edba915eb7e3165378::$files; + $filesToLoad = \Composer\Autoload\ComposerStaticInit207444d1cfc1ae91e835bdbfc5c542cb::$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 d35a0eb7118..adc35b2c8e7 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -4,7 +4,7 @@ namespace Composer\Autoload; -class ComposerStaticInit89bdab5cb573a2edba915eb7e3165378 +class ComposerStaticInit207444d1cfc1ae91e835bdbfc5c542cb { public static $files = array ( 'ad155f8f1cf0d418fe49e248db8c661b' => __DIR__ . '/..' . '/react/promise/src/functions_include.php', @@ -2275,6 +2275,7 @@ class ComposerStaticInit89bdab5cb573a2edba915eb7e3165378 'Rector\\NodeTypeResolver\\PHPStan\\ObjectWithoutClassTypeWithParentTypes' => __DIR__ . '/../..' . '/packages/NodeTypeResolver/PHPStan/ObjectWithoutClassTypeWithParentTypes.php', 'Rector\\NodeTypeResolver\\PHPStan\\ParametersAcceptorSelectorVariantsWrapper' => __DIR__ . '/../..' . '/packages/NodeTypeResolver/PHPStan/ParametersAcceptorSelectorVariantsWrapper.php', 'Rector\\NodeTypeResolver\\PHPStan\\Scope\\Contract\\NodeVisitor\\ScopeResolverNodeVisitorInterface' => __DIR__ . '/../..' . '/packages/NodeTypeResolver/PHPStan/Scope/Contract/NodeVisitor/ScopeResolverNodeVisitorInterface.php', + 'Rector\\NodeTypeResolver\\PHPStan\\Scope\\NodeVisitor\\ArgNodeVisitor' => __DIR__ . '/../..' . '/packages/NodeTypeResolver/PHPStan/Scope/NodeVisitor/ArgNodeVisitor.php', 'Rector\\NodeTypeResolver\\PHPStan\\Scope\\NodeVisitor\\AssignedToNodeVisitor' => __DIR__ . '/../..' . '/packages/NodeTypeResolver/PHPStan/Scope/NodeVisitor/AssignedToNodeVisitor.php', 'Rector\\NodeTypeResolver\\PHPStan\\Scope\\NodeVisitor\\ByRefReturnNodeVisitor' => __DIR__ . '/../..' . '/packages/NodeTypeResolver/PHPStan/Scope/NodeVisitor/ByRefReturnNodeVisitor.php', 'Rector\\NodeTypeResolver\\PHPStan\\Scope\\NodeVisitor\\ByRefVariableNodeVisitor' => __DIR__ . '/../..' . '/packages/NodeTypeResolver/PHPStan/Scope/NodeVisitor/ByRefVariableNodeVisitor.php', @@ -3095,9 +3096,9 @@ class ComposerStaticInit89bdab5cb573a2edba915eb7e3165378 public static function getInitializer(ClassLoader $loader) { return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInit89bdab5cb573a2edba915eb7e3165378::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInit89bdab5cb573a2edba915eb7e3165378::$prefixDirsPsr4; - $loader->classMap = ComposerStaticInit89bdab5cb573a2edba915eb7e3165378::$classMap; + $loader->prefixLengthsPsr4 = ComposerStaticInit207444d1cfc1ae91e835bdbfc5c542cb::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInit207444d1cfc1ae91e835bdbfc5c542cb::$prefixDirsPsr4; + $loader->classMap = ComposerStaticInit207444d1cfc1ae91e835bdbfc5c542cb::$classMap; }, null, ClassLoader::class); }