From f2014a26415870060c5e6f6b3fc328e4ed857252 Mon Sep 17 00:00:00 2001 From: TomasVotruba Date: Tue, 19 Dec 2017 22:16:06 +0100 Subject: [PATCH] [PHPUnit] fix arguments moving up for array_key_exists() --- .../Contrib/PHPUnit/SpecificMethodRector.php | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/src/Rector/Contrib/PHPUnit/SpecificMethodRector.php b/src/Rector/Contrib/PHPUnit/SpecificMethodRector.php index 258c1a75921..e769a99e1af 100644 --- a/src/Rector/Contrib/PHPUnit/SpecificMethodRector.php +++ b/src/Rector/Contrib/PHPUnit/SpecificMethodRector.php @@ -3,7 +3,6 @@ namespace Rector\Rector\Contrib\PHPUnit; use PhpParser\Node; -use PhpParser\Node\Expr\Array_; use PhpParser\Node\Expr\Empty_; use PhpParser\Node\Expr\FuncCall; use PhpParser\Node\Expr\MethodCall; @@ -53,8 +52,6 @@ final class SpecificMethodRector extends AbstractRector public function isCandidate(Node $node): bool { - $this->activeFuncCallName = null; - if (! $this->methodCallAnalyzer->isTypesAndMethods( $node, ['PHPUnit\Framework\TestCase', 'PHPUnit_Framework_TestCase'], @@ -90,7 +87,7 @@ final class SpecificMethodRector extends AbstractRector public function refactor(Node $methodCallNode): ?Node { $this->renameMethod($methodCallNode); - $this->moveArgumentUp($methodCallNode); + $this->moveFunctionArgumentsUp($methodCallNode); return $methodCallNode; } @@ -112,22 +109,27 @@ final class SpecificMethodRector extends AbstractRector } } - private function moveArgumentUp(MethodCall $methodCallNode): void + /** + * Before: + * - $this->assertTrue(array_key_exists('...', ['...']), 'second argument'); + * + * After: + * - $this->assertArrayHasKey('...', ['...'], 'second argument'); + */ + private function moveFunctionArgumentsUp(MethodCall $methodCallNode): void { $funcCallOrEmptyNode = $methodCallNode->args[0]->value; if ($funcCallOrEmptyNode instanceof FuncCall) { - $methodCallNode->args[0] = $funcCallOrEmptyNode->args[0]; + $oldArguments = $methodCallNode->args; + unset($oldArguments[0]); + $newArguments = array_merge($funcCallOrEmptyNode->args, $oldArguments); + + $methodCallNode->args = $newArguments; } if ($funcCallOrEmptyNode instanceof Empty_) { $methodCallNode->args[0] = $funcCallOrEmptyNode->expr; } - - $arrayNode = $funcCallOrEmptyNode->args[1]->value ?? null; - - if ($arrayNode instanceof Array_) { - $methodCallNode->args[1] = $arrayNode; - } } private function resolveFunctionName(Node $node): ?string