Updated Rector to commit 08ce1d06ed

08ce1d06ed [Php70] Avoid error Undefined property: PhpParser\Node\Stmt\Class_:: on ThisCallOnStaticMethodToStaticCallRector (#1197)
This commit is contained in:
Tomas Votruba 2021-11-09 13:36:07 +00:00
parent c6ba66aeee
commit 0fea0fdc92
40 changed files with 150 additions and 90 deletions

View File

@ -145,7 +145,7 @@ final class ArrayCallableMethodMatcher
if (!$classLike instanceof \PhpParser\Node\Stmt\ClassLike) {
return new \PHPStan\Type\MixedType();
}
$classConstantReference = $classLike->namespacedName->toString();
$classConstantReference = (string) $this->nodeNameResolver->getName($classLike);
}
// non-class value
if (!\is_string($classConstantReference)) {

View File

@ -16,6 +16,7 @@ use PHPStan\Type\Type;
use PHPStan\Type\UnionType;
use Rector\Core\Enum\ObjectReference;
use Rector\Core\PhpParser\Node\BetterNodeFinder;
use Rector\NodeNameResolver\NodeNameResolver;
use Rector\NodeTypeResolver\Contract\NodeTypeResolverInterface;
use Rector\NodeTypeResolver\Node\AttributeKey;
/**
@ -31,10 +32,15 @@ final class NameTypeResolver implements \Rector\NodeTypeResolver\Contract\NodeTy
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder
*/
private $betterNodeFinder;
public function __construct(\PHPStan\Reflection\ReflectionProvider $reflectionProvider, \Rector\Core\PhpParser\Node\BetterNodeFinder $betterNodeFinder)
/**
* @var \Rector\NodeNameResolver\NodeNameResolver
*/
private $nodeNameResolver;
public function __construct(\PHPStan\Reflection\ReflectionProvider $reflectionProvider, \Rector\Core\PhpParser\Node\BetterNodeFinder $betterNodeFinder, \Rector\NodeNameResolver\NodeNameResolver $nodeNameResolver)
{
$this->reflectionProvider = $reflectionProvider;
$this->betterNodeFinder = $betterNodeFinder;
$this->nodeNameResolver = $nodeNameResolver;
}
/**
* @return array<class-string<Node>>
@ -66,7 +72,7 @@ final class NameTypeResolver implements \Rector\NodeTypeResolver\Contract\NodeTy
if (!$class instanceof \PhpParser\Node\Stmt\Class_) {
return new \PHPStan\Type\MixedType();
}
$className = $class->namespacedName->toString();
$className = $this->nodeNameResolver->getName($class);
if (!\is_string($className)) {
return new \PHPStan\Type\MixedType();
}
@ -94,7 +100,7 @@ final class NameTypeResolver implements \Rector\NodeTypeResolver\Contract\NodeTy
if (!$classLike instanceof \PhpParser\Node\Stmt\ClassLike) {
return $name->toString();
}
return $classLike->namespacedName->toString();
return (string) $this->nodeNameResolver->getName($classLike);
}
/** @var Name|null $resolvedNameNode */
$resolvedNameNode = $name->getAttribute(\Rector\NodeTypeResolver\Node\AttributeKey::RESOLVED_NAME);

View File

@ -10,6 +10,7 @@ use PhpParser\Node\Stmt\Class_;
use PHPStan\Reflection\ReflectionProvider;
use PHPStan\Type\ObjectType;
use Rector\Core\PhpParser\Node\BetterNodeFinder;
use Rector\NodeNameResolver\NodeNameResolver;
final class MixinGuard
{
/**
@ -20,10 +21,15 @@ final class MixinGuard
* @var \PHPStan\Reflection\ReflectionProvider
*/
private $reflectionProvider;
public function __construct(\Rector\Core\PhpParser\Node\BetterNodeFinder $betterNodeFinder, \PHPStan\Reflection\ReflectionProvider $reflectionProvider)
/**
* @var \Rector\NodeNameResolver\NodeNameResolver
*/
private $nodeNameResolver;
public function __construct(\Rector\Core\PhpParser\Node\BetterNodeFinder $betterNodeFinder, \PHPStan\Reflection\ReflectionProvider $reflectionProvider, \Rector\NodeNameResolver\NodeNameResolver $nodeNameResolver)
{
$this->betterNodeFinder = $betterNodeFinder;
$this->reflectionProvider = $reflectionProvider;
$this->nodeNameResolver = $nodeNameResolver;
}
/**
* @param Stmt[] $stmts
@ -37,7 +43,7 @@ final class MixinGuard
if ($node instanceof \PhpParser\Node\Stmt\Class_ && $node->isAnonymous()) {
return \false;
}
$className = $node instanceof \PhpParser\Node\Name\FullyQualified ? $node->toString() : $node->namespacedName->toString();
$className = $node instanceof \PhpParser\Node\Name\FullyQualified ? $node->toString() : (string) $this->nodeNameResolver->getName($node);
return $this->isCircularMixin($className);
});
}

View File

@ -50,7 +50,7 @@ final class NetteInjectDetector
}
private function hasParentClassConstructor(\PhpParser\Node\Stmt\Class_ $class) : bool
{
$className = $class->namespacedName->toString();
$className = (string) $this->nodeNameResolver->getName($class);
if (!$this->reflectionProvider->hasClass($className)) {
return \false;
}

View File

@ -19,6 +19,7 @@ use PHPStan\Type\Type;
use Rector\Core\Enum\ObjectReference;
use Rector\Core\PhpParser\Node\BetterNodeFinder;
use Rector\NodeCollector\ScopeResolver\ParentClassScopeResolver;
use Rector\NodeNameResolver\NodeNameResolver;
use Rector\NodeTypeResolver\Node\AttributeKey;
use Rector\StaticTypeMapper\Contract\PhpDocParser\PhpDocTypeMapperInterface;
use Rector\StaticTypeMapper\Mapper\ScalarStringToTypeMapper;
@ -43,12 +44,17 @@ final class IdentifierTypeMapper implements \Rector\StaticTypeMapper\Contract\Ph
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder
*/
private $betterNodeFinder;
public function __construct(\Rector\TypeDeclaration\PHPStan\Type\ObjectTypeSpecifier $objectTypeSpecifier, \Rector\StaticTypeMapper\Mapper\ScalarStringToTypeMapper $scalarStringToTypeMapper, \Rector\NodeCollector\ScopeResolver\ParentClassScopeResolver $parentClassScopeResolver, \Rector\Core\PhpParser\Node\BetterNodeFinder $betterNodeFinder)
/**
* @var \Rector\NodeNameResolver\NodeNameResolver
*/
private $nodeNameResolver;
public function __construct(\Rector\TypeDeclaration\PHPStan\Type\ObjectTypeSpecifier $objectTypeSpecifier, \Rector\StaticTypeMapper\Mapper\ScalarStringToTypeMapper $scalarStringToTypeMapper, \Rector\NodeCollector\ScopeResolver\ParentClassScopeResolver $parentClassScopeResolver, \Rector\Core\PhpParser\Node\BetterNodeFinder $betterNodeFinder, \Rector\NodeNameResolver\NodeNameResolver $nodeNameResolver)
{
$this->objectTypeSpecifier = $objectTypeSpecifier;
$this->scalarStringToTypeMapper = $scalarStringToTypeMapper;
$this->parentClassScopeResolver = $parentClassScopeResolver;
$this->betterNodeFinder = $betterNodeFinder;
$this->nodeNameResolver = $nodeNameResolver;
}
/**
* @return class-string<TypeNode>
@ -102,7 +108,7 @@ final class IdentifierTypeMapper implements \Rector\StaticTypeMapper\Contract\Ph
return new \PHPStan\Type\MixedType();
}
// @todo check FQN
$className = $classLike->namespacedName->toString();
$className = $this->nodeNameResolver->getName($classLike);
if (!\is_string($className)) {
// self outside the class, e.g. in a function
return new \PHPStan\Type\MixedType();

View File

@ -22,6 +22,7 @@ use PHPStan\Type\Type;
use Rector\Core\Configuration\RenamedClassesDataCollector;
use Rector\Core\Enum\ObjectReference;
use Rector\Core\PhpParser\Node\BetterNodeFinder;
use Rector\NodeNameResolver\NodeNameResolver;
use Rector\StaticTypeMapper\Contract\PhpParser\PhpParserNodeMapperInterface;
use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType;
use Rector\StaticTypeMapper\ValueObject\Type\ParentObjectWithoutClassType;
@ -40,11 +41,16 @@ final class NameNodeMapper implements \Rector\StaticTypeMapper\Contract\PhpParse
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder
*/
private $betterNodeFinder;
public function __construct(\Rector\Core\Configuration\RenamedClassesDataCollector $renamedClassesDataCollector, \PHPStan\Reflection\ReflectionProvider $reflectionProvider, \Rector\Core\PhpParser\Node\BetterNodeFinder $betterNodeFinder)
/**
* @var \Rector\NodeNameResolver\NodeNameResolver
*/
private $nodeNameResolver;
public function __construct(\Rector\Core\Configuration\RenamedClassesDataCollector $renamedClassesDataCollector, \PHPStan\Reflection\ReflectionProvider $reflectionProvider, \Rector\Core\PhpParser\Node\BetterNodeFinder $betterNodeFinder, \Rector\NodeNameResolver\NodeNameResolver $nodeNameResolver)
{
$this->renamedClassesDataCollector = $renamedClassesDataCollector;
$this->reflectionProvider = $reflectionProvider;
$this->betterNodeFinder = $betterNodeFinder;
$this->nodeNameResolver = $nodeNameResolver;
}
/**
* @return class-string<Node>
@ -85,7 +91,7 @@ final class NameNodeMapper implements \Rector\StaticTypeMapper\Contract\PhpParse
if (!$classLike instanceof \PhpParser\Node\Stmt\ClassLike) {
return new \PHPStan\Type\MixedType();
}
$className = $classLike->namespacedName->toString();
$className = (string) $this->nodeNameResolver->getName($classLike);
$classReflection = $this->reflectionProvider->getClass($className);
if ($reference === \Rector\Core\Enum\ObjectReference::STATIC()->getValue()) {
return new \PHPStan\Type\StaticType($classReflection);

View File

@ -10,6 +10,7 @@ use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory;
use Rector\Core\NodeAnalyzer\ClassAnalyzer;
use Rector\Core\PhpParser\AstResolver;
use Rector\Core\ValueObject\MethodName;
use Rector\NodeNameResolver\NodeNameResolver;
use Rector\NodeTypeResolver\NodeTypeResolver;
final class ValueObjectClassAnalyzer
{
@ -33,12 +34,17 @@ final class ValueObjectClassAnalyzer
* @var \Rector\Core\NodeAnalyzer\ClassAnalyzer
*/
private $classAnalyzer;
public function __construct(\Rector\NodeTypeResolver\NodeTypeResolver $nodeTypeResolver, \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory $phpDocInfoFactory, \Rector\Core\PhpParser\AstResolver $astResolver, \Rector\Core\NodeAnalyzer\ClassAnalyzer $classAnalyzer)
/**
* @var \Rector\NodeNameResolver\NodeNameResolver
*/
private $nodeNameResolver;
public function __construct(\Rector\NodeTypeResolver\NodeTypeResolver $nodeTypeResolver, \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory $phpDocInfoFactory, \Rector\Core\PhpParser\AstResolver $astResolver, \Rector\Core\NodeAnalyzer\ClassAnalyzer $classAnalyzer, \Rector\NodeNameResolver\NodeNameResolver $nodeNameResolver)
{
$this->nodeTypeResolver = $nodeTypeResolver;
$this->phpDocInfoFactory = $phpDocInfoFactory;
$this->astResolver = $astResolver;
$this->classAnalyzer = $classAnalyzer;
$this->nodeNameResolver = $nodeNameResolver;
}
public function isValueObjectClass(\PhpParser\Node\Stmt\Class_ $class) : bool
{
@ -46,7 +52,7 @@ final class ValueObjectClassAnalyzer
return \false;
}
/** @var string $className */
$className = $class->namespacedName->toString();
$className = (string) $this->nodeNameResolver->getName($class);
if (isset($this->valueObjectStatusByClassName[$className])) {
return $this->valueObjectStatusByClassName[$className];
}

View File

@ -129,7 +129,7 @@ CODE_SAMPLE
if ($this->classAnalyzer->isAnonymousClass($class)) {
return \true;
}
$className = $class->namespacedName->toString();
$className = (string) $this->nodeNameResolver->getName($class);
if (!$this->reflectionProvider->hasClass($className)) {
return \true;
}

View File

@ -185,7 +185,7 @@ final class ShortNameResolver
if (!$firstClassLike instanceof \PhpParser\Node\Stmt\ClassLike) {
return null;
}
$className = $firstClassLike->namespacedName->toString();
$className = (string) $this->nodeNameResolver->getName($firstClassLike);
if (!$this->reflectionProvider->hasClass($className)) {
return null;
}

View File

@ -9,6 +9,7 @@ use PhpParser\Node\Stmt\Class_;
use PhpParser\Node\Stmt\Namespace_;
use PhpParser\Node\Stmt\UseUse;
use Rector\Core\PhpParser\Node\BetterNodeFinder;
use Rector\NodeNameResolver\NodeNameResolver;
use Rector\StaticTypeMapper\ValueObject\Type\AliasedObjectType;
use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType;
final class UsedImportsResolver
@ -21,10 +22,15 @@ final class UsedImportsResolver
* @var \Rector\CodingStyle\ClassNameImport\UseImportsTraverser
*/
private $useImportsTraverser;
public function __construct(\Rector\Core\PhpParser\Node\BetterNodeFinder $betterNodeFinder, \Rector\CodingStyle\ClassNameImport\UseImportsTraverser $useImportsTraverser)
/**
* @var \Rector\NodeNameResolver\NodeNameResolver
*/
private $nodeNameResolver;
public function __construct(\Rector\Core\PhpParser\Node\BetterNodeFinder $betterNodeFinder, \Rector\CodingStyle\ClassNameImport\UseImportsTraverser $useImportsTraverser, \Rector\NodeNameResolver\NodeNameResolver $nodeNameResolver)
{
$this->betterNodeFinder = $betterNodeFinder;
$this->useImportsTraverser = $useImportsTraverser;
$this->nodeNameResolver = $nodeNameResolver;
}
/**
* @return array<FullyQualifiedObjectType|AliasedObjectType>
@ -49,7 +55,7 @@ final class UsedImportsResolver
// add class itself
// is not anonymous class
if ($class !== null && \property_exists($class, 'namespacedName')) {
$className = $class->namespacedName->toString();
$className = (string) $this->nodeNameResolver->getName($class);
$usedImports[] = new \Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType($className);
}
$this->useImportsTraverser->traverserStmts($stmts, function (\PhpParser\Node\Stmt\UseUse $useUse, string $name) use(&$usedImports) : void {

View File

@ -79,14 +79,14 @@ final class IsClassMethodUsedAnalyzer
}
private function isClassMethodUsedInLocalStaticCall(\PhpParser\Node\Stmt\Class_ $class, string $classMethodName) : bool
{
$className = $class->namespacedName->toString();
$className = (string) $this->nodeNameResolver->getName($class);
/** @var StaticCall[] $staticCalls */
$staticCalls = $this->betterNodeFinder->findInstanceOf($class, \PhpParser\Node\Expr\StaticCall::class);
return $this->callCollectionAnalyzer->isExists($staticCalls, $classMethodName, $className);
}
private function isClassMethodCalledInLocalMethodCall(\PhpParser\Node\Stmt\Class_ $class, string $classMethodName) : bool
{
$className = $class->namespacedName->toString();
$className = (string) $this->nodeNameResolver->getName($class);
/** @var MethodCall[] $methodCalls */
$methodCalls = $this->betterNodeFinder->findInstanceOf($class, \PhpParser\Node\Expr\MethodCall::class);
return $this->callCollectionAnalyzer->isExists($methodCalls, $classMethodName, $className);

View File

@ -7,15 +7,21 @@ use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Stmt\Class_;
use PhpParser\Node\Stmt\ClassMethod;
use Rector\Core\PhpParser\Node\BetterNodeFinder;
use Rector\NodeNameResolver\NodeNameResolver;
final class ControllerClassMethodAnalyzer
{
/**
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder
*/
private $betterNodeFinder;
public function __construct(\Rector\Core\PhpParser\Node\BetterNodeFinder $betterNodeFinder)
/**
* @var \Rector\NodeNameResolver\NodeNameResolver
*/
private $nodeNameResolver;
public function __construct(\Rector\Core\PhpParser\Node\BetterNodeFinder $betterNodeFinder, \Rector\NodeNameResolver\NodeNameResolver $nodeNameResolver)
{
$this->betterNodeFinder = $betterNodeFinder;
$this->nodeNameResolver = $nodeNameResolver;
}
public function isInControllerActionMethod(\PhpParser\Node\Expr\Variable $variable) : bool
{
@ -23,7 +29,7 @@ final class ControllerClassMethodAnalyzer
if (!$class instanceof \PhpParser\Node\Stmt\Class_) {
return \false;
}
$className = $class->namespacedName->toString();
$className = $this->nodeNameResolver->getName($class);
if (!\is_string($className)) {
return \false;
}

View File

@ -68,7 +68,7 @@ CODE_SAMPLE
if (!$classLike instanceof \PhpParser\Node\Stmt\ClassLike) {
return null;
}
$className = $classLike->namespacedName->toString();
$className = (string) $this->nodeNameResolver->getName($classLike);
foreach ($this->methodByParentTypes as $type => $method) {
if (!$this->isObjectType($classLike, new \PHPStan\Type\ObjectType($type))) {
continue;

View File

@ -33,7 +33,7 @@ final class PropertyRenameFactory
if (!$classLike instanceof \PhpParser\Node\Stmt\ClassLike) {
return null;
}
$className = $classLike->namespacedName->toString();
$className = (string) $this->nodeNameResolver->getName($classLike);
return new \Rector\Naming\ValueObject\PropertyRename($property, $expectedName, $currentName, $classLike, $className, $property->props[0]);
}
}

View File

@ -7,6 +7,7 @@ use RectorPrefix20211109\Nette\Utils\Strings;
use PhpParser\Node\Stmt\ClassLike;
use Rector\CodingStyle\Naming\ClassNaming;
use Rector\Core\ValueObject\Application\File;
use Rector\NodeNameResolver\NodeNameResolver;
final class FileInfoDeletionAnalyzer
{
/**
@ -18,13 +19,18 @@ final class FileInfoDeletionAnalyzer
* @var \Rector\CodingStyle\Naming\ClassNaming
*/
private $classNaming;
public function __construct(\Rector\CodingStyle\Naming\ClassNaming $classNaming)
/**
* @var \Rector\NodeNameResolver\NodeNameResolver
*/
private $nodeNameResolver;
public function __construct(\Rector\CodingStyle\Naming\ClassNaming $classNaming, \Rector\NodeNameResolver\NodeNameResolver $nodeNameResolver)
{
$this->classNaming = $classNaming;
$this->nodeNameResolver = $nodeNameResolver;
}
public function isClassLikeAndFileInfoMatch(\Rector\Core\ValueObject\Application\File $file, \PhpParser\Node\Stmt\ClassLike $classLike) : bool
{
$className = $classLike->namespacedName->toString();
$className = (string) $this->nodeNameResolver->getName($classLike);
$smartFileInfo = $file->getSmartFileInfo();
$baseFileName = $this->clearNameFromTestingPrefix($smartFileInfo->getBasenameWithoutSuffix());
$classShortName = $this->classNaming->getShortName($className);

View File

@ -101,7 +101,7 @@ CODE_SAMPLE
if (!$classLike instanceof \PhpParser\Node\Stmt\ClassLike) {
return null;
}
$className = $classLike->namespacedName->toString();
$className = (string) $this->nodeNameResolver->getName($classLike);
$isStaticMethod = $this->staticAnalyzer->isStaticMethod($methodName, $className);
if (!$isStaticMethod) {
return null;

View File

@ -97,13 +97,13 @@ final class PhpSpecRenaming
public function resolveTestedClass(\PhpParser\Node $node) : string
{
if ($node instanceof \PhpParser\Node\Stmt\ClassLike) {
$className = $node->namespacedName->toString();
$className = (string) $this->nodeNameResolver->getName($node);
} else {
$classLike = $this->betterNodeFinder->findParentType($node, \PhpParser\Node\Stmt\ClassLike::class);
if (!$classLike instanceof \PhpParser\Node\Stmt\ClassLike) {
throw new \Rector\Core\Exception\ShouldNotHappenException();
}
$className = $classLike->namespacedName->toString();
$className = (string) $this->nodeNameResolver->getName($classLike);
}
$newClassName = \Rector\Core\Util\StaticRectorStrings::removePrefixes($className, ['spec\\']);
return \Rector\Core\Util\StaticRectorStrings::removeSuffixes($newClassName, [self::SPEC]);

View File

@ -50,7 +50,7 @@ final class PhpSpecMockCollector
*/
public function resolveClassMocksFromParam(\PhpParser\Node\Stmt\Class_ $class) : array
{
$className = $class->namespacedName->toString();
$className = (string) $this->nodeNameResolver->getName($class);
if (isset($this->mocks[$className]) && $this->mocks[$className] !== []) {
return $this->mocks[$className];
}
@ -74,12 +74,12 @@ final class PhpSpecMockCollector
public function isVariableMockInProperty(\PhpParser\Node\Stmt\Class_ $class, \PhpParser\Node\Expr\Variable $variable) : bool
{
$variableName = $this->nodeNameResolver->getName($variable);
$className = $class->namespacedName->toString();
$className = (string) $this->nodeNameResolver->getName($class);
return \in_array($variableName, $this->propertyMocksByClass[$className] ?? [], \true);
}
public function getTypeForClassAndVariable(\PhpParser\Node\Stmt\Class_ $class, string $variable) : string
{
$className = $class->namespacedName->toString();
$className = (string) $this->nodeNameResolver->getName($class);
if (!isset($this->mocksWithsTypes[$className][$variable])) {
throw new \Rector\Core\Exception\ShouldNotHappenException();
}
@ -92,7 +92,7 @@ final class PhpSpecMockCollector
private function addMockFromParam(\PhpParser\Node\Stmt\Class_ $class, \PhpParser\Node\Param $param) : void
{
$variable = $this->nodeNameResolver->getName($param->var);
$className = $class->namespacedName->toString();
$className = (string) $this->nodeNameResolver->getName($class);
$classMethod = $this->betterNodeFinder->findParentType($param, \PhpParser\Node\Stmt\ClassMethod::class);
if (!$classMethod instanceof \PhpParser\Node\Stmt\ClassMethod) {
throw new \Rector\Core\Exception\ShouldNotHappenException();

View File

@ -130,7 +130,7 @@ CODE_SAMPLE
if (!$classLike instanceof \PhpParser\Node\Stmt\ClassLike) {
return \false;
}
$className = $classLike->namespacedName->toString();
$className = (string) $this->nodeNameResolver->getName($classLike);
$objectType = new \PHPStan\Type\ObjectType($className);
$callerType = $this->nodeTypeResolver->getType($staticCall->class);
return $objectType->equals($callerType);

View File

@ -208,7 +208,7 @@ final class ClassRenamer
if (!$classLike instanceof \PhpParser\Node\Stmt\ClassLike) {
return null;
}
$currentName = $classLike->namespacedName->toString();
$currentName = (string) $this->nodeNameResolver->getName($classLike);
$newClassFullyQualified = $oldToNewClasses[$currentName];
if ($this->reflectionProvider->hasClass($newClassFullyQualified)) {
return null;
@ -229,7 +229,7 @@ final class ClassRenamer
{
// rename interfaces
$this->renameClassImplements($classLike, $oldToNewClasses);
$className = $classLike->namespacedName->toString();
$className = (string) $this->nodeNameResolver->getName($classLike);
$newName = $oldToNewClasses[$className] ?? null;
if (!$newName) {
return null;

View File

@ -70,7 +70,7 @@ final class RenamePropertyRector extends \Rector\Core\Rector\AbstractRector impl
}
private function renameProperty(\PhpParser\Node\Stmt\ClassLike $classLike, \Rector\Renaming\ValueObject\RenameProperty $renameProperty) : void
{
$classLikeName = $classLike->namespacedName->toString();
$classLikeName = (string) $this->nodeNameResolver->getName($classLike);
$renamePropertyObjectType = $renameProperty->getObjectType();
$className = $renamePropertyObjectType->getClassName();
$classLikeNameObjectType = new \PHPStan\Type\ObjectType($classLikeName);

View File

@ -17,6 +17,7 @@ use PHPStan\Type\ObjectType;
use Rector\Core\PhpParser\Comparing\NodeComparator;
use Rector\Core\PhpParser\Node\BetterNodeFinder;
use Rector\Core\PhpParser\Node\Value\ValueResolver;
use Rector\NodeNameResolver\NodeNameResolver;
use Rector\NodeTypeResolver\NodeTypeResolver;
final class SingletonClassMethodAnalyzer
{
@ -36,12 +37,17 @@ final class SingletonClassMethodAnalyzer
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder
*/
private $betterNodeFinder;
public function __construct(\Rector\NodeTypeResolver\NodeTypeResolver $nodeTypeResolver, \Rector\Core\PhpParser\Node\Value\ValueResolver $valueResolver, \Rector\Core\PhpParser\Comparing\NodeComparator $nodeComparator, \Rector\Core\PhpParser\Node\BetterNodeFinder $betterNodeFinder)
/**
* @var \Rector\NodeNameResolver\NodeNameResolver
*/
private $nodeNameResolver;
public function __construct(\Rector\NodeTypeResolver\NodeTypeResolver $nodeTypeResolver, \Rector\Core\PhpParser\Node\Value\ValueResolver $valueResolver, \Rector\Core\PhpParser\Comparing\NodeComparator $nodeComparator, \Rector\Core\PhpParser\Node\BetterNodeFinder $betterNodeFinder, \Rector\NodeNameResolver\NodeNameResolver $nodeNameResolver)
{
$this->nodeTypeResolver = $nodeTypeResolver;
$this->valueResolver = $valueResolver;
$this->nodeComparator = $nodeComparator;
$this->betterNodeFinder = $betterNodeFinder;
$this->nodeNameResolver = $nodeNameResolver;
}
/**
* Match this code:
@ -84,7 +90,7 @@ final class SingletonClassMethodAnalyzer
if (!$class instanceof \PhpParser\Node\Stmt\Class_) {
return null;
}
$className = $class->namespacedName->toString();
$className = $this->nodeNameResolver->getName($class);
if (!\is_string($className)) {
return null;
}

View File

@ -56,7 +56,7 @@ final class TypeProvidingExprFromClassResolver
*/
public function resolveTypeProvidingExprFromClass(\PhpParser\Node\Stmt\Class_ $class, $functionLike, \PHPStan\Type\ObjectType $objectType) : ?\PhpParser\Node\Expr
{
$className = $class->namespacedName->toString();
$className = (string) $this->nodeNameResolver->getName($class);
// A. match a method
$classReflection = $this->reflectionProvider->getClass($className);
$methodCallProvidingType = $this->resolveMethodCallProvidingType($classReflection, $objectType);

View File

@ -96,7 +96,7 @@ final class ReturnTypeAlreadyAddedChecker
if (!$classLike instanceof \PhpParser\Node\Stmt\ClassLike) {
return \false;
}
$className = $classLike->namespacedName->toString();
$className = (string) $this->nodeNameResolver->getName($classLike);
$nodeContent = $this->nodeComparator->printWithoutComments($returnNode);
$nodeContentWithoutPreslash = \ltrim($nodeContent, '\\');
return $nodeContentWithoutPreslash === $className;

View File

@ -42,7 +42,7 @@ final class KnownArrayParamTypeInferer implements \Rector\TypeDeclaration\Contra
if (!$class instanceof \PhpParser\Node\Stmt\Class_) {
return new \PHPStan\Type\MixedType();
}
$className = $class->namespacedName->toString();
$className = (string) $this->nodeNameResolver->getName($class);
if (!$this->reflectionProvider->hasClass($className)) {
return new \PHPStan\Type\MixedType();
}

View File

@ -16,11 +16,11 @@ final class VersionResolver
/**
* @var string
*/
public const PACKAGE_VERSION = '65b389256326b60656831862ebfb7c898326856f';
public const PACKAGE_VERSION = '08ce1d06edc631bbe6c92482cc82dd35f8d387f6';
/**
* @var string
*/
public const RELEASE_DATE = '2021-11-09 12:49:40';
public const RELEASE_DATE = '2021-11-09 20:19:00';
public static function resolvePackageVersion() : string
{
$process = new \RectorPrefix20211109\Symfony\Component\Process\Process(['git', 'log', '--pretty="%H"', '-n1', 'HEAD'], __DIR__);

View File

@ -55,7 +55,7 @@ final class PropertyPresenceChecker
*/
public function getClassContextProperty(\PhpParser\Node\Stmt\Class_ $class, \Rector\PostRector\ValueObject\PropertyMetadata $propertyMetadata)
{
$className = $class->namespacedName->toString();
$className = (string) $this->nodeNameResolver->getName($class);
if (!$this->reflectionProvider->hasClass($className)) {
return null;
}

View File

@ -14,6 +14,7 @@ use Rector\Core\NodeAnalyzer\PromotedPropertyParamCleaner;
use Rector\Core\PhpParser\AstResolver;
use Rector\Core\PhpParser\Node\NodeFactory;
use Rector\Core\ValueObject\MethodName;
use Rector\NodeNameResolver\NodeNameResolver;
use RectorPrefix20211109\Symplify\Astral\NodeTraverser\SimpleCallableNodeTraverser;
final class DependencyClassMethodDecorator
{
@ -37,20 +38,25 @@ final class DependencyClassMethodDecorator
* @var \Symplify\Astral\NodeTraverser\SimpleCallableNodeTraverser
*/
private $simpleCallableNodeTraverser;
public function __construct(\Rector\Core\PhpParser\Node\NodeFactory $nodeFactory, \Rector\Core\NodeAnalyzer\PromotedPropertyParamCleaner $promotedPropertyParamCleaner, \PHPStan\Reflection\ReflectionProvider $reflectionProvider, \Rector\Core\PhpParser\AstResolver $astResolver, \RectorPrefix20211109\Symplify\Astral\NodeTraverser\SimpleCallableNodeTraverser $simpleCallableNodeTraverser)
/**
* @var \Rector\NodeNameResolver\NodeNameResolver
*/
private $nodeNameResolver;
public function __construct(\Rector\Core\PhpParser\Node\NodeFactory $nodeFactory, \Rector\Core\NodeAnalyzer\PromotedPropertyParamCleaner $promotedPropertyParamCleaner, \PHPStan\Reflection\ReflectionProvider $reflectionProvider, \Rector\Core\PhpParser\AstResolver $astResolver, \RectorPrefix20211109\Symplify\Astral\NodeTraverser\SimpleCallableNodeTraverser $simpleCallableNodeTraverser, \Rector\NodeNameResolver\NodeNameResolver $nodeNameResolver)
{
$this->nodeFactory = $nodeFactory;
$this->promotedPropertyParamCleaner = $promotedPropertyParamCleaner;
$this->reflectionProvider = $reflectionProvider;
$this->astResolver = $astResolver;
$this->simpleCallableNodeTraverser = $simpleCallableNodeTraverser;
$this->nodeNameResolver = $nodeNameResolver;
}
/**
* Add "parent::__construct(X, Y, Z)" where needed
*/
public function decorateConstructorWithParentDependencies(\PhpParser\Node\Stmt\Class_ $class, \PhpParser\Node\Stmt\ClassMethod $classMethod, \PHPStan\Analyser\Scope $scope) : void
{
$className = $class->namespacedName->toString();
$className = (string) $this->nodeNameResolver->getName($class);
if (!$this->reflectionProvider->hasClass($className)) {
return;
}

View File

@ -103,7 +103,7 @@ final class VariableManipulator
if (!$classLike instanceof \PhpParser\Node\Stmt\ClassLike) {
return \false;
}
$className = $classLike->namespacedName->toString();
$className = (string) $this->nodeNameResolver->getName($classLike);
if (\substr_compare($className, 'Test', -\strlen('Test')) !== 0) {
return \false;
}

View File

@ -95,7 +95,7 @@ final class ValueResolver
// @todo scope is needed
$classLike = $this->betterNodeFinder->findParentType($expr, \PhpParser\Node\Stmt\ClassLike::class);
if ($classLike instanceof \PhpParser\Node\Stmt\ClassLike) {
return $classLike->namespacedName->toString();
return (string) $this->nodeNameResolver->getName($classLike);
}
}
if ($this->nodeNameResolver->isName($expr->name, 'class')) {
@ -254,7 +254,7 @@ final class ValueResolver
if (!$classLike instanceof \PhpParser\Node\Stmt\ClassLike) {
throw new \Rector\Core\Exception\ShouldNotHappenException();
}
$class = $classLike->namespacedName->toString();
$class = (string) $this->nodeNameResolver->getName($classLike);
}
if ($constant === 'class') {
return $class;

View File

@ -39,7 +39,7 @@ final class LocalMethodCallFinder
if (!$class instanceof \PhpParser\Node\Stmt\Class_) {
return [];
}
$className = $class->namespacedName->toString();
$className = $this->nodeNameResolver->getName($class);
if (!\is_string($className)) {
return [];
}

View File

@ -65,7 +65,7 @@ final class ReflectionResolver
if ($classLike instanceof \PhpParser\Node\Stmt\Class_ && $this->isAnonymousClass($classLike)) {
return $this->reflectionProvider->getAnonymousClassReflection($classLike, $classLike->getAttribute(\Rector\NodeTypeResolver\Node\AttributeKey::SCOPE));
}
$className = $classLike->namespacedName->toString();
$className = (string) $this->nodeNameResolver->getName($classLike);
return $this->reflectionProvider->getClass($className);
}
/**
@ -138,7 +138,7 @@ final class ReflectionResolver
if (!$classLike instanceof \PhpParser\Node\Stmt\ClassLike) {
return null;
}
$className = $classLike->namespacedName->toString();
$className = $this->nodeNameResolver->getName($classLike);
if (!\is_string($className)) {
return null;
}

2
vendor/autoload.php vendored
View File

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

View File

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

View File

@ -4,7 +4,7 @@
namespace Composer\Autoload;
class ComposerStaticInit3df73c5913e3a545ac80115fbce4e846
class ComposerStaticInit8fdd9ac09b584df9d2de5ef5cdabc39f
{
public static $files = array (
'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php',
@ -3530,9 +3530,9 @@ class ComposerStaticInit3df73c5913e3a545ac80115fbce4e846
public static function getInitializer(ClassLoader $loader)
{
return \Closure::bind(function () use ($loader) {
$loader->prefixLengthsPsr4 = ComposerStaticInit3df73c5913e3a545ac80115fbce4e846::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInit3df73c5913e3a545ac80115fbce4e846::$prefixDirsPsr4;
$loader->classMap = ComposerStaticInit3df73c5913e3a545ac80115fbce4e846::$classMap;
$loader->prefixLengthsPsr4 = ComposerStaticInit8fdd9ac09b584df9d2de5ef5cdabc39f::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInit8fdd9ac09b584df9d2de5ef5cdabc39f::$prefixDirsPsr4;
$loader->classMap = ComposerStaticInit8fdd9ac09b584df9d2de5ef5cdabc39f::$classMap;
}, null, ClassLoader::class);
}

View File

@ -828,17 +828,17 @@
},
{
"name": "phpstan\/phpstan",
"version": "1.1.1",
"version_normalized": "1.1.1.0",
"version": "1.1.2",
"version_normalized": "1.1.2.0",
"source": {
"type": "git",
"url": "https:\/\/github.com\/phpstan\/phpstan.git",
"reference": "cb317029197236c571c1b9305b8dd12850d8d85c"
"reference": "bcea0ae85868a89d5789c75f012c93129f842934"
},
"dist": {
"type": "zip",
"url": "https:\/\/api.github.com\/repos\/phpstan\/phpstan\/zipball\/cb317029197236c571c1b9305b8dd12850d8d85c",
"reference": "cb317029197236c571c1b9305b8dd12850d8d85c",
"url": "https:\/\/api.github.com\/repos\/phpstan\/phpstan\/zipball\/bcea0ae85868a89d5789c75f012c93129f842934",
"reference": "bcea0ae85868a89d5789c75f012c93129f842934",
"shasum": ""
},
"require": {
@ -847,7 +847,7 @@
"conflict": {
"phpstan\/phpstan-shim": "*"
},
"time": "2021-11-06T22:46:47+00:00",
"time": "2021-11-09T12:41:09+00:00",
"bin": [
"phpstan",
"phpstan.phar"
@ -871,7 +871,7 @@
"description": "PHPStan - PHP Static Analysis Tool",
"support": {
"issues": "https:\/\/github.com\/phpstan\/phpstan\/issues",
"source": "https:\/\/github.com\/phpstan\/phpstan\/tree\/1.1.1"
"source": "https:\/\/github.com\/phpstan\/phpstan\/tree\/1.1.2"
},
"funding": [
{

File diff suppressed because one or more lines are too long

Binary file not shown.

View File

@ -1,16 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEE0yaA1ZV9xxFr4pwUzxoQjQ565yAFAmGHBdYACgkQzxoQjQ56
5yDA2Q//QEd6FY/nz43QA1sp7ZYMJMV8mTbsXedZcQS0w8wmyLLjwnva0dWt3dFk
yH5fycFrDdhgRzN5KnjB6geszn6QBzJ+qqBN2c5S/UfPGz7lvulc3EhzlfVWLnbC
QUGvfUBhiD5eRCLlfJ8k5NOnG6OkLahOAeMUktFZKFmhEEr8frrl7VO3jU2nE0Jy
kPAamRZSVbnqKNZElD0WIz9NmIdlY/AgmHSZAeO+X4BzVQ6ifCvh9c6s7tNQyUdK
14gxXCXNj2cYd31ewLo6d2d++g4vW1KPlO5r3P8hMszODuiEs7vI8ZkGVu7GFEnM
PFdbrxvLpyKuTqPq/0iZ8vWIPpDe9/UQiEEyFGStADSdwHScvEMhVvZTDUqZHtS8
CQrwHNXGxHCjmkh+TdK60DjkGH7fyloUNztLu1qMheSy4lsasLtoS43RArevPLpv
+xQCU0cvuNgFarYm9jac/hJZIIUEnlYLd5gG3F8MCxDk88TfxkAaII6jE9F1VWKg
oEeXDKDYuYfyouOUXkCWKteofY+Mn1cSRt5TwYUS5vEHRwaQS9CPHrHgEugcuHXp
Vu3lTeN6Sf+uzA91h8xju0ptzTbDtsc3E9l81hCWNCu2xlU2ga/Dzd+8sm5FOiFD
4E0tr5EGvv41THSa1QYjBjfHqC1OMCB6VITQeWIO2Ea9t7n0KE8=
=QIdo
iQIzBAABCgAdFiEE0yaA1ZV9xxFr4pwUzxoQjQ565yAFAmGKbGQACgkQzxoQjQ56
5yAy7BAAgT9+V81RuOMz6F16uqm4gXH1ebioWokEvVb6ZR2fk7p3/m14STmmRkwe
MIkxzWKtx/wSC6VafqAtkBPNxpo2j5QU0pmfMAvkPHh79d2lWmUaJmF71I/DCNnh
pcZNJLe5x+YTDKU6NnwMlyZEvdaWmyJ2MCf2apBZIJ7axefEJRVVin2pshhXwbtN
dHhrT9yFYe/vqOkOLtGDWw+yT1I6he7IpoYZUTyO9b7eadC0ga6Bet7jibNL8JBE
cGcB2MFg9bvif0PgIOio0jQXAWjf0ZBXPvoOwTRCqq/UOPTL8SRtiflAFiFOAzk/
FRQVC0+26NsGx7R8kS5FZNOHYTIElY1ElyzFk8HWgqrYIvzDNLtkJ68178rDJ29f
GyAax4P+gN13biyXQycQHhXDfHN1UytopldiRkitXVFGq92sz6BFgQDLF9yxQOm1
iL5oxWSVf6rM8AOc3DV9Aa1kCpG6FrZPJ66NBgJLzTpKARzt7CM+M8VQNA/KnHB3
8Mt0WmAeRORSnBWQksOlnA4VUkxWDGkZGVBWMRist7gghfG7n7HxTAUAk1oo7j2b
/gTwbeOjv/330uZG31e+hCcaj/EcocHvglegWCPMmIhpXqn25TC+87QkGt2wb6z6
dpzTdy3Pimr5BK2YrN1+Le33CYeHKlc+6XL34BEVebAQ/A9OB/M=
=k3NZ
-----END PGP SIGNATURE-----

View File

@ -12,8 +12,8 @@ if (!class_exists('GenerateChangelogCommand', false) && !interface_exists('Gener
if (!class_exists('AutoloadIncluder', false) && !interface_exists('AutoloadIncluder', false) && !trait_exists('AutoloadIncluder', false)) {
spl_autoload_call('RectorPrefix20211109\AutoloadIncluder');
}
if (!class_exists('ComposerAutoloaderInit3df73c5913e3a545ac80115fbce4e846', false) && !interface_exists('ComposerAutoloaderInit3df73c5913e3a545ac80115fbce4e846', false) && !trait_exists('ComposerAutoloaderInit3df73c5913e3a545ac80115fbce4e846', false)) {
spl_autoload_call('RectorPrefix20211109\ComposerAutoloaderInit3df73c5913e3a545ac80115fbce4e846');
if (!class_exists('ComposerAutoloaderInit8fdd9ac09b584df9d2de5ef5cdabc39f', false) && !interface_exists('ComposerAutoloaderInit8fdd9ac09b584df9d2de5ef5cdabc39f', false) && !trait_exists('ComposerAutoloaderInit8fdd9ac09b584df9d2de5ef5cdabc39f', false)) {
spl_autoload_call('RectorPrefix20211109\ComposerAutoloaderInit8fdd9ac09b584df9d2de5ef5cdabc39f');
}
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('RectorPrefix20211109\Helmich\TypoScriptParser\Parser\AST\Statement');
@ -3309,9 +3309,9 @@ if (!function_exists('print_node')) {
return \RectorPrefix20211109\print_node(...func_get_args());
}
}
if (!function_exists('composerRequire3df73c5913e3a545ac80115fbce4e846')) {
function composerRequire3df73c5913e3a545ac80115fbce4e846() {
return \RectorPrefix20211109\composerRequire3df73c5913e3a545ac80115fbce4e846(...func_get_args());
if (!function_exists('composerRequire8fdd9ac09b584df9d2de5ef5cdabc39f')) {
function composerRequire8fdd9ac09b584df9d2de5ef5cdabc39f() {
return \RectorPrefix20211109\composerRequire8fdd9ac09b584df9d2de5ef5cdabc39f(...func_get_args());
}
}
if (!function_exists('parseArgs')) {