Updated Rector to commit d864d7b856e7bb8b7e98db96793ceb1036c1bf7b

d864d7b856 [Privatization] Skip method with parent call (#5283)
This commit is contained in:
Tomas Votruba 2023-11-23 16:52:05 +00:00
parent 2a2c91cc0a
commit c92985cc7e
2 changed files with 22 additions and 4 deletions

View File

@ -4,10 +4,12 @@ declare (strict_types=1);
namespace Rector\Privatization\Rector\ClassMethod;
use PhpParser\Node;
use PhpParser\Node\Expr\StaticCall;
use PhpParser\Node\Stmt\Class_;
use PhpParser\Node\Stmt\ClassMethod;
use PHPStan\Analyser\Scope;
use PHPStan\Reflection\ClassReflection;
use Rector\Core\PhpParser\Node\BetterNodeFinder;
use Rector\Core\Rector\AbstractScopeAwareRector;
use Rector\Privatization\Guard\OverrideByParentClassGuard;
use Rector\Privatization\NodeManipulator\VisibilityManipulator;
@ -34,11 +36,17 @@ final class PrivatizeFinalClassMethodRector extends AbstractScopeAwareRector
* @var \Rector\Privatization\Guard\OverrideByParentClassGuard
*/
private $overrideByParentClassGuard;
public function __construct(ClassMethodVisibilityGuard $classMethodVisibilityGuard, VisibilityManipulator $visibilityManipulator, OverrideByParentClassGuard $overrideByParentClassGuard)
/**
* @readonly
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder
*/
private $betterNodeFinder;
public function __construct(ClassMethodVisibilityGuard $classMethodVisibilityGuard, VisibilityManipulator $visibilityManipulator, OverrideByParentClassGuard $overrideByParentClassGuard, BetterNodeFinder $betterNodeFinder)
{
$this->classMethodVisibilityGuard = $classMethodVisibilityGuard;
$this->visibilityManipulator = $visibilityManipulator;
$this->overrideByParentClassGuard = $overrideByParentClassGuard;
$this->betterNodeFinder = $betterNodeFinder;
}
public function getRuleDefinition() : RuleDefinition
{
@ -109,6 +117,16 @@ CODE_SAMPLE
if (\strncmp($methodName, 'createComponent', \strlen('createComponent')) === 0) {
return \true;
}
return !$classMethod->isProtected();
if (!$classMethod->isProtected()) {
return \true;
}
// if has parent call, its probably overriding parent one → skip it
$hasParentCall = (bool) $this->betterNodeFinder->findFirst((array) $classMethod->stmts, function (Node $node) : bool {
if (!$node instanceof StaticCall) {
return \false;
}
return $this->isName($node->class, 'parent');
});
return $hasParentCall;
}
}

View File

@ -19,12 +19,12 @@ final class VersionResolver
* @api
* @var string
*/
public const PACKAGE_VERSION = '72c0216eb84088c809938ed26f5d109fc9737485';
public const PACKAGE_VERSION = 'd864d7b856e7bb8b7e98db96793ceb1036c1bf7b';
/**
* @api
* @var string
*/
public const RELEASE_DATE = '2023-11-23 17:21:39';
public const RELEASE_DATE = '2023-11-23 16:49:59';
/**
* @var int
*/