From 53ebf2bedce17edc5d06764b02c657ac5f534117 Mon Sep 17 00:00:00 2001 From: Ondrej Mirtes Date: Tue, 22 Sep 2026 21:38:23 +0200 Subject: [PATCH] Name the node types DataProviderDataRule wants It looks at what a data provider returns or yields, and registered for Node to catch Return_, Yield_ and YieldFrom - so it was called for every node in the analysed code just to reject it. PHPStan 2.3.0's MultipleNodeTypesRule lets it name the three classes instead. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01QL6WG3TUaXc6ggSoDLdorG --- src/Rules/PHPUnit/DataProviderDataRule.php | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/Rules/PHPUnit/DataProviderDataRule.php b/src/Rules/PHPUnit/DataProviderDataRule.php index 8df5d8b..81e0fbe 100644 --- a/src/Rules/PHPUnit/DataProviderDataRule.php +++ b/src/Rules/PHPUnit/DataProviderDataRule.php @@ -6,7 +6,7 @@ use PHPStan\Analyser\Scope; use PHPStan\BetterReflection\Reflection\ReflectionMethod; use PHPStan\Node\Expr\TypeExpr; -use PHPStan\Rules\Rule; +use PHPStan\Rules\MultipleNodeTypesRule; use PHPStan\Type\ObjectType; use PHPStan\Type\Type; use function array_slice; @@ -15,9 +15,9 @@ use const PHP_INT_MAX; /** - * @implements Rule + * @implements MultipleNodeTypesRule */ -class DataProviderDataRule implements Rule +class DataProviderDataRule implements MultipleNodeTypesRule { private TestMethodsHelper $testMethodsHelper; @@ -37,6 +37,11 @@ public function __construct( $this->PHPUnitVersion = $PHPUnitVersion; } + public function getNodeTypes(): array + { + return [Node\Stmt\Return_::class, Node\Expr\Yield_::class, Node\Expr\YieldFrom::class]; + } + public function getNodeType(): string { return Node::class;