mirror of
https://github.com/rectorphp/rector.git
synced 2024-06-26 04:42:36 +00:00
cleanup
This commit is contained in:
parent
45ca92729d
commit
f9b997ec6c
|
@ -67,7 +67,13 @@ final class NodeTypeResolver
|
|||
}
|
||||
|
||||
// complete parent types - parent classes, interfaces and traits
|
||||
foreach ($types as $type) {
|
||||
foreach ($types as $i => $type) {
|
||||
// remove scalar types and other non-existing ones
|
||||
if ($type === 'null') {
|
||||
unset($types[$i]);
|
||||
continue;
|
||||
}
|
||||
|
||||
$types += $this->classReflectionTypesResolver->resolve($this->broker->getClass($type));
|
||||
}
|
||||
|
||||
|
|
|
@ -5,30 +5,12 @@ namespace Rector\NodeTypeResolver\PerNodeTypeResolver;
|
|||
use PhpParser\Node;
|
||||
use PhpParser\Node\Name;
|
||||
use PhpParser\Node\Name\FullyQualified;
|
||||
use PHPStan\Broker\Broker;
|
||||
use Rector\Node\Attribute;
|
||||
use Rector\NodeTypeResolver\Contract\PerNodeTypeResolver\PerNodeTypeResolverInterface;
|
||||
use Rector\NodeTypeResolver\Node\MetadataAttribute;
|
||||
use Rector\NodeTypeResolver\Reflection\ClassReflectionTypesResolver;
|
||||
|
||||
final class NameTypeResolver implements PerNodeTypeResolverInterface
|
||||
{
|
||||
/**
|
||||
* @var Broker
|
||||
*/
|
||||
private $broker;
|
||||
|
||||
/**
|
||||
* @var ClassReflectionTypesResolver
|
||||
*/
|
||||
private $classReflectionTypesResolver;
|
||||
|
||||
public function __construct(Broker $broker, ClassReflectionTypesResolver $classReflectionTypesResolver)
|
||||
{
|
||||
$this->broker = $broker;
|
||||
$this->classReflectionTypesResolver = $classReflectionTypesResolver;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string[]
|
||||
*/
|
||||
|
@ -47,11 +29,7 @@ final class NameTypeResolver implements PerNodeTypeResolverInterface
|
|||
return [$nameNode->getAttribute(MetadataAttribute::PARENT_CLASS_NAME)];
|
||||
}
|
||||
|
||||
$fullyQualifiedName = $this->resolveFullyQualifiedName($nameNode, $nameNode->toString());
|
||||
|
||||
$classReflection = $this->broker->getClass($fullyQualifiedName);
|
||||
|
||||
return $this->classReflectionTypesResolver->resolve($classReflection);
|
||||
return [$this->resolveFullyQualifiedName($nameNode, $nameNode->toString())];
|
||||
}
|
||||
|
||||
private function resolveFullyQualifiedName(Node $nameNode, string $name): string
|
||||
|
|
|
@ -4,28 +4,10 @@ namespace Rector\NodeTypeResolver\PerNodeTypeResolver;
|
|||
|
||||
use PhpParser\Node;
|
||||
use PhpParser\Node\Param;
|
||||
use PHPStan\Broker\Broker;
|
||||
use Rector\NodeTypeResolver\Contract\PerNodeTypeResolver\PerNodeTypeResolverInterface;
|
||||
use Rector\NodeTypeResolver\Reflection\ClassReflectionTypesResolver;
|
||||
|
||||
final class ParamTypeResolver implements PerNodeTypeResolverInterface
|
||||
{
|
||||
/**
|
||||
* @var Broker
|
||||
*/
|
||||
private $broker;
|
||||
|
||||
/**
|
||||
* @var ClassReflectionTypesResolver
|
||||
*/
|
||||
private $classReflectionTypesResolver;
|
||||
|
||||
public function __construct(Broker $broker, ClassReflectionTypesResolver $classReflectionTypesResolver)
|
||||
{
|
||||
$this->broker = $broker;
|
||||
$this->classReflectionTypesResolver = $classReflectionTypesResolver;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string[]
|
||||
*/
|
||||
|
@ -40,13 +22,6 @@ final class ParamTypeResolver implements PerNodeTypeResolverInterface
|
|||
*/
|
||||
public function resolve(Node $paramNode): array
|
||||
{
|
||||
$paramType = $paramNode->type->toString();
|
||||
|
||||
if (! $this->broker->hasClass($paramType)) {
|
||||
return [$paramType];
|
||||
}
|
||||
|
||||
$classReflection = $this->broker->getClass($paramType);
|
||||
return $this->classReflectionTypesResolver->resolve($classReflection);
|
||||
return [$paramNode->type->toString()];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,14 +4,12 @@ namespace Rector\NodeTypeResolver\PerNodeTypeResolver;
|
|||
|
||||
use PhpParser\Node;
|
||||
use PhpParser\Node\Expr\Variable;
|
||||
use PHPStan\Broker\Broker;
|
||||
use PHPStan\TrinaryLogic;
|
||||
use PHPStan\Type\ThisType;
|
||||
use Rector\NodeTypeResolver\Contract\PerNodeTypeResolver\PerNodeTypeResolverInterface;
|
||||
use Rector\NodeTypeResolver\Node\TypeAttribute;
|
||||
use Rector\NodeTypeResolver\PhpDoc\NodeAnalyzer\DocBlockAnalyzer;
|
||||
use Rector\NodeTypeResolver\PHPStan\Type\TypeToStringResolver;
|
||||
use Rector\NodeTypeResolver\Reflection\ClassReflectionTypesResolver;
|
||||
|
||||
final class VariableTypeResolver implements PerNodeTypeResolverInterface
|
||||
{
|
||||
|
@ -25,25 +23,14 @@ final class VariableTypeResolver implements PerNodeTypeResolverInterface
|
|||
*/
|
||||
private $docBlockAnalyzer;
|
||||
|
||||
/**
|
||||
* @var Broker
|
||||
*/
|
||||
private $broker;
|
||||
|
||||
/**
|
||||
* @var TypeToStringResolver
|
||||
*/
|
||||
private $typeToStringResolver;
|
||||
|
||||
public function __construct(
|
||||
ClassReflectionTypesResolver $classReflectionTypesResolver,
|
||||
DocBlockAnalyzer $docBlockAnalyzer,
|
||||
Broker $broker,
|
||||
TypeToStringResolver $typeToStringResolver
|
||||
) {
|
||||
$this->classReflectionTypesResolver = $classReflectionTypesResolver;
|
||||
public function __construct(DocBlockAnalyzer $docBlockAnalyzer, TypeToStringResolver $typeToStringResolver)
|
||||
{
|
||||
$this->docBlockAnalyzer = $docBlockAnalyzer;
|
||||
$this->broker = $broker;
|
||||
$this->typeToStringResolver = $typeToStringResolver;
|
||||
}
|
||||
|
||||
|
@ -73,32 +60,10 @@ final class VariableTypeResolver implements PerNodeTypeResolverInterface
|
|||
return $this->classReflectionTypesResolver->resolve($nodeScope->getClassReflection());
|
||||
}
|
||||
|
||||
$types = $this->typeToStringResolver->resolve($type);
|
||||
|
||||
// complete parents
|
||||
foreach ($types as $type) {
|
||||
$propertyClassReflection = $this->broker->getClass($type);
|
||||
$types = array_merge($types, $this->classReflectionTypesResolver->resolve($propertyClassReflection));
|
||||
}
|
||||
|
||||
return array_unique($types);
|
||||
return $this->typeToStringResolver->resolve($type);
|
||||
}
|
||||
|
||||
// get from annotation
|
||||
$variableTypes = $this->docBlockAnalyzer->getVarTypes($variableNode);
|
||||
|
||||
foreach ($variableTypes as $i => $type) {
|
||||
if (! class_exists($type)) {
|
||||
unset($variableTypes[$i]);
|
||||
continue;
|
||||
}
|
||||
$propertyClassReflection = $this->broker->getClass($type);
|
||||
$variableTypes = array_merge(
|
||||
$variableTypes,
|
||||
$this->classReflectionTypesResolver->resolve($propertyClassReflection)
|
||||
);
|
||||
}
|
||||
|
||||
return array_unique($variableTypes);
|
||||
return $this->docBlockAnalyzer->getVarTypes($variableNode);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user