Skip to content

Commit c717c8f

Browse files
phpstan-botclaude
andcommitted
Convert DuplicateDeclarationHelper to AutowiredService instance
Rule helpers should be instances with AutowiredService so that dependencies can be injected into them later. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent f59c8fe commit c717c8f

5 files changed

Lines changed: 15 additions & 5 deletions

File tree

src/Rules/Classes/DuplicateDeclarationHelper.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
use PhpParser\Node\Stmt\ClassConst;
77
use PhpParser\Node\Stmt\ClassLike;
88
use PhpParser\Node\Stmt\EnumCase;
9+
use PHPStan\DependencyInjection\AutowiredService;
910
use PHPStan\Rules\IdentifierRuleError;
1011
use PHPStan\Rules\RuleErrorBuilder;
1112
use PHPStan\ShouldNotHappenException;
@@ -14,13 +15,14 @@
1415
use function sprintf;
1516
use function strtolower;
1617

18+
#[AutowiredService]
1719
final class DuplicateDeclarationHelper
1820
{
1921

2022
/**
2123
* @return list<IdentifierRuleError>
2224
*/
23-
public static function checkClassLike(ClassLike $classLike, string $displayName, string $identifierType): array
25+
public function checkClassLike(ClassLike $classLike, string $displayName, string $identifierType): array
2426
{
2527
$errors = [];
2628

src/Rules/Classes/DuplicateDeclarationRule.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@
1616
final class DuplicateDeclarationRule implements Rule
1717
{
1818

19+
public function __construct(private DuplicateDeclarationHelper $helper)
20+
{
21+
}
22+
1923
public function getNodeType(): string
2024
{
2125
return InClassNode::class;
@@ -25,7 +29,7 @@ public function processNode(Node $node, Scope $scope): array
2529
{
2630
$classReflection = $node->getClassReflection();
2731

28-
return DuplicateDeclarationHelper::checkClassLike(
32+
return $this->helper->checkClassLike(
2933
$node->getOriginalNode(),
3034
$classReflection->getDisplayName(),
3135
strtolower($classReflection->getClassTypeDescription()),

src/Rules/Classes/DuplicateTraitDeclarationRule.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,18 @@
1515
final class DuplicateTraitDeclarationRule implements Rule
1616
{
1717

18+
public function __construct(private DuplicateDeclarationHelper $helper)
19+
{
20+
}
21+
1822
public function getNodeType(): string
1923
{
2024
return InTraitNode::class;
2125
}
2226

2327
public function processNode(Node $node, Scope $scope): array
2428
{
25-
return DuplicateDeclarationHelper::checkClassLike(
29+
return $this->helper->checkClassLike(
2630
$node->getOriginalNode(),
2731
$node->getTraitReflection()->getDisplayName(),
2832
'trait',

tests/PHPStan/Rules/Classes/DuplicateDeclarationRuleTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ class DuplicateDeclarationRuleTest extends RuleTestCase
1414

1515
protected function getRule(): Rule
1616
{
17-
return new DuplicateDeclarationRule();
17+
return new DuplicateDeclarationRule(new DuplicateDeclarationHelper());
1818
}
1919

2020
public function testDuplicateDeclarations(): void

tests/PHPStan/Rules/Classes/DuplicateTraitDeclarationRuleTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ class DuplicateTraitDeclarationRuleTest extends RuleTestCase
1313

1414
protected function getRule(): Rule
1515
{
16-
return new DuplicateTraitDeclarationRule();
16+
return new DuplicateTraitDeclarationRule(new DuplicateDeclarationHelper());
1717
}
1818

1919
public function testBug14250(): void

0 commit comments

Comments
 (0)