From 43b91b7086915f302c2fde9567c1229f2aecffec Mon Sep 17 00:00:00 2001 From: TomasVotruba Date: Wed, 1 Nov 2017 18:38:47 +0100 Subject: [PATCH] make tests pass --- src/NodeAnalyzer/StaticMethodCallAnalyzer.php | 5 ++++- src/Rector/Dynamic/ArgumentReplacerRector.php | 13 ++++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/NodeAnalyzer/StaticMethodCallAnalyzer.php b/src/NodeAnalyzer/StaticMethodCallAnalyzer.php index 2ff1bb203e8..9c5975b0535 100644 --- a/src/NodeAnalyzer/StaticMethodCallAnalyzer.php +++ b/src/NodeAnalyzer/StaticMethodCallAnalyzer.php @@ -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) { diff --git a/src/Rector/Dynamic/ArgumentReplacerRector.php b/src/Rector/Dynamic/ArgumentReplacerRector.php index ada3dddb1e9..fc5a1fa233a 100644 --- a/src/Rector/Dynamic/ArgumentReplacerRector.php +++ b/src/Rector/Dynamic/ArgumentReplacerRector.php @@ -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()]; }