From f209d776cecfd254f1d11c05357cc459a46a0067 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Thu, 16 Oct 2025 15:51:04 +0700 Subject: [PATCH 1/2] [CodeQuality] Skip closure use by ref on InlineArrayReturnAssignRector --- .../skip_use_closure_use_by_ref.php.inc | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 rules-tests/CodeQuality/Rector/ClassMethod/InlineArrayReturnAssignRector/Fixture/skip_use_closure_use_by_ref.php.inc diff --git a/rules-tests/CodeQuality/Rector/ClassMethod/InlineArrayReturnAssignRector/Fixture/skip_use_closure_use_by_ref.php.inc b/rules-tests/CodeQuality/Rector/ClassMethod/InlineArrayReturnAssignRector/Fixture/skip_use_closure_use_by_ref.php.inc new file mode 100644 index 00000000000..c35a374c51d --- /dev/null +++ b/rules-tests/CodeQuality/Rector/ClassMethod/InlineArrayReturnAssignRector/Fixture/skip_use_closure_use_by_ref.php.inc @@ -0,0 +1,20 @@ + Date: Thu, 16 Oct 2025 15:53:00 +0700 Subject: [PATCH 2/2] fix --- .../ClassMethod/InlineArrayReturnAssignRector.php | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/rules/CodeQuality/Rector/ClassMethod/InlineArrayReturnAssignRector.php b/rules/CodeQuality/Rector/ClassMethod/InlineArrayReturnAssignRector.php index 36c0a730442..04f999bcccc 100644 --- a/rules/CodeQuality/Rector/ClassMethod/InlineArrayReturnAssignRector.php +++ b/rules/CodeQuality/Rector/ClassMethod/InlineArrayReturnAssignRector.php @@ -8,6 +8,7 @@ use PhpParser\Node\Expr\Array_; use PhpParser\Node\Expr\ArrayDimFetch; use PhpParser\Node\Expr\Assign; +use PhpParser\Node\Expr\Closure; use PhpParser\Node\Expr\New_; use PhpParser\Node\Expr\Variable; use PhpParser\Node\FunctionLike; @@ -100,6 +101,18 @@ public function refactor(Node $node): ?Node return null; } } + + if ($node instanceof Closure) { + foreach ($node->uses as $use) { + if (! $use->byRef) { + continue; + } + + if ($this->isName($use->var, $returnedVariableName)) { + return null; + } + } + } } $emptyArrayAssign = $this->resolveDefaultEmptyArrayAssign($stmts, $returnedVariableName);