From bd87eadc554445fdb1c5fa2416390c398cf15cb1 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Sun, 5 May 2019 20:48:12 +0200 Subject: [PATCH 1/2] fix ImportFullyQualifiedNamesRector on multiple files --- .../Namespace_/ImportFullyQualifiedNamesRector.php | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/packages/CodingStyle/src/Rector/Namespace_/ImportFullyQualifiedNamesRector.php b/packages/CodingStyle/src/Rector/Namespace_/ImportFullyQualifiedNamesRector.php index 10a2bdd434c3..465799ec861f 100644 --- a/packages/CodingStyle/src/Rector/Namespace_/ImportFullyQualifiedNamesRector.php +++ b/packages/CodingStyle/src/Rector/Namespace_/ImportFullyQualifiedNamesRector.php @@ -115,10 +115,7 @@ public function getNodeTypes(): array */ public function refactor(Node $node): ?Node { - $this->newUseStatements = []; - $this->newFunctionUseStatements = []; - $this->importsInClassCollection->reset(); - $this->docBlockManipulator->resetImportedNames(); + $this->resetCollectedNames(); $this->resolveAlreadyImportedUses($node); @@ -342,4 +339,13 @@ private function isCurrentNamespace(string $namespaceName, string $newUseStateme return ! Strings::contains($afterCurrentNamespace, '\\'); } + + private function resetCollectedNames(): void + { + $this->newUseStatements = []; + $this->newFunctionUseStatements = []; + $this->alreadyUsedShortNames = []; + $this->importsInClassCollection->reset(); + $this->docBlockManipulator->resetImportedNames(); + } } From b9b4c5c1b158f4f721d94cc29e9ac0406e691b5e Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Sun, 5 May 2019 20:48:46 +0200 Subject: [PATCH 2/2] [cs] import namespaces --- .../Rector/LogicalAnd/AndAssignsToSeparateLinesRector.php | 6 ++++-- .../Rector/Namespace_/ImportFullyQualifiedNamesRector.php | 3 ++- src/Rector/NodeFactoryTrait.php | 8 +++++--- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/packages/CodeQuality/src/Rector/LogicalAnd/AndAssignsToSeparateLinesRector.php b/packages/CodeQuality/src/Rector/LogicalAnd/AndAssignsToSeparateLinesRector.php index 3c60d17bc192..cddbb6a131a8 100644 --- a/packages/CodeQuality/src/Rector/LogicalAnd/AndAssignsToSeparateLinesRector.php +++ b/packages/CodeQuality/src/Rector/LogicalAnd/AndAssignsToSeparateLinesRector.php @@ -3,7 +3,9 @@ namespace Rector\CodeQuality\Rector\LogicalAnd; use PhpParser\Node; +use PhpParser\Node\Expr\Assign; use PhpParser\Node\Expr\BinaryOp\LogicalAnd; +use PhpParser\Node\Stmt\Expression; use Rector\NodeTypeResolver\Node\AttributeKey; use Rector\Rector\AbstractRector; use Rector\RectorDefinition\CodeSample; @@ -57,12 +59,12 @@ public function getNodeTypes(): array */ public function refactor(Node $node): ?Node { - if (! $node->left instanceof Node\Expr\Assign || ! $node->right instanceof Node\Expr\Assign) { + if (! $node->left instanceof Assign || ! $node->right instanceof Assign) { return null; } $parentNode = $node->getAttribute(AttributeKey::PARENT_NODE); - if (! $parentNode instanceof Node\Stmt\Expression) { + if (! $parentNode instanceof Expression) { return null; } diff --git a/packages/CodingStyle/src/Rector/Namespace_/ImportFullyQualifiedNamesRector.php b/packages/CodingStyle/src/Rector/Namespace_/ImportFullyQualifiedNamesRector.php index 465799ec861f..0937753c2ed9 100644 --- a/packages/CodingStyle/src/Rector/Namespace_/ImportFullyQualifiedNamesRector.php +++ b/packages/CodingStyle/src/Rector/Namespace_/ImportFullyQualifiedNamesRector.php @@ -4,6 +4,7 @@ use Nette\Utils\Strings; use PhpParser\Node; +use PhpParser\Node\Expr\FuncCall; use PhpParser\Node\Name; use PhpParser\Node\Stmt\Class_; use PhpParser\Node\Stmt\Namespace_; @@ -260,7 +261,7 @@ private function importNamesAndCollectNewUseStatements(Namespace_ $node): array } if (! $this->importsInClassCollection->hasImport($fullyQualifiedName)) { - if ($node->getAttribute(AttributeKey::PARENT_NODE) instanceof Node\Expr\FuncCall) { + if ($node->getAttribute(AttributeKey::PARENT_NODE) instanceof FuncCall) { $this->newFunctionUseStatements[$shortName] = $fullyQualifiedName; } else { $this->newUseStatements[$shortName] = $fullyQualifiedName; diff --git a/src/Rector/NodeFactoryTrait.php b/src/Rector/NodeFactoryTrait.php index 9e6fd1631d29..7a312876d6a1 100644 --- a/src/Rector/NodeFactoryTrait.php +++ b/src/Rector/NodeFactoryTrait.php @@ -12,7 +12,9 @@ use PhpParser\Node\Expr\FuncCall; use PhpParser\Node\Expr\MethodCall; use PhpParser\Node\Expr\PropertyFetch; +use PhpParser\Node\Expr\StaticCall; use PhpParser\Node\Name; +use PhpParser\Node\Name\FullyQualified; use Rector\PhpParser\Node\NodeFactory; /** @@ -37,15 +39,15 @@ public function autowireNodeFactoryTrait(NodeFactory $nodeFactory): void /** * @param Arg[] $args */ - protected function createStaticCall(string $class, string $method, array $args = []): Expr\StaticCall + protected function createStaticCall(string $class, string $method, array $args = []): StaticCall { if (in_array($class, ['self', 'parent', 'static'], true)) { $class = new Name($class); } else { - $class = new Name\FullyQualified($class); + $class = new FullyQualified($class); } - return new Node\Expr\StaticCall($class, $method, $args); + return new StaticCall($class, $method, $args); } protected function createClassConstant(string $class, string $constant): ClassConstFetch