Updated Rector to commit 27198867e5

27198867e5 Removing NodeRepository from constant string regex rule (#285)
This commit is contained in:
Tomas Votruba 2021-06-24 11:43:15 +00:00
parent 8c26861e95
commit 9742bdd2b0
10 changed files with 92 additions and 90 deletions

View File

@ -7,14 +7,12 @@ use RectorPrefix20210624\Nette\Utils\Arrays;
use PhpParser\Node;
use PhpParser\Node\Expr;
use PhpParser\Node\Expr\Array_;
use PhpParser\Node\Expr\ClassConstFetch;
use PhpParser\Node\Expr\MethodCall;
use PhpParser\Node\Expr\PropertyFetch;
use PhpParser\Node\Expr\StaticCall;
use PhpParser\Node\Expr\StaticPropertyFetch;
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Stmt\Class_;
use PhpParser\Node\Stmt\ClassConst;
use PhpParser\Node\Stmt\ClassLike;
use PhpParser\Node\Stmt\ClassMethod;
use PhpParser\Node\Stmt\Interface_;
@ -272,10 +270,6 @@ final class NodeRepository
{
return $this->parsedNodeCollector->findClass($name);
}
public function findClassConstByClassConstFetch(\PhpParser\Node\Expr\ClassConstFetch $classConstFetch) : ?\PhpParser\Node\Stmt\ClassConst
{
return $this->parsedNodeCollector->findClassConstByClassConstFetch($classConstFetch);
}
/**
* @param PropertyFetch|StaticPropertyFetch $expr
*/
@ -304,10 +298,6 @@ final class NodeRepository
{
return $this->parsedNodeCollector->getClasses();
}
public function findClassConstant(string $className, string $constantName) : ?\PhpParser\Node\Stmt\ClassConst
{
return $this->parsedNodeCollector->findClassConstant($className, $constantName);
}
public function findTrait(string $name) : ?\PhpParser\Node\Stmt\Trait_
{
return $this->parsedNodeCollector->findTrait($name);

View File

@ -47,10 +47,6 @@ final class ParsedNodeCollector
* @var Class_[]
*/
private $classes = [];
/**
* @var array<string, ClassConst[]>
*/
private $constantsByType = [];
/**
* @var Interface_[]
*/
@ -120,13 +116,6 @@ final class ParsedNodeCollector
}
return null;
}
public function findClassConstant(string $className, string $constantName) : ?\PhpParser\Node\Stmt\ClassConst
{
if (\strpos($constantName, '\\') !== \false) {
throw new \Rector\Core\Exception\ShouldNotHappenException(\sprintf('Switched arguments in "%s"', __METHOD__));
}
return $this->constantsByType[$className][$constantName] ?? null;
}
public function isCollectableNode(\PhpParser\Node $node) : bool
{
foreach (self::COLLECTABLE_NODE_TYPES as $collectableNodeType) {
@ -147,29 +136,11 @@ final class ParsedNodeCollector
$this->collectInterfaceOrTrait($node);
return;
}
if ($node instanceof \PhpParser\Node\Stmt\ClassConst) {
$this->addClassConstant($node);
return;
}
if ($node instanceof \PhpParser\Node\Expr\StaticCall) {
$this->staticCalls[] = $node;
return;
}
}
public function findClassConstByClassConstFetch(\PhpParser\Node\Expr\ClassConstFetch $classConstFetch) : ?\PhpParser\Node\Stmt\ClassConst
{
$className = $this->nodeNameResolver->getName($classConstFetch->class);
if ($className === null) {
return null;
}
$class = $this->resolveClassConstant($classConstFetch, $className);
if ($class === null) {
return null;
}
/** @var string $constantName */
$constantName = $this->nodeNameResolver->getName($classConstFetch->name);
return $this->findClassConstant($class, $constantName);
}
/**
* @return StaticCall[]
*/
@ -203,24 +174,4 @@ final class ParsedNodeCollector
$this->traits[$name] = $classLike;
}
}
private function addClassConstant(\PhpParser\Node\Stmt\ClassConst $classConst) : void
{
$className = $classConst->getAttribute(\Rector\NodeTypeResolver\Node\AttributeKey::CLASS_NAME);
if ($className === null) {
// anonymous class constant
return;
}
$constantName = $this->nodeNameResolver->getName($classConst);
$this->constantsByType[$className][$constantName] = $classConst;
}
private function resolveClassConstant(\PhpParser\Node\Expr\ClassConstFetch $classConstFetch, string $className) : ?string
{
if ($className === 'self') {
return $classConstFetch->getAttribute(\Rector\NodeTypeResolver\Node\AttributeKey::CLASS_NAME);
}
if ($className === 'parent') {
return $this->parentClassScopeResolver->resolveParentClassName($classConstFetch);
}
return $className;
}
}

