make tests pass

This commit is contained in:
TomasVotruba 2017-11-01 18:38:47 +01:00
parent 4a14e13f16
commit 43b91b7086
2 changed files with 16 additions and 2 deletions

View File

@ -85,7 +85,10 @@ final class StaticMethodCallAnalyzer
private function resolveNodeType(StaticCall $staticCallNode): ?string
{
if ($staticCallNode->class instanceof Name) {
return $staticCallNode->class->toString();
$class = $staticCallNode->class->toString();
if ($class === 'parent') {
return $staticCallNode->class->getAttribute(Attribute::PARENT_CLASS_NAME);
}
}
if ($staticCallNode->class instanceof Variable) {

View File

@ -9,6 +9,7 @@ use PhpParser\Node\Expr\StaticCall;
use PhpParser\Node\Stmt\ClassMethod;
use Rector\NodeAnalyzer\ClassMethodAnalyzer;
use Rector\NodeAnalyzer\MethodCallAnalyzer;
use Rector\NodeAnalyzer\StaticMethodCallAnalyzer;
use Rector\Rector\AbstractRector;
final class ArgumentReplacerRector extends AbstractRector
@ -31,6 +32,10 @@ final class ArgumentReplacerRector extends AbstractRector
* @var ClassMethodAnalyzer
*/
private $classMethodAnalyzer;
/**
* @var StaticMethodCallAnalyzer
*/
private $staticMethodCallAnalyzer;
/**
* @param mixed[] $argumentChangesByMethodAndType
@ -38,11 +43,13 @@ final class ArgumentReplacerRector extends AbstractRector
public function __construct(
array $argumentChangesByMethodAndType,
MethodCallAnalyzer $methodCallAnalyzer,
ClassMethodAnalyzer $classMethodAnalyzer
ClassMethodAnalyzer $classMethodAnalyzer,
StaticMethodCallAnalyzer $staticMethodCallAnalyzer
) {
$this->argumentChangesMethodAndClass = $argumentChangesByMethodAndType;
$this->methodCallAnalyzer = $methodCallAnalyzer;
$this->classMethodAnalyzer = $classMethodAnalyzer;
$this->staticMethodCallAnalyzer = $staticMethodCallAnalyzer;
}
public function isCandidate(Node $node): bool
@ -103,6 +110,10 @@ final class ArgumentReplacerRector extends AbstractRector
return $argumentChangesByMethod[$node->name->toString()];
}
if ($this->staticMethodCallAnalyzer->isTypeAndMethods($node, $type, $methods)) {
return $argumentChangesByMethod[$node->name->toString()];
}
if ($this->classMethodAnalyzer->isTypeAndMethods($node, $type, $methods)) {
return $argumentChangesByMethod[$node->name->toString()];
}