From fe97671b1a6aa309e929da210d941cc4f31d6476 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Tamarelle?= Date: Tue, 21 Jan 2025 11:27:41 +0100 Subject: [PATCH] Deprecated parent constructor must not be called --- .../RequireParentConstructCallRule.php | 1 + .../data/call-to-parent-constructor.php | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/src/Rules/Classes/RequireParentConstructCallRule.php b/src/Rules/Classes/RequireParentConstructCallRule.php index 31b2faf5..77595810 100644 --- a/src/Rules/Classes/RequireParentConstructCallRule.php +++ b/src/Rules/Classes/RequireParentConstructCallRule.php @@ -113,6 +113,7 @@ private function getParentConstructorClass($classReflection) && $constructor->getDeclaringClass()->getName() === $classReflection->getParentClass()->getName() && !$constructor->isAbstract() && !$constructor->isPrivate() + && !$constructor->isDeprecated() ) || ( $constructorWithClassName !== null && $constructorWithClassName->getDeclaringClass()->getName() === $classReflection->getParentClass()->getName() diff --git a/tests/Rules/Classes/data/call-to-parent-constructor.php b/tests/Rules/Classes/data/call-to-parent-constructor.php index 48975e9d..12ddab7d 100644 --- a/tests/Rules/Classes/data/call-to-parent-constructor.php +++ b/tests/Rules/Classes/data/call-to-parent-constructor.php @@ -181,3 +181,22 @@ public function __construct() } } + +class DeprecatedConstructor +{ + /** @deprecated */ + public function __construct() + { + + } + +} + +class ExtendsDeprecatedConstructor extends DeprecatedConstructor +{ + public function __construct() + { + // should not call deprecated parent + } + +}