mirror of
https://github.com/rectorphp/rector.git
synced 2025-02-24 11:44:14 +01:00
fix FormSetRequiredRector
This commit is contained in:
parent
7deec75fc4
commit
902d8c5424
@ -4,7 +4,9 @@ namespace Rector\NodeAnalyzer;
|
||||
|
||||
use PhpParser\Node;
|
||||
use PhpParser\Node\Expr\MethodCall;
|
||||
use PhpParser\Node\Expr\Variable;
|
||||
use PhpParser\Node\Identifier;
|
||||
use PhpParser\NodeFinder;
|
||||
use Rector\BetterReflection\Reflector\SmartClassReflector;
|
||||
use Rector\Node\Attribute;
|
||||
use ReflectionMethod;
|
||||
@ -16,14 +18,20 @@ final class MethodCallAnalyzer
|
||||
*/
|
||||
private $smartClassReflector;
|
||||
|
||||
/**
|
||||
* @var NodeFinder
|
||||
*/
|
||||
private $nodeFinder;
|
||||
|
||||
/**
|
||||
* @var string[][]
|
||||
*/
|
||||
private $publicMethodNamesForType = [];
|
||||
|
||||
public function __construct(SmartClassReflector $smartClassReflector)
|
||||
public function __construct(SmartClassReflector $smartClassReflector, NodeFinder $nodeFinder)
|
||||
{
|
||||
$this->smartClassReflector = $smartClassReflector;
|
||||
$this->nodeFinder = $nodeFinder;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -135,20 +143,8 @@ final class MethodCallAnalyzer
|
||||
*/
|
||||
private function resolveVariableType(MethodCall $methodCallNode): array
|
||||
{
|
||||
$varNode = $methodCallNode->var;
|
||||
$variableNode = $this->nodeFinder->findFirstInstanceOf([$methodCallNode], Variable::class);
|
||||
|
||||
// get types?
|
||||
// @todo resolve in classResolver -> add parent types as well .=))
|
||||
|
||||
// itterate up, @todo: handle in TypeResover
|
||||
while ($varNode->getAttribute(Attribute::TYPES) === null) {
|
||||
if (property_exists($varNode, 'var')) {
|
||||
$varNode = $varNode->var;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return (array) $varNode->getAttribute(Attribute::TYPES);
|
||||
return (array) $variableNode->getAttribute(Attribute::TYPES);
|
||||
}
|
||||
}
|
||||
|
@ -52,7 +52,8 @@ final class FormSetRequiredRector extends AbstractRector
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($arg->value->class->getAttribute(Attribute::TYPES) !== self::FORM_CLASS) {
|
||||
$argTypes = $arg->value->class->getAttribute(Attribute::TYPES);
|
||||
if (! in_array(self::FORM_CLASS, $argTypes, true)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user