From c23b2384d345cada657e33cebb7185e6f854381e Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Wed, 27 Mar 2024 15:29:07 +0000 Subject: [PATCH] Updated Rector to commit 3e6a4923d463e2a2d104ac283dae04343ee2a2d0 https://github.com/rectorphp/rector-src/commit/3e6a4923d463e2a2d104ac283dae04343ee2a2d0 [DeadCode] Skip implements interface on RemoveUnusedConstructorParamRector (#5778) --- .../RemoveUnusedConstructorParamRector.php | 20 ++++++++++++++++++- src/Application/VersionResolver.php | 4 ++-- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/rules/DeadCode/Rector/ClassMethod/RemoveUnusedConstructorParamRector.php b/rules/DeadCode/Rector/ClassMethod/RemoveUnusedConstructorParamRector.php index a399ff6f4ba..e76b671304a 100644 --- a/rules/DeadCode/Rector/ClassMethod/RemoveUnusedConstructorParamRector.php +++ b/rules/DeadCode/Rector/ClassMethod/RemoveUnusedConstructorParamRector.php @@ -6,8 +6,10 @@ namespace Rector\DeadCode\Rector\ClassMethod; use PhpParser\Node; use PhpParser\Node\Stmt\Class_; use PhpParser\Node\Stmt\ClassMethod; +use PHPStan\Reflection\ClassReflection; use Rector\NodeAnalyzer\ParamAnalyzer; use Rector\Rector\AbstractRector; +use Rector\Reflection\ReflectionResolver; use Rector\Removing\NodeManipulator\ComplexNodeRemover; use Rector\ValueObject\MethodName; use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample; @@ -27,10 +29,16 @@ final class RemoveUnusedConstructorParamRector extends AbstractRector * @var \Rector\Removing\NodeManipulator\ComplexNodeRemover */ private $complexNodeRemover; - public function __construct(ParamAnalyzer $paramAnalyzer, ComplexNodeRemover $complexNodeRemover) + /** + * @readonly + * @var \Rector\Reflection\ReflectionResolver + */ + private $reflectionResolver; + public function __construct(ParamAnalyzer $paramAnalyzer, ComplexNodeRemover $complexNodeRemover, ReflectionResolver $reflectionResolver) { $this->paramAnalyzer = $paramAnalyzer; $this->complexNodeRemover = $complexNodeRemover; + $this->reflectionResolver = $reflectionResolver; } public function getRuleDefinition() : RuleDefinition { @@ -83,6 +91,16 @@ CODE_SAMPLE if ($constructorClassMethod->isAbstract()) { return null; } + $classReflection = $this->reflectionResolver->resolveClassReflection($node); + if (!$classReflection instanceof ClassReflection) { + return null; + } + $interfaces = $classReflection->getInterfaces(); + foreach ($interfaces as $interface) { + if ($interface->hasNativeMethod(MethodName::CONSTRUCT)) { + return null; + } + } $changedConstructorClassMethod = $this->processRemoveParams($constructorClassMethod); if (!$changedConstructorClassMethod instanceof ClassMethod) { return null; diff --git a/src/Application/VersionResolver.php b/src/Application/VersionResolver.php index 5c7e11b9600..bfe882799bb 100644 --- a/src/Application/VersionResolver.php +++ b/src/Application/VersionResolver.php @@ -19,12 +19,12 @@ final class VersionResolver * @api * @var string */ - public const PACKAGE_VERSION = 'cd23b1fa90343d4f4b1c8f0d606c0eba8d194597'; + public const PACKAGE_VERSION = '3e6a4923d463e2a2d104ac283dae04343ee2a2d0'; /** * @api * @var string */ - public const RELEASE_DATE = '2024-03-26 20:16:11'; + public const RELEASE_DATE = '2024-03-27 22:26:48'; /** * @var int */