From 6b3062af61e5c7a84e68cda4acc2184771716b44 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Mon, 19 Oct 2026 22:30:18 +0200 Subject: [PATCH] Convert nested arrow functions to anonymous functions in a single pass --- .../ArrowFunctionToAnonymousFunctionRector.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/rules/DowngradePhp74/Rector/ArrowFunction/ArrowFunctionToAnonymousFunctionRector.php b/rules/DowngradePhp74/Rector/ArrowFunction/ArrowFunctionToAnonymousFunctionRector.php index fdb7baf4..3c18c790 100644 --- a/rules/DowngradePhp74/Rector/ArrowFunction/ArrowFunctionToAnonymousFunctionRector.php +++ b/rules/DowngradePhp74/Rector/ArrowFunction/ArrowFunctionToAnonymousFunctionRector.php @@ -80,6 +80,12 @@ public function getNodeTypes(): array */ public function refactor(Node $node): Closure { + // convert a directly nested arrow function in the same pass, so a deep chain + // downgrades in one traverse instead of one level per pass + if ($node->expr instanceof ArrowFunction) { + $node->expr = $this->refactor($node->expr); + } + $stmts = [new Return_($node->expr)]; $anonymousFunctionFactory = $this->anonymousFunctionFactory->create(