View File

@ -16,11 +16,11 @@ final class VersionResolver
/**
* @var string
*/
public const PACKAGE_VERSION = '24fc2e6068e7991fcb361187294a6c8cffd88c66';
public const PACKAGE_VERSION = '27198867e50e21044f2f29e5bff6f8508785d81f';
/**
* @var string
*/
public const RELEASE_DATE = '2021-06-24 10:51:06';
public const RELEASE_DATE = '2021-06-24 13:31:39';
public static function resolvePackageVersion() : string
{
$process = new \RectorPrefix20210624\Symfony\Component\Process\Process(['git', 'log', '--pretty="%H"', '-n1', 'HEAD'], __DIR__);

View File

@ -5,6 +5,7 @@ namespace Rector\Core\Php\Regex;
use RectorPrefix20210624\Nette\Utils\Strings;
use PhpParser\Node;
use PhpParser\Node\Const_;
use PhpParser\Node\Expr;
use PhpParser\Node\Expr\Assign;
use PhpParser\Node\Expr\ClassConstFetch;
@ -12,12 +13,11 @@ use PhpParser\Node\Expr\FuncCall;
use PhpParser\Node\Expr\StaticCall;
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Scalar\String_;
use PhpParser\Node\Stmt\ClassConst;
use PhpParser\Node\Stmt\ClassMethod;
use PHPStan\Type\ObjectType;
use Rector\Core\PhpParser\Comparing\NodeComparator;
use Rector\Core\PhpParser\Node\BetterNodeFinder;
use Rector\NodeCollector\NodeCollector\NodeRepository;
use Rector\Core\PhpParser\NodeFinder\LocalConstantFinder;
use Rector\NodeNameResolver\NodeNameResolver;
use Rector\NodeTypeResolver\Node\AttributeKey;
use Rector\NodeTypeResolver\NodeTypeResolver;
@ -44,19 +44,19 @@ final class RegexPatternArgumentManipulator
*/
private $nodeTypeResolver;
/**
* @var \Rector\NodeCollector\NodeCollector\NodeRepository
* @var \Rector\Core\PhpParser\NodeFinder\LocalConstantFinder
*/
private $nodeRepository;
private $localConstantFinder;
/**
* @var \Rector\Core\PhpParser\Comparing\NodeComparator
*/
private $nodeComparator;
public function __construct(\Rector\Core\PhpParser\Node\BetterNodeFinder $betterNodeFinder, \Rector\NodeNameResolver\NodeNameResolver $nodeNameResolver, \Rector\NodeTypeResolver\NodeTypeResolver $nodeTypeResolver, \Rector\NodeCollector\NodeCollector\NodeRepository $nodeRepository, \Rector\Core\PhpParser\Comparing\NodeComparator $nodeComparator)
public function __construct(\Rector\Core\PhpParser\Node\BetterNodeFinder $betterNodeFinder, \Rector\NodeNameResolver\NodeNameResolver $nodeNameResolver, \Rector\NodeTypeResolver\NodeTypeResolver $nodeTypeResolver, \Rector\Core\PhpParser\NodeFinder\LocalConstantFinder $localConstantFinder, \Rector\Core\PhpParser\Comparing\NodeComparator $nodeComparator)
{
$this->betterNodeFinder = $betterNodeFinder;
$this->nodeNameResolver = $nodeNameResolver;
$this->nodeTypeResolver = $nodeTypeResolver;
$this->nodeRepository = $nodeRepository;
$this->localConstantFinder = $localConstantFinder;
$this->nodeComparator = $nodeComparator;
}
/**
@ -128,7 +128,7 @@ final class RegexPatternArgumentManipulator
return $strings;
}
if ($expr instanceof \PhpParser\Node\Expr\ClassConstFetch) {
return $this->resolveClassConstFetchValue($expr);
return $this->matchClassConstFetchStringValue($expr);
}
return [];
}
@ -154,14 +154,14 @@ final class RegexPatternArgumentManipulator
/**
* @return String_[]
*/
private function resolveClassConstFetchValue(\PhpParser\Node\Expr\ClassConstFetch $classConstFetch) : array
private function matchClassConstFetchStringValue(\PhpParser\Node\Expr\ClassConstFetch $classConstFetch) : array
{
$classConstNode = $this->nodeRepository->findClassConstByClassConstFetch($classConstFetch);
if (!$classConstNode instanceof \PhpParser\Node\Stmt\ClassConst) {
$classConst = $this->localConstantFinder->match($classConstFetch);
if (!$classConst instanceof \PhpParser\Node\Const_) {
return [];
}
if ($classConstNode->consts[0]->value instanceof \PhpParser\Node\Scalar\String_) {
return [$classConstNode->consts[0]->value];
if ($classConst->value instanceof \PhpParser\Node\Scalar\String_) {
return [$classConst->value];
}
return [];
}

View File

@ -0,0 +1,59 @@
<?php
declare (strict_types=1);
namespace Rector\Core\PhpParser\NodeFinder;
use PhpParser\Node\Const_;
use PhpParser\Node\Expr\ClassConstFetch;
use PhpParser\Node\Stmt\Class_;
use PHPStan\Type\TypeWithClassName;
use Rector\NodeNameResolver\NodeNameResolver;
use Rector\NodeTypeResolver\Node\AttributeKey;
use Rector\NodeTypeResolver\NodeTypeResolver;
final class LocalConstantFinder
{
/**
* @var \Rector\NodeTypeResolver\NodeTypeResolver
*/
private $nodeTypeResolver;
/**
* @var \Rector\NodeNameResolver\NodeNameResolver
*/
private $nodeNameResolver;
public function __construct(\Rector\NodeTypeResolver\NodeTypeResolver $nodeTypeResolver, \Rector\NodeNameResolver\NodeNameResolver $nodeNameResolver)
{
$this->nodeTypeResolver = $nodeTypeResolver;
$this->nodeNameResolver = $nodeNameResolver;
}
public function match(\PhpParser\Node\Expr\ClassConstFetch $classConstFetch) : ?\PhpParser\Node\Const_
{
$class = $classConstFetch->getAttribute(\Rector\NodeTypeResolver\Node\AttributeKey::CLASS_NODE);
if (!$class instanceof \PhpParser\Node\Stmt\Class_) {
return null;
}
$constantClassType = $this->nodeTypeResolver->resolve($classConstFetch->class);
if (!$constantClassType instanceof \PHPStan\Type\TypeWithClassName) {
return null;
}
if (!$this->nodeNameResolver->isName($class, $constantClassType->getClassName())) {
return null;
}
$constatName = $this->nodeNameResolver->getName($classConstFetch->name);
if ($constatName === null) {
return null;
}
return $this->findConstantByName($class, $constatName);
}
private function findConstantByName(\PhpParser\Node\Stmt\Class_ $class, string $constatName) : ?\PhpParser\Node\Const_
{
foreach ($class->getConstants() as $classConsts) {
foreach ($classConsts->consts as $const) {
if (!$this->nodeNameResolver->isName($const->name, $constatName)) {
continue;
}
return $const;
}
}
return null;
}
}

2
vendor/autoload.php vendored
View File

@ -4,4 +4,4 @@
require_once __DIR__ . '/composer/autoload_real.php';
return ComposerAutoloaderInit239d1d0dc4beb79ba2f57f2e858e9f4b::getLoader();
return ComposerAutoloaderInit6515764947f388ff945f44d9f30180c8::getLoader();

View File

@ -1871,6 +1871,7 @@ return array(
'Rector\\Core\\PHPStan\\Reflection\\VariadicAnalyzer' => $baseDir . '/src/PHPStan/Reflection/VariadicAnalyzer.php',
'Rector\\Core\\PhpParser\\Comparing\\ConditionSearcher' => $baseDir . '/src/PhpParser/Comparing/ConditionSearcher.php',
'Rector\\Core\\PhpParser\\Comparing\\NodeComparator' => $baseDir . '/src/PhpParser/Comparing/NodeComparator.php',
'Rector\\Core\\PhpParser\\NodeFinder\\LocalConstantFinder' => $baseDir . '/src/PhpParser/NodeFinder/LocalConstantFinder.php',
'Rector\\Core\\PhpParser\\NodeFinder\\PropertyFetchFinder' => $baseDir . '/src/PhpParser/NodeFinder/PropertyFetchFinder.php',
'Rector\\Core\\PhpParser\\NodeTransformer' => $baseDir . '/src/PhpParser/NodeTransformer.php',
'Rector\\Core\\PhpParser\\NodeTraverser\\RectorNodeTraverser' => $baseDir . '/src/PhpParser/NodeTraverser/RectorNodeTraverser.php',

View File

@ -2,7 +2,7 @@
// autoload_real.php @generated by Composer
class ComposerAutoloaderInit239d1d0dc4beb79ba2f57f2e858e9f4b
class ComposerAutoloaderInit6515764947f388ff945f44d9f30180c8
{
private static $loader;
@ -22,15 +22,15 @@ class ComposerAutoloaderInit239d1d0dc4beb79ba2f57f2e858e9f4b
return self::$loader;
}
spl_autoload_register(array('ComposerAutoloaderInit239d1d0dc4beb79ba2f57f2e858e9f4b', 'loadClassLoader'), true, true);
spl_autoload_register(array('ComposerAutoloaderInit6515764947f388ff945f44d9f30180c8', 'loadClassLoader'), true, true);
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
spl_autoload_unregister(array('ComposerAutoloaderInit239d1d0dc4beb79ba2f57f2e858e9f4b', 'loadClassLoader'));
spl_autoload_unregister(array('ComposerAutoloaderInit6515764947f388ff945f44d9f30180c8', '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\ComposerStaticInit239d1d0dc4beb79ba2f57f2e858e9f4b::getInitializer($loader));
call_user_func(\Composer\Autoload\ComposerStaticInit6515764947f388ff945f44d9f30180c8::getInitializer($loader));
} else {
$classMap = require __DIR__ . '/autoload_classmap.php';
if ($classMap) {
@ -42,19 +42,19 @@ class ComposerAutoloaderInit239d1d0dc4beb79ba2f57f2e858e9f4b
$loader->register(true);
if ($useStaticLoader) {
$includeFiles = Composer\Autoload\ComposerStaticInit239d1d0dc4beb79ba2f57f2e858e9f4b::$files;
$includeFiles = Composer\Autoload\ComposerStaticInit6515764947f388ff945f44d9f30180c8::$files;
} else {
$includeFiles = require __DIR__ . '/autoload_files.php';
}
foreach ($includeFiles as $fileIdentifier => $file) {
composerRequire239d1d0dc4beb79ba2f57f2e858e9f4b($fileIdentifier, $file);
composerRequire6515764947f388ff945f44d9f30180c8($fileIdentifier, $file);
}
return $loader;
}
}
function composerRequire239d1d0dc4beb79ba2f57f2e858e9f4b($fileIdentifier, $file)
function composerRequire6515764947f388ff945f44d9f30180c8($fileIdentifier, $file)
{
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
require $file;

View File

@ -4,7 +4,7 @@
namespace Composer\Autoload;
class ComposerStaticInit239d1d0dc4beb79ba2f57f2e858e9f4b
class ComposerStaticInit6515764947f388ff945f44d9f30180c8
{
public static $files = array (
'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php',
@ -2226,6 +2226,7 @@ class ComposerStaticInit239d1d0dc4beb79ba2f57f2e858e9f4b
'Rector\\Core\\PHPStan\\Reflection\\VariadicAnalyzer' => __DIR__ . '/../..' . '/src/PHPStan/Reflection/VariadicAnalyzer.php',
'Rector\\Core\\PhpParser\\Comparing\\ConditionSearcher' => __DIR__ . '/../..' . '/src/PhpParser/Comparing/ConditionSearcher.php',
'Rector\\Core\\PhpParser\\Comparing\\NodeComparator' => __DIR__ . '/../..' . '/src/PhpParser/Comparing/NodeComparator.php',
'Rector\\Core\\PhpParser\\NodeFinder\\LocalConstantFinder' => __DIR__ . '/../..' . '/src/PhpParser/NodeFinder/LocalConstantFinder.php',
'Rector\\Core\\PhpParser\\NodeFinder\\PropertyFetchFinder' => __DIR__ . '/../..' . '/src/PhpParser/NodeFinder/PropertyFetchFinder.php',
'Rector\\Core\\PhpParser\\NodeTransformer' => __DIR__ . '/../..' . '/src/PhpParser/NodeTransformer.php',
'Rector\\Core\\PhpParser\\NodeTraverser\\RectorNodeTraverser' => __DIR__ . '/../..' . '/src/PhpParser/NodeTraverser/RectorNodeTraverser.php',
@ -3875,9 +3876,9 @@ class ComposerStaticInit239d1d0dc4beb79ba2f57f2e858e9f4b
public static function getInitializer(ClassLoader $loader)
{
return \Closure::bind(function () use ($loader) {
$loader->prefixLengthsPsr4 = ComposerStaticInit239d1d0dc4beb79ba2f57f2e858e9f4b::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInit239d1d0dc4beb79ba2f57f2e858e9f4b::$prefixDirsPsr4;
$loader->classMap = ComposerStaticInit239d1d0dc4beb79ba2f57f2e858e9f4b::$classMap;
$loader->prefixLengthsPsr4 = ComposerStaticInit6515764947f388ff945f44d9f30180c8::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInit6515764947f388ff945f44d9f30180c8::$prefixDirsPsr4;
$loader->classMap = ComposerStaticInit6515764947f388ff945f44d9f30180c8::$classMap;
}, null, ClassLoader::class);
}

View File

@ -21,8 +21,8 @@ if (!class_exists('SomeTestCase', false) && !interface_exists('SomeTestCase', fa
if (!class_exists('CheckoutEntityFactory', false) && !interface_exists('CheckoutEntityFactory', false) && !trait_exists('CheckoutEntityFactory', false)) {
spl_autoload_call('RectorPrefix20210624\CheckoutEntityFactory');
}
if (!class_exists('ComposerAutoloaderInit239d1d0dc4beb79ba2f57f2e858e9f4b', false) && !interface_exists('ComposerAutoloaderInit239d1d0dc4beb79ba2f57f2e858e9f4b', false) && !trait_exists('ComposerAutoloaderInit239d1d0dc4beb79ba2f57f2e858e9f4b', false)) {
spl_autoload_call('RectorPrefix20210624\ComposerAutoloaderInit239d1d0dc4beb79ba2f57f2e858e9f4b');
if (!class_exists('ComposerAutoloaderInit6515764947f388ff945f44d9f30180c8', false) && !interface_exists('ComposerAutoloaderInit6515764947f388ff945f44d9f30180c8', false) && !trait_exists('ComposerAutoloaderInit6515764947f388ff945f44d9f30180c8', false)) {
spl_autoload_call('RectorPrefix20210624\ComposerAutoloaderInit6515764947f388ff945f44d9f30180c8');
}
if (!class_exists('Doctrine\Inflector\Inflector', false) && !interface_exists('Doctrine\Inflector\Inflector', false) && !trait_exists('Doctrine\Inflector\Inflector', false)) {
spl_autoload_call('RectorPrefix20210624\Doctrine\Inflector\Inflector');
@ -3323,9 +3323,9 @@ if (!function_exists('print_node')) {
return \RectorPrefix20210624\print_node(...func_get_args());
}
}
if (!function_exists('composerRequire239d1d0dc4beb79ba2f57f2e858e9f4b')) {
function composerRequire239d1d0dc4beb79ba2f57f2e858e9f4b() {
return \RectorPrefix20210624\composerRequire239d1d0dc4beb79ba2f57f2e858e9f4b(...func_get_args());
if (!function_exists('composerRequire6515764947f388ff945f44d9f30180c8')) {
function composerRequire6515764947f388ff945f44d9f30180c8() {
return \RectorPrefix20210624\composerRequire6515764947f388ff945f44d9f30180c8(...func_get_args());
}
}
if (!function_exists('parseArgs')) {