Updated Rector to commit ca8f75fae1

ca8f75fae1 [Core] Add ExternalFullyQualifiedAnalyzer to check external FullyQualified extends/interface/traits (#164)
This commit is contained in:
Tomas Votruba 2021-06-08 13:00:02 +00:00
parent 444b9f0d13
commit 5279626eba
11 changed files with 143 additions and 52 deletions

View File

@ -4,7 +4,6 @@ declare (strict_types=1);
namespace Rector\DowngradePhp72\Rector\Class_;
use PhpParser\Node;
use PhpParser\Node\Name\FullyQualified;
use PhpParser\Node\Param;
use PhpParser\Node\Stmt\Class_;
use PhpParser\Node\Stmt\ClassLike;
@ -13,6 +12,7 @@ use PhpParser\Node\Stmt\Interface_;
use PHPStan\Analyser\Scope;
use PHPStan\Reflection\ClassReflection;
use Rector\Core\Exception\ShouldNotHappenException;
use Rector\Core\NodeAnalyzer\ExternalFullyQualifiedAnalyzer;
use Rector\Core\Rector\AbstractRector;
use Rector\DowngradePhp72\NodeAnalyzer\ClassLikeWithTraitsClassMethodResolver;
use Rector\DowngradePhp72\NodeAnalyzer\ParamContravariantDetector;
@ -50,13 +50,18 @@ final class DowngradeParameterTypeWideningRector extends \Rector\Core\Rector\Abs
* @var \Rector\NodeTypeResolver\PHPStan\Type\TypeFactory
*/
private $typeFactory;
public function __construct(\Rector\DowngradePhp72\NodeAnalyzer\ClassLikeWithTraitsClassMethodResolver $classLikeWithTraitsClassMethodResolver, \Rector\DowngradePhp72\NodeAnalyzer\ParentChildClassMethodTypeResolver $parentChildClassMethodTypeResolver, \Rector\DowngradePhp72\PhpDoc\NativeParamToPhpDocDecorator $nativeParamToPhpDocDecorator, \Rector\DowngradePhp72\NodeAnalyzer\ParamContravariantDetector $paramContravariantDetector, \Rector\NodeTypeResolver\PHPStan\Type\TypeFactory $typeFactory)
/**
* @var \Rector\Core\NodeAnalyzer\ExternalFullyQualifiedAnalyzer
*/
private $externalFullyQualifiedAnalyzer;
public function __construct(\Rector\DowngradePhp72\NodeAnalyzer\ClassLikeWithTraitsClassMethodResolver $classLikeWithTraitsClassMethodResolver, \Rector\DowngradePhp72\NodeAnalyzer\ParentChildClassMethodTypeResolver $parentChildClassMethodTypeResolver, \Rector\DowngradePhp72\PhpDoc\NativeParamToPhpDocDecorator $nativeParamToPhpDocDecorator, \Rector\DowngradePhp72\NodeAnalyzer\ParamContravariantDetector $paramContravariantDetector, \Rector\NodeTypeResolver\PHPStan\Type\TypeFactory $typeFactory, \Rector\Core\NodeAnalyzer\ExternalFullyQualifiedAnalyzer $externalFullyQualifiedAnalyzer)
{
$this->classLikeWithTraitsClassMethodResolver = $classLikeWithTraitsClassMethodResolver;
$this->parentChildClassMethodTypeResolver = $parentChildClassMethodTypeResolver;
$this->nativeParamToPhpDocDecorator = $nativeParamToPhpDocDecorator;
$this->paramContravariantDetector = $paramContravariantDetector;
$this->typeFactory = $typeFactory;
$this->externalFullyQualifiedAnalyzer = $externalFullyQualifiedAnalyzer;
}
public function getRuleDefinition() : \Symplify\RuleDocGenerator\ValueObject\RuleDefinition
{
@ -114,7 +119,7 @@ CODE_SAMPLE
if ($this->isEmptyClassReflection($classReflection)) {
return null;
}
if ($this->hasExtendExternal($node)) {
if ($this->externalFullyQualifiedAnalyzer->hasExternalFullyQualifieds($node)) {
return null;
}
$hasChanged = \false;
@ -137,20 +142,6 @@ CODE_SAMPLE
}
return null;
}
/**
* @param Class_|Interface_ $node
*/
private function hasExtendExternal(\PhpParser\Node $node) : bool
{
if ($node->extends instanceof \PhpParser\Node\Name\FullyQualified) {
$className = (string) $this->getName($node->extends);
$parentFound = (bool) $this->nodeRepository->findClass($className);
if (!$parentFound) {
return \true;
}
}
return \false;
}
/**
* The topmost class is the source of truth, so we go only down to avoid up/down collission
* @param ClassReflection[] $ancestors

View File

@ -6,7 +6,6 @@ namespace Rector\TypeDeclaration\Rector\FunctionLike;
use PhpParser\Node;
use PhpParser\Node\FunctionLike;
use PhpParser\Node\Name;
use PhpParser\Node\Name\FullyQualified;
use PhpParser\Node\NullableType;
use PhpParser\Node\Stmt\Class_;
use PhpParser\Node\Stmt\ClassMethod;
@ -15,6 +14,7 @@ use PhpParser\Node\UnionType as PhpParserUnionType;
use PHPStan\Type\MixedType;
use PHPStan\Type\Type;
use PHPStan\Type\UnionType;
use Rector\Core\NodeAnalyzer\ExternalFullyQualifiedAnalyzer;
use Rector\Core\Rector\AbstractRector;
use Rector\Core\ValueObject\PhpVersionFeature;
use Rector\NodeTypeResolver\Node\AttributeKey;
@ -69,7 +69,11 @@ final class ReturnTypeDeclarationRector extends \Rector\Core\Rector\AbstractRect
* @var \Rector\TypeDeclaration\TypeAnalyzer\ObjectTypeComparator
*/
private $objectTypeComparator;
public function __construct(\Rector\TypeDeclaration\TypeInferer\ReturnTypeInferer $returnTypeInferer, \Rector\TypeDeclaration\ChildPopulator\ChildReturnPopulator $childReturnPopulator, \Rector\TypeDeclaration\TypeAlreadyAddedChecker\ReturnTypeAlreadyAddedChecker $returnTypeAlreadyAddedChecker, \Rector\TypeDeclaration\PhpDocParser\NonInformativeReturnTagRemover $nonInformativeReturnTagRemover, \Rector\VendorLocker\NodeVendorLocker\ClassMethodReturnTypeOverrideGuard $classMethodReturnTypeOverrideGuard, \Rector\VendorLocker\VendorLockResolver $vendorLockResolver, \Rector\TypeDeclaration\PhpParserTypeAnalyzer $phpParserTypeAnalyzer, \Rector\TypeDeclaration\TypeAnalyzer\ObjectTypeComparator $objectTypeComparator)
/**
* @var \Rector\Core\NodeAnalyzer\ExternalFullyQualifiedAnalyzer
*/
private $externalFullyQualifiedAnalyzer;
public function __construct(\Rector\TypeDeclaration\TypeInferer\ReturnTypeInferer $returnTypeInferer, \Rector\TypeDeclaration\ChildPopulator\ChildReturnPopulator $childReturnPopulator, \Rector\TypeDeclaration\TypeAlreadyAddedChecker\ReturnTypeAlreadyAddedChecker $returnTypeAlreadyAddedChecker, \Rector\TypeDeclaration\PhpDocParser\NonInformativeReturnTagRemover $nonInformativeReturnTagRemover, \Rector\VendorLocker\NodeVendorLocker\ClassMethodReturnTypeOverrideGuard $classMethodReturnTypeOverrideGuard, \Rector\VendorLocker\VendorLockResolver $vendorLockResolver, \Rector\TypeDeclaration\PhpParserTypeAnalyzer $phpParserTypeAnalyzer, \Rector\TypeDeclaration\TypeAnalyzer\ObjectTypeComparator $objectTypeComparator, \Rector\Core\NodeAnalyzer\ExternalFullyQualifiedAnalyzer $externalFullyQualifiedAnalyzer)
{
$this->returnTypeInferer = $returnTypeInferer;
$this->childReturnPopulator = $childReturnPopulator;
@ -79,6 +83,7 @@ final class ReturnTypeDeclarationRector extends \Rector\Core\Rector\AbstractRect
$this->vendorLockResolver = $vendorLockResolver;
$this->phpParserTypeAnalyzer = $phpParserTypeAnalyzer;
$this->objectTypeComparator = $objectTypeComparator;
$this->externalFullyQualifiedAnalyzer = $externalFullyQualifiedAnalyzer;
}
/**
* @return array<class-string<Node>>
@ -226,12 +231,8 @@ CODE_SAMPLE
if (!$classLike instanceof \PhpParser\Node\Stmt\Class_) {
return \false;
}
if (!$classLike->extends instanceof \PhpParser\Node\Name\FullyQualified) {
return \false;
}
$className = (string) $this->getName($classLike->extends);
$parentFound = (bool) $this->nodeRepository->findClass($className);
return $functionLike->returnType === null && !$parentFound && $this->isName($inferredReturnNode, 'void');
$hasExternalClassOrInterfaceOrTrait = $this->externalFullyQualifiedAnalyzer->hasExternalFullyQualifieds($classLike);
return $functionLike->returnType === null && $hasExternalClassOrInterfaceOrTrait && $this->isName($inferredReturnNode, 'void');
}
private function isNullableTypeSubType(\PHPStan\Type\Type $currentType, \PHPStan\Type\Type $inferedType) : bool
{

View File

@ -6,7 +6,6 @@ namespace Rector\TypeDeclaration\TypeInferer;
use PhpParser\Node\Expr\Closure;
use PhpParser\Node\Expr\Yield_;
use PhpParser\Node\FunctionLike;
use PhpParser\Node\Name\FullyQualified;
use PhpParser\Node\Stmt;
use PhpParser\Node\Stmt\ClassMethod;
use PhpParser\Node\Stmt\Expression;
@ -17,6 +16,7 @@ use PhpParser\Node\Stmt\Switch_;
use PhpParser\Node\Stmt\Throw_;
use PhpParser\Node\Stmt\Trait_;
use PhpParser\Node\Stmt\TryCatch;
use Rector\Core\NodeAnalyzer\ExternalFullyQualifiedAnalyzer;
use Rector\Core\PhpParser\Node\BetterNodeFinder;
use Rector\NodeTypeResolver\Node\AttributeKey;
final class SilentVoidResolver
@ -25,9 +25,14 @@ final class SilentVoidResolver
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder
*/
private $betterNodeFinder;
public function __construct(\Rector\Core\PhpParser\Node\BetterNodeFinder $betterNodeFinder)
/**
* @var \Rector\Core\NodeAnalyzer\ExternalFullyQualifiedAnalyzer
*/
private $externalFullyQualifiedAnalyzer;
public function __construct(\Rector\Core\PhpParser\Node\BetterNodeFinder $betterNodeFinder, \Rector\Core\NodeAnalyzer\ExternalFullyQualifiedAnalyzer $externalFullyQualifiedAnalyzer)
{
$this->betterNodeFinder = $betterNodeFinder;
$this->externalFullyQualifiedAnalyzer = $externalFullyQualifiedAnalyzer;
}
/**
* @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Expr\Closure|\PhpParser\Node\Stmt\Function_ $functionLike
@ -47,10 +52,7 @@ final class SilentVoidResolver
if ($this->betterNodeFinder->hasInstancesOf((array) $functionLike->stmts, [\PhpParser\Node\Expr\Yield_::class])) {
return \false;
}
if ($classLike->extends instanceof \PhpParser\Node\Name\FullyQualified) {
return \false;
}
if ($classLike->getTraitUses() !== []) {
if ($this->externalFullyQualifiedAnalyzer->hasExternalFullyQualifieds($classLike)) {
return \false;
}
/** @var Return_[] $returns */

View File

@ -16,11 +16,11 @@ final class VersionResolver
/**
* @var string
*/
public const PACKAGE_VERSION = '1d2b3248d24fa37e04fc9252f304df3ab6ae4a88';
public const PACKAGE_VERSION = 'ca8f75fae1838fe74ed74c6c96bfa4b4126c8029';
/**
* @var string
*/
public const RELEASE_DATE = '2021-06-08 10:52:53';
public const RELEASE_DATE = '2021-06-08 14:48:30';
public static function resolvePackageVersion() : string
{
$process = new \RectorPrefix20210608\Symfony\Component\Process\Process(['git', 'log', '--pretty="%H"', '-n1', 'HEAD'], __DIR__);

View File

@ -0,0 +1,95 @@
<?php
declare (strict_types=1);
namespace Rector\Core\NodeAnalyzer;
use PhpParser\Node\Name\FullyQualified;
use PhpParser\Node\Stmt\Class_;
use PhpParser\Node\Stmt\ClassLike;
use PhpParser\Node\Stmt\Interface_;
use PhpParser\Node\Stmt\TraitUse;
use Rector\NodeCollector\NodeCollector\NodeRepository;
use Rector\NodeNameResolver\NodeNameResolver;
final class ExternalFullyQualifiedAnalyzer
{
/**
* @var \Rector\NodeNameResolver\NodeNameResolver
*/
private $nodeNameResolver;
/**
* @var \Rector\NodeCollector\NodeCollector\NodeRepository
*/
private $nodeRepository;
public function __construct(\Rector\NodeNameResolver\NodeNameResolver $nodeNameResolver, \Rector\NodeCollector\NodeCollector\NodeRepository $nodeRepository)
{
$this->nodeNameResolver = $nodeNameResolver;
$this->nodeRepository = $nodeRepository;
}
public function hasExternalFullyQualifieds(\PhpParser\Node\Stmt\ClassLike $classLike) : bool
{
if ($classLike instanceof \PhpParser\Node\Stmt\Class_ || $classLike instanceof \PhpParser\Node\Stmt\Interface_) {
$extends = $classLike->extends ?? [];
} else {
$extends = [];
}
/** @var FullyQualified[] $extends */
$extends = $extends instanceof \PhpParser\Node\Name\FullyQualified ? [$extends] : $extends;
/** @var FullyQualified[] $implements */
$implements = $classLike instanceof \PhpParser\Node\Stmt\Class_ ? $classLike->implements : [];
$parentClassesAndInterfaces = \array_merge($extends, $implements);
$hasExternalClassOrInterface = $this->hasExternalClassOrInterface($parentClassesAndInterfaces);
if ($hasExternalClassOrInterface) {
return \true;
}
/** @var TraitUse[] $traitUses */
$traitUses = $classLike->getTraitUses();
return $this->hasExternalTrait($traitUses);
}
/**
* @param FullyQualified[] $fullyQualifiedClassLikes
*/
private function hasExternalClassOrInterface(array $fullyQualifiedClassLikes) : bool
{
if ($fullyQualifiedClassLikes === []) {
return \false;
}
foreach ($fullyQualifiedClassLikes as $fullyQualifiedClassLike) {
/** @var string $className */
$className = $this->nodeNameResolver->getName($fullyQualifiedClassLike);
$isClassFound = (bool) $this->nodeRepository->findClass($className);
$isInterfaceFound = (bool) $this->nodeRepository->findInterface($className);
if ($isClassFound) {
continue;
}
if ($isInterfaceFound) {
continue;
}
return \true;
}
return \false;
}
/**
* @param TraitUse[] $traitUses
*/
private function hasExternalTrait(array $traitUses) : bool
{
if ($traitUses === []) {
return \false;
}
foreach ($traitUses as $traitUse) {
$traits = $traitUse->traits;
foreach ($traits as $trait) {
if (!$trait instanceof \PhpParser\Node\Name\FullyQualified) {
return \false;
}
/** @var string $traitName */
$traitName = $this->nodeNameResolver->getName($trait);
$isTraitFound = (bool) $this->nodeRepository->findTrait($traitName);
if (!$isTraitFound) {
return \true;
}
}
}
return \false;
}
}

2
vendor/autoload.php vendored
View File

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

View File

@ -1849,6 +1849,7 @@ return array(
'Rector\\Core\\NodeAnalyzer\\ClassAnalyzer' => $baseDir . '/src/NodeAnalyzer/ClassAnalyzer.php',
'Rector\\Core\\NodeAnalyzer\\CompactFuncCallAnalyzer' => $baseDir . '/src/NodeAnalyzer/CompactFuncCallAnalyzer.php',
'Rector\\Core\\NodeAnalyzer\\ConstFetchAnalyzer' => $baseDir . '/src/NodeAnalyzer/ConstFetchAnalyzer.php',
'Rector\\Core\\NodeAnalyzer\\ExternalFullyQualifiedAnalyzer' => $baseDir . '/src/NodeAnalyzer/ExternalFullyQualifiedAnalyzer.php',
'Rector\\Core\\NodeAnalyzer\\ParamAnalyzer' => $baseDir . '/src/NodeAnalyzer/ParamAnalyzer.php',
'Rector\\Core\\NodeAnalyzer\\PromotedPropertyParamCleaner' => $baseDir . '/src/NodeAnalyzer/PromotedPropertyParamCleaner.php',
'Rector\\Core\\NodeAnalyzer\\PropertyFetchAnalyzer' => $baseDir . '/src/NodeAnalyzer/PropertyFetchAnalyzer.php',

View File

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

View File

@ -4,7 +4,7 @@
namespace Composer\Autoload;
class ComposerStaticInitaf7bf4921f0ab10cb4e1c10944563092
class ComposerStaticInitedcd6e9f2f8e5c0cfb23a73f2cd51adc
{
public static $files = array (
'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php',
@ -2204,6 +2204,7 @@ class ComposerStaticInitaf7bf4921f0ab10cb4e1c10944563092
'Rector\\Core\\NodeAnalyzer\\ClassAnalyzer' => __DIR__ . '/../..' . '/src/NodeAnalyzer/ClassAnalyzer.php',
'Rector\\Core\\NodeAnalyzer\\CompactFuncCallAnalyzer' => __DIR__ . '/../..' . '/src/NodeAnalyzer/CompactFuncCallAnalyzer.php',
'Rector\\Core\\NodeAnalyzer\\ConstFetchAnalyzer' => __DIR__ . '/../..' . '/src/NodeAnalyzer/ConstFetchAnalyzer.php',
'Rector\\Core\\NodeAnalyzer\\ExternalFullyQualifiedAnalyzer' => __DIR__ . '/../..' . '/src/NodeAnalyzer/ExternalFullyQualifiedAnalyzer.php',
'Rector\\Core\\NodeAnalyzer\\ParamAnalyzer' => __DIR__ . '/../..' . '/src/NodeAnalyzer/ParamAnalyzer.php',
'Rector\\Core\\NodeAnalyzer\\PromotedPropertyParamCleaner' => __DIR__ . '/../..' . '/src/NodeAnalyzer/PromotedPropertyParamCleaner.php',
'Rector\\Core\\NodeAnalyzer\\PropertyFetchAnalyzer' => __DIR__ . '/../..' . '/src/NodeAnalyzer/PropertyFetchAnalyzer.php',
@ -3876,9 +3877,9 @@ class ComposerStaticInitaf7bf4921f0ab10cb4e1c10944563092
public static function getInitializer(ClassLoader $loader)
{
return \Closure::bind(function () use ($loader) {
$loader->prefixLengthsPsr4 = ComposerStaticInitaf7bf4921f0ab10cb4e1c10944563092::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInitaf7bf4921f0ab10cb4e1c10944563092::$prefixDirsPsr4;
$loader->classMap = ComposerStaticInitaf7bf4921f0ab10cb4e1c10944563092::$classMap;
$loader->prefixLengthsPsr4 = ComposerStaticInitedcd6e9f2f8e5c0cfb23a73f2cd51adc::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInitedcd6e9f2f8e5c0cfb23a73f2cd51adc::$prefixDirsPsr4;
$loader->classMap = ComposerStaticInitedcd6e9f2f8e5c0cfb23a73f2cd51adc::$classMap;
}, null, ClassLoader::class);
}

View File

@ -27,7 +27,7 @@ class TokenStream implements \Iterator, \ArrayAccess
* @param int $lookAhead
* @return TokenInterface
*/
public function current($lookAhead = 0) : \RectorPrefix20210608\Helmich\TypoScriptParser\Tokenizer\TokenInterface
public function current(int $lookAhead = 0) : \RectorPrefix20210608\Helmich\TypoScriptParser\Tokenizer\TokenInterface
{
return $this[$this->index + $lookAhead];
}
@ -35,7 +35,7 @@ class TokenStream implements \Iterator, \ArrayAccess
* @param int $increment
* @return void
*/
public function next($increment = 1) : void
public function next(int $increment = 1) : void
{
if ($this->index < \count($this->tokens)) {
$this->index += $increment;

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('RectorPrefix20210608\CheckoutEntityFactory');
}
if (!class_exists('ComposerAutoloaderInitaf7bf4921f0ab10cb4e1c10944563092', false) && !interface_exists('ComposerAutoloaderInitaf7bf4921f0ab10cb4e1c10944563092', false) && !trait_exists('ComposerAutoloaderInitaf7bf4921f0ab10cb4e1c10944563092', false)) {
spl_autoload_call('RectorPrefix20210608\ComposerAutoloaderInitaf7bf4921f0ab10cb4e1c10944563092');
if (!class_exists('ComposerAutoloaderInitedcd6e9f2f8e5c0cfb23a73f2cd51adc', false) && !interface_exists('ComposerAutoloaderInitedcd6e9f2f8e5c0cfb23a73f2cd51adc', false) && !trait_exists('ComposerAutoloaderInitedcd6e9f2f8e5c0cfb23a73f2cd51adc', false)) {
spl_autoload_call('RectorPrefix20210608\ComposerAutoloaderInitedcd6e9f2f8e5c0cfb23a73f2cd51adc');
}
if (!class_exists('Doctrine\Inflector\Inflector', false) && !interface_exists('Doctrine\Inflector\Inflector', false) && !trait_exists('Doctrine\Inflector\Inflector', false)) {
spl_autoload_call('RectorPrefix20210608\Doctrine\Inflector\Inflector');
@ -3323,9 +3323,9 @@ if (!function_exists('print_node')) {
return \RectorPrefix20210608\print_node(...func_get_args());
}
}
if (!function_exists('composerRequireaf7bf4921f0ab10cb4e1c10944563092')) {
function composerRequireaf7bf4921f0ab10cb4e1c10944563092() {
return \RectorPrefix20210608\composerRequireaf7bf4921f0ab10cb4e1c10944563092(...func_get_args());
if (!function_exists('composerRequireedcd6e9f2f8e5c0cfb23a73f2cd51adc')) {
function composerRequireedcd6e9f2f8e5c0cfb23a73f2cd51adc() {
return \RectorPrefix20210608\composerRequireedcd6e9f2f8e5c0cfb23a73f2cd51adc(...func_get_args());
}
}
if (!function_exists('parseArgs')) {