mirror of
https://github.com/rectorphp/rector.git
synced 2024-06-05 02:40:50 +00:00
cleanup
This commit is contained in:
parent
cce616b641
commit
dc21104bf5
|
@ -4,7 +4,9 @@ namespace Rector\NodeTypeResolver\NodeVisitor;
|
|||
|
||||
use PhpParser\Node;
|
||||
use PhpParser\Node\Stmt\Class_;
|
||||
use PhpParser\Node\Stmt\ClassLike;
|
||||
use PhpParser\NodeVisitorAbstract;
|
||||
use Rector\Node\Attribute;
|
||||
|
||||
/**
|
||||
* Add attribute 'class' with current class name.
|
||||
|
@ -12,17 +14,7 @@ use PhpParser\NodeVisitorAbstract;
|
|||
final class ClassResolver extends NodeVisitorAbstract
|
||||
{
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private const CLASS_ATTRIBUTE = 'class';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private const CLASS_NODE_ATTRIBUTE = 'class_node';
|
||||
|
||||
/**
|
||||
* @var Class_|null
|
||||
* @var ClassLike|null
|
||||
*/
|
||||
private $classNode;
|
||||
|
||||
|
@ -36,14 +28,19 @@ final class ClassResolver extends NodeVisitorAbstract
|
|||
|
||||
public function enterNode(Node $node): void
|
||||
{
|
||||
// detect only first "class" to prevent anonymous classes interference
|
||||
if ($this->classNode === null && $node instanceof Class_) {
|
||||
// detect only first ClassLike elemetn
|
||||
if ($this->classNode === null && $node instanceof ClassLike) {
|
||||
// skip possible anonymous classes
|
||||
if ($node instanceof Class_ && $node->isAnonymous()) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->classNode = $node;
|
||||
}
|
||||
|
||||
if ($this->classNode) {
|
||||
$node->setAttribute(self::CLASS_NODE_ATTRIBUTE, $this->classNode);
|
||||
$node->setAttribute(self::CLASS_ATTRIBUTE, $this->classNode->namespacedName->toString());
|
||||
$node->setAttribute(Attribute::CLASS_NODE, $this->classNode);
|
||||
$node->setAttribute(Attribute::CLASS_NAME, $this->classNode->namespacedName->toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -56,7 +56,7 @@ final class TypeContext
|
|||
$this->classProperties = [];
|
||||
$this->classLikeNode = $classLikeNode;
|
||||
|
||||
if ($classLikeNode instanceof Class_) {
|
||||
if ($classLikeNode instanceof Class_ && ! $classLikeNode->isAnonymous()) {
|
||||
$this->classProperties = $this->constructorPropertyTypesExtractor->extractFromClassNode($classLikeNode);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -46,7 +46,7 @@ final class PropertyToClassAdder extends NodeVisitorAbstract
|
|||
public function afterTraverse(array $nodes): array
|
||||
{
|
||||
foreach ($nodes as $key => $node) {
|
||||
if ($node instanceof Class_) {
|
||||
if ($node instanceof Class_ && ! $node->isAnonymous()) {
|
||||
$nodes[$key] = $this->processClass($node, (string) $node->name);
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -11,7 +11,7 @@ abstract class AbstractChangeParentClassRector extends AbstractRector
|
|||
{
|
||||
public function isCandidate(Node $node): bool
|
||||
{
|
||||
if (! $node instanceof Class_ || $node->extends === null) {
|
||||
if (! $node instanceof Class_ || $node->extends === null || $node->isAnonymous()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -9,6 +9,7 @@ use PhpParser\Node\Stmt\Class_;
|
|||
use PhpParser\Node\Stmt\Property;
|
||||
use Rector\Builder\Class_\ClassPropertyCollector;
|
||||
use Rector\Deprecation\SetNames;
|
||||
use Rector\Node\Attribute;
|
||||
use Rector\Rector\AbstractRector;
|
||||
|
||||
final class InjectPropertyRector extends AbstractRector
|
||||
|
@ -23,33 +24,11 @@ final class InjectPropertyRector extends AbstractRector
|
|||
*/
|
||||
private $classPropertyCollector;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $className;
|
||||
|
||||
public function __construct(ClassPropertyCollector $classPropertyCollector)
|
||||
{
|
||||
$this->classPropertyCollector = $classPropertyCollector;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Node[] $nodes
|
||||
* @return null|Node[]
|
||||
*/
|
||||
public function beforeTraverse(array $nodes): ?array
|
||||
{
|
||||
$this->className = null;
|
||||
|
||||
foreach ($nodes as $node) {
|
||||
if ($node instanceof Class_) {
|
||||
$this->className = (string) $node->name;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public function isCandidate(Node $node): bool
|
||||
{
|
||||
if (! $node instanceof Property) {
|
||||
|
@ -119,6 +98,10 @@ final class InjectPropertyRector extends AbstractRector
|
|||
|
||||
$propertyName = (string) $propertyNode->props[0]->name;
|
||||
|
||||
$this->classPropertyCollector->addPropertyForClass($this->className, $propertyType, $propertyName);
|
||||
$this->classPropertyCollector->addPropertyForClass(
|
||||
(string) $propertyNode->getAttribute(Attribute::CLASS_NAME),
|
||||
$propertyType,
|
||||
$propertyName
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -54,7 +54,7 @@ final class NetteObjectToSmartTraitRector extends AbstractRector
|
|||
|
||||
public function isCandidate(Node $node): bool
|
||||
{
|
||||
if (! $node instanceof Class_ || $node->extends === null) {
|
||||
if (! $node instanceof Class_ || $node->extends === null || $node->isAnonymous()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user