From 95394e1b4898f53a47a0aff64e96d7e72f9d6354 Mon Sep 17 00:00:00 2001 From: Markus Staab Date: Sun, 19 Oct 2025 07:58:03 +0200 Subject: [PATCH 1/2] YieldDataProviderRector: Added failling test --- .../Fixture/yield_from_with_ifs.php.inc | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 rules-tests/CodeQuality/Rector/Class_/YieldDataProviderRector/Fixture/yield_from_with_ifs.php.inc diff --git a/rules-tests/CodeQuality/Rector/Class_/YieldDataProviderRector/Fixture/yield_from_with_ifs.php.inc b/rules-tests/CodeQuality/Rector/Class_/YieldDataProviderRector/Fixture/yield_from_with_ifs.php.inc new file mode 100644 index 00000000..ebb91e7b --- /dev/null +++ b/rules-tests/CodeQuality/Rector/Class_/YieldDataProviderRector/Fixture/yield_from_with_ifs.php.inc @@ -0,0 +1,61 @@ + +----- + From dcb414bee723dac6b23065f1d6d5d2b180033c57 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Mon, 20 Oct 2025 00:02:06 +0700 Subject: [PATCH 2/2] [CodeQuality] Skip with if on YieldDataProviderRector with yield from --- .../Fixture/skip_with_if.php.inc | 29 +++++++++ .../Fixture/yield_from_with_ifs.php.inc | 61 ------------------- .../Rector/Class_/YieldDataProviderRector.php | 3 +- 3 files changed, 31 insertions(+), 62 deletions(-) create mode 100644 rules-tests/CodeQuality/Rector/Class_/YieldDataProviderRector/Fixture/skip_with_if.php.inc delete mode 100644 rules-tests/CodeQuality/Rector/Class_/YieldDataProviderRector/Fixture/yield_from_with_ifs.php.inc diff --git a/rules-tests/CodeQuality/Rector/Class_/YieldDataProviderRector/Fixture/skip_with_if.php.inc b/rules-tests/CodeQuality/Rector/Class_/YieldDataProviderRector/Fixture/skip_with_if.php.inc new file mode 100644 index 00000000..79325b20 --- /dev/null +++ b/rules-tests/CodeQuality/Rector/Class_/YieldDataProviderRector/Fixture/skip_with_if.php.inc @@ -0,0 +1,29 @@ + ------ - diff --git a/rules/CodeQuality/Rector/Class_/YieldDataProviderRector.php b/rules/CodeQuality/Rector/Class_/YieldDataProviderRector.php index 1dbecabb..fe64c818 100644 --- a/rules/CodeQuality/Rector/Class_/YieldDataProviderRector.php +++ b/rules/CodeQuality/Rector/Class_/YieldDataProviderRector.php @@ -127,12 +127,13 @@ private function collectReturnArrayNodesFromClassMethod(ClassMethod $classMethod return null; } + $totalStmts = count($classMethod->stmts); foreach ($classMethod->stmts as $statement) { if ($statement instanceof Expression) { $statement = $statement->expr; } - if ($statement instanceof Return_ || $statement instanceof YieldFrom) { + if ($statement instanceof Return_ || ($statement instanceof YieldFrom && $totalStmts === 1)) { $returnedExpr = $statement->expr; if (! $returnedExpr instanceof Array_) { return null;