Updated Rector to commit 2dd395167cdc146a1b566bae9c5c2f2885e55c16

2dd395167c [TypeDeclaration] Skip assign in construct with method call property same name on RestoreDefaultNullToNullableTypePropertyRector (#5556)
This commit is contained in:
Tomas Votruba 2024-02-04 20:46:49 +00:00
parent 9464484f39
commit e394be7dd2
2 changed files with 16 additions and 5 deletions

View File

@ -20,6 +20,7 @@ use PHPStan\Type\ObjectType;
use Rector\NodeAnalyzer\PropertyFetchAnalyzer;
use Rector\NodeTypeResolver\NodeTypeResolver;
use Rector\PhpDocParser\NodeTraverser\SimpleCallableNodeTraverser;
use Rector\PhpParser\Comparing\NodeComparator;
use Rector\TypeDeclaration\Matcher\PropertyAssignMatcher;
use Rector\TypeDeclaration\NodeAnalyzer\AutowiredClassMethodOrPropertyAnalyzer;
use Rector\ValueObject\MethodName;
@ -50,17 +51,23 @@ final class ConstructorAssignDetector
* @var \Rector\NodeAnalyzer\PropertyFetchAnalyzer
*/
private $propertyFetchAnalyzer;
/**
* @readonly
* @var \Rector\PhpParser\Comparing\NodeComparator
*/
private $nodeComparator;
/**
* @var string
*/
private const IS_FIRST_LEVEL_STATEMENT = 'first_level_stmt';
public function __construct(NodeTypeResolver $nodeTypeResolver, PropertyAssignMatcher $propertyAssignMatcher, SimpleCallableNodeTraverser $simpleCallableNodeTraverser, AutowiredClassMethodOrPropertyAnalyzer $autowiredClassMethodOrPropertyAnalyzer, PropertyFetchAnalyzer $propertyFetchAnalyzer)
public function __construct(NodeTypeResolver $nodeTypeResolver, PropertyAssignMatcher $propertyAssignMatcher, SimpleCallableNodeTraverser $simpleCallableNodeTraverser, AutowiredClassMethodOrPropertyAnalyzer $autowiredClassMethodOrPropertyAnalyzer, PropertyFetchAnalyzer $propertyFetchAnalyzer, NodeComparator $nodeComparator)
{
$this->nodeTypeResolver = $nodeTypeResolver;
$this->propertyAssignMatcher = $propertyAssignMatcher;
$this->simpleCallableNodeTraverser = $simpleCallableNodeTraverser;
$this->autowiredClassMethodOrPropertyAnalyzer = $autowiredClassMethodOrPropertyAnalyzer;
$this->propertyFetchAnalyzer = $propertyFetchAnalyzer;
$this->nodeComparator = $nodeComparator;
}
public function isPropertyAssigned(ClassLike $classLike, string $propertyName) : bool
{
@ -179,14 +186,18 @@ final class ConstructorAssignDetector
private function isPropertyUsedInAssign(Assign $assign, string $propertyName) : bool
{
$nodeFinder = new NodeFinder();
return (bool) $nodeFinder->findFirst($assign->expr, static function (Node $node) use($propertyName) : ?bool {
$var = $assign->var;
return (bool) $nodeFinder->findFirst($assign->expr, function (Node $node) use($propertyName, $var) : ?bool {
if (!$node instanceof PropertyFetch) {
return null;
}
if (!$node->name instanceof Identifier) {
return null;
}
return $node->name->toString() === $propertyName;
if ($node->name->toString() !== $propertyName) {
return null;
}
return $this->nodeComparator->areNodesEqual($node, $var);
});
}
}

View File

@ -19,12 +19,12 @@ final class VersionResolver
* @api
* @var string
*/
public const PACKAGE_VERSION = '0.19.6';
public const PACKAGE_VERSION = '2dd395167cdc146a1b566bae9c5c2f2885e55c16';
/**
* @api
* @var string
*/
public const RELEASE_DATE = '2024-02-04 13:42:24';
public const RELEASE_DATE = '2024-02-05 03:44:33';
/**
* @var int
*/