From 87fa142a9ed6a023bc65cfb58624dccc06bcbd47 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Mon, 26 Jan 2026 19:46:33 +0700 Subject: [PATCH 1/2] [PHPUnit 12] Skip First class callable on DirectInstanceOverMockArgRector --- .../Fixture/skip_first_class_callable.php.inc | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 rules-tests/CodeQuality/Rector/CallLike/DirectInstanceOverMockArgRector/Fixture/skip_first_class_callable.php.inc diff --git a/rules-tests/CodeQuality/Rector/CallLike/DirectInstanceOverMockArgRector/Fixture/skip_first_class_callable.php.inc b/rules-tests/CodeQuality/Rector/CallLike/DirectInstanceOverMockArgRector/Fixture/skip_first_class_callable.php.inc new file mode 100644 index 00000000..942d49ce --- /dev/null +++ b/rules-tests/CodeQuality/Rector/CallLike/DirectInstanceOverMockArgRector/Fixture/skip_first_class_callable.php.inc @@ -0,0 +1,13 @@ + Date: Mon, 26 Jan 2026 19:48:25 +0700 Subject: [PATCH 2/2] fix --- .../Fixture/skip_first_class_callable.php.inc | 2 +- .../Rector/CallLike/DirectInstanceOverMockArgRector.php | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/rules-tests/CodeQuality/Rector/CallLike/DirectInstanceOverMockArgRector/Fixture/skip_first_class_callable.php.inc b/rules-tests/CodeQuality/Rector/CallLike/DirectInstanceOverMockArgRector/Fixture/skip_first_class_callable.php.inc index 942d49ce..ddf4f569 100644 --- a/rules-tests/CodeQuality/Rector/CallLike/DirectInstanceOverMockArgRector/Fixture/skip_first_class_callable.php.inc +++ b/rules-tests/CodeQuality/Rector/CallLike/DirectInstanceOverMockArgRector/Fixture/skip_first_class_callable.php.inc @@ -10,4 +10,4 @@ final class SkipFirstClassCallable extends TestCase { AnyClass::staticRun(...); } -} \ No newline at end of file +} diff --git a/rules/CodeQuality/Rector/CallLike/DirectInstanceOverMockArgRector.php b/rules/CodeQuality/Rector/CallLike/DirectInstanceOverMockArgRector.php index dd2e58f8..ec90e9d1 100644 --- a/rules/CodeQuality/Rector/CallLike/DirectInstanceOverMockArgRector.php +++ b/rules/CodeQuality/Rector/CallLike/DirectInstanceOverMockArgRector.php @@ -101,10 +101,13 @@ public function refactor(Node $node): MethodCall|StaticCall|New_|ArrayItem|null $hasChanged = false; if ($node instanceof ArrayItem) { - return $this->refactorArrayItem($node); } + if ($node->isFirstClassCallable()) { + return null; + } + foreach ($node->getArgs() as $arg) { $firstArg = $this->matchCreateMockMethodCallArg($arg->value); if (! $firstArg instanceof Arg) {