From 20b247988a79e5c3e74c107b42eaec8a8e8b8ec5 Mon Sep 17 00:00:00 2001 From: Pablo Largo Mohedano Date: Mon, 17 Nov 2025 12:49:28 +0100 Subject: [PATCH 1/2] fix #9493 --- .../Fixture/class_callable_array.php.inc | 4 +-- .../Fixture/supports_static_self_call.php.inc | 31 +++++++++++++++++++ ...FromCallableToFirstClassCallableRector.php | 7 ++++- 3 files changed, 39 insertions(+), 3 deletions(-) create mode 100644 rules-tests/CodingStyle/Rector/FuncCall/ClosureFromCallableToFirstClassCallableRector/Fixture/supports_static_self_call.php.inc diff --git a/rules-tests/CodingStyle/Rector/FuncCall/ClosureFromCallableToFirstClassCallableRector/Fixture/class_callable_array.php.inc b/rules-tests/CodingStyle/Rector/FuncCall/ClosureFromCallableToFirstClassCallableRector/Fixture/class_callable_array.php.inc index 6d2c7cfee7c..7f9847b4f19 100644 --- a/rules-tests/CodingStyle/Rector/FuncCall/ClosureFromCallableToFirstClassCallableRector/Fixture/class_callable_array.php.inc +++ b/rules-tests/CodingStyle/Rector/FuncCall/ClosureFromCallableToFirstClassCallableRector/Fixture/class_callable_array.php.inc @@ -23,7 +23,7 @@ use Closure; \SomeClass::staticMethod(...); \Foo\SomeClass::staticMethod(...); -\Rector\Tests\CodingStyle\Rector\FuncCall\ClosureFromCallableToFirstClassCallableRector\Fixture\SomeClass::staticMethod(...); -\SomeNamespace\Foo\SomeClass::staticMethod(...); +Rector\Tests\CodingStyle\Rector\FuncCall\ClosureFromCallableToFirstClassCallableRector\Fixture\SomeClass::staticMethod(...); +SomeNamespace\Foo\SomeClass::staticMethod(...); ?> diff --git a/rules-tests/CodingStyle/Rector/FuncCall/ClosureFromCallableToFirstClassCallableRector/Fixture/supports_static_self_call.php.inc b/rules-tests/CodingStyle/Rector/FuncCall/ClosureFromCallableToFirstClassCallableRector/Fixture/supports_static_self_call.php.inc new file mode 100644 index 00000000000..45bd4313818 --- /dev/null +++ b/rules-tests/CodingStyle/Rector/FuncCall/ClosureFromCallableToFirstClassCallableRector/Fixture/supports_static_self_call.php.inc @@ -0,0 +1,31 @@ + +----- + diff --git a/rules/CodingStyle/Rector/FuncCall/ClosureFromCallableToFirstClassCallableRector.php b/rules/CodingStyle/Rector/FuncCall/ClosureFromCallableToFirstClassCallableRector.php index ea351a52d18..a131da57d3e 100644 --- a/rules/CodingStyle/Rector/FuncCall/ClosureFromCallableToFirstClassCallableRector.php +++ b/rules/CodingStyle/Rector/FuncCall/ClosureFromCallableToFirstClassCallableRector.php @@ -97,7 +97,12 @@ public function refactor(Node $node): ?Node return null; } - $classNode = new FullyQualified($array->items[0]->value->class->name); + if ($array->items[0]->value->class instanceof Name) { + $classNode = new Name($array->items[0]->value->class->name); + } else { + $classNode = new FullyQualified($array->items[0]->value->class->name); + } + } elseif ($array->items[0]->value instanceof FullyQualified) { $classNode = new FullyQualified($array->items[0]->value->name); } else { From a752711a64bd71a35df1b954a29006586fe4373b Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Mon, 17 Nov 2025 19:00:44 +0700 Subject: [PATCH 2/2] early check FullyQualified --- .../Fixture/class_callable_array.php.inc | 4 ++-- .../ClosureFromCallableToFirstClassCallableRector.php | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/rules-tests/CodingStyle/Rector/FuncCall/ClosureFromCallableToFirstClassCallableRector/Fixture/class_callable_array.php.inc b/rules-tests/CodingStyle/Rector/FuncCall/ClosureFromCallableToFirstClassCallableRector/Fixture/class_callable_array.php.inc index 7f9847b4f19..6d2c7cfee7c 100644 --- a/rules-tests/CodingStyle/Rector/FuncCall/ClosureFromCallableToFirstClassCallableRector/Fixture/class_callable_array.php.inc +++ b/rules-tests/CodingStyle/Rector/FuncCall/ClosureFromCallableToFirstClassCallableRector/Fixture/class_callable_array.php.inc @@ -23,7 +23,7 @@ use Closure; \SomeClass::staticMethod(...); \Foo\SomeClass::staticMethod(...); -Rector\Tests\CodingStyle\Rector\FuncCall\ClosureFromCallableToFirstClassCallableRector\Fixture\SomeClass::staticMethod(...); -SomeNamespace\Foo\SomeClass::staticMethod(...); +\Rector\Tests\CodingStyle\Rector\FuncCall\ClosureFromCallableToFirstClassCallableRector\Fixture\SomeClass::staticMethod(...); +\SomeNamespace\Foo\SomeClass::staticMethod(...); ?> diff --git a/rules/CodingStyle/Rector/FuncCall/ClosureFromCallableToFirstClassCallableRector.php b/rules/CodingStyle/Rector/FuncCall/ClosureFromCallableToFirstClassCallableRector.php index a131da57d3e..81300fb5181 100644 --- a/rules/CodingStyle/Rector/FuncCall/ClosureFromCallableToFirstClassCallableRector.php +++ b/rules/CodingStyle/Rector/FuncCall/ClosureFromCallableToFirstClassCallableRector.php @@ -97,10 +97,10 @@ public function refactor(Node $node): ?Node return null; } - if ($array->items[0]->value->class instanceof Name) { - $classNode = new Name($array->items[0]->value->class->name); - } else { + if ($array->items[0]->value->class instanceof FullyQualified) { $classNode = new FullyQualified($array->items[0]->value->class->name); + } else { + $classNode = new Name($array->items[0]->value->class->name); } } elseif ($array->items[0]->value instanceof FullyQualified) {