Skip to content

Commit

Permalink
Revert rename + auto import remove use tweak (#5179)
Browse files Browse the repository at this point in the history
* Revert "[DX] Sync order of PostFileProcessor dependencies (#5176)"

This reverts commit 4f50ad5.

* Revert "[PostRector] Fix ClassRenamingPostRector return when no auto import replacement (#5175)"

This reverts commit d14ec5e.

* Revert "[PostRector] Reduce loop on ClassRenamingPostRector (#5174)"

This reverts commit a9908f6.

* Revert "[CodingStyle] Clean up check last name on UseImportsRemover (#5173)"

This reverts commit c5d3a0e.

* Revert "[AutoImport] [Renaming] Skip remove used use statement on annotation during rename + auto import when no replacement on auto import (#5168)"

This reverts commit 29370c7.
  • Loading branch information
samsonasik committed Oct 16, 2023
1 parent cd0c14e commit d22e71e
Show file tree
Hide file tree
Showing 6 changed files with 13 additions and 71 deletions.
10 changes: 5 additions & 5 deletions packages/PostRector/Application/PostFileProcessor.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,19 +23,19 @@ final class PostFileProcessor

public function __construct(
private readonly Skipper $skipper,
NameImportingPostRector $nameImportingPostRector,
// set order here
UseAddingPostRector $useAddingPostRector,
NameImportingPostRector $nameImportingPostRector,
ClassRenamingPostRector $classRenamingPostRector,
UnusedImportRemovingPostRector $unusedImportRemovingPostRector,
) {
// set order here
$this->postRectors = [
// priority: 650
$nameImportingPostRector,
$classRenamingPostRector,
// priority: 600
$useAddingPostRector,
$nameImportingPostRector,
// priority: 500
$classRenamingPostRector,
$useAddingPostRector,
// priority: 100
$unusedImportRemovingPostRector,
];
Expand Down
25 changes: 2 additions & 23 deletions packages/PostRector/Rector/ClassRenamingPostRector.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,7 @@
use Rector\Core\Configuration\Parameter\SimpleParameterProvider;
use Rector\Core\Configuration\RenamedClassesDataCollector;
use Rector\Core\PhpParser\Node\CustomNode\FileWithoutNamespace;
use Rector\Core\Provider\CurrentFileProvider;
use Rector\Core\ValueObject\Application\File;
use Rector\NodeTypeResolver\Node\AttributeKey;
use Rector\PostRector\Collector\UseNodesToAddCollector;
use Rector\Renaming\NodeManipulator\ClassRenamer;

final class ClassRenamingPostRector extends AbstractPostRector
Expand All @@ -29,9 +26,7 @@ final class ClassRenamingPostRector extends AbstractPostRector
public function __construct(
private readonly ClassRenamer $classRenamer,
private readonly RenamedClassesDataCollector $renamedClassesDataCollector,
private readonly UseImportsRemover $useImportsRemover,
private readonly CurrentFileProvider $currentFileProvider,
private readonly UseNodesToAddCollector $useNodesToAddCollector
private readonly UseImportsRemover $useImportsRemover
) {
}

Expand Down Expand Up @@ -78,24 +73,8 @@ public function enterNode(Node $node): ?Node
return $result;
}

$file = $this->currentFileProvider->getFile();
if (! $file instanceof File) {
return $result;
}

$useImportTypes = $this->useNodesToAddCollector->getObjectImportsByFilePath($file->getFilePath());

// nothing to remove, as no replacement
if ($useImportTypes === []) {
return $result;
}

$removedUses = $this->renamedClassesDataCollector->getOldClasses();
$this->rootNode->stmts = $this->useImportsRemover->removeImportsFromStmts(
$this->rootNode->stmts,
$removedUses,
$useImportTypes
);
$this->rootNode->stmts = $this->useImportsRemover->removeImportsFromStmts($this->rootNode->stmts, $removedUses);

return $result;
}
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,5 @@
SomeServiceClassFirstNamespace::class => SomeServiceClass::class,
'Storage' => 'Illuminate\Support\Facades\Storage',
'Queue' => 'Illuminate\Support\Facades\Queue',

/**
* For testing skip remove use statement part of rename during auto import
* the rename annotation is allowed only on specific symfony assert, doctrine, and serializer
*
* @see https://github.com/rectorphp/rector-src/blob/d55a35bcdede830d3927de1c11e0f7f0d12ee9e4/packages/BetterPhpDocParser/PhpDocManipulator/PhpDocClassRenamer.php#L36-L38s
* @see https://github.com/rectorphp/rector-symfony/issues/535#issuecomment-1762822651
*/
'Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted' => 'Symfony\Component\Security\Http\Attribute\IsGranted',
]);
};
27 changes: 5 additions & 22 deletions rules/CodingStyle/Application/UseImportsRemover.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,28 +4,24 @@

namespace Rector\CodingStyle\Application;

use Nette\Utils\Strings;
use PhpParser\Node\Stmt;
use PhpParser\Node\Stmt\Use_;
use Rector\StaticTypeMapper\ValueObject\Type\AliasedObjectType;
use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType;

final class UseImportsRemover
{
/**
* @param Stmt[] $stmts
* @param string[] $removedUses
* @param AliasedObjectType[]|FullyQualifiedObjectType[] $useImportTypes
* @return Stmt[]
*/
public function removeImportsFromStmts(array $stmts, array $removedUses, array $useImportTypes): array
public function removeImportsFromStmts(array $stmts, array $removedUses): array
{
foreach ($stmts as $key => $stmt) {
if (! $stmt instanceof Use_) {
continue;
}

$stmt = $this->removeUseFromUse($removedUses, $stmt, $useImportTypes);
$stmt = $this->removeUseFromUse($removedUses, $stmt);

// remove empty uses
if ($stmt->uses === []) {
Expand All @@ -38,26 +34,13 @@ public function removeImportsFromStmts(array $stmts, array $removedUses, array $

/**
* @param string[] $removedUses
* @param AliasedObjectType[]|FullyQualifiedObjectType[] $useImportTypes
*/
private function removeUseFromUse(array $removedUses, Use_ $use, array $useImportTypes): Use_
private function removeUseFromUse(array $removedUses, Use_ $use): Use_
{
foreach ($use->uses as $usesKey => $useUse) {
$useName = $useUse->name->toString();
if (! in_array($useName, $removedUses, true)) {
continue;
}

$lastUseName = Strings::after($useName, '\\', -1);
foreach ($useImportTypes as $useImportType) {
$className = $useImportType instanceof AliasedObjectType
? $useImportType->getFullyQualifiedName()
: $useImportType->getClassName();

if ($className === $useName || Strings::after($className, '\\', -1) === $lastUseName) {
unset($use->uses[$usesKey]);
continue 2;
}
if (in_array($useName, $removedUses, true)) {
unset($use->uses[$usesKey]);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@

namespace Rector\DeadCode\Rector\If_;

use PhpParser\Node\Expr\ArrayDimFetch;
use PhpParser\Node;
use PhpParser\Node\Expr;
use PhpParser\Node\Expr\ArrayDimFetch;
use PhpParser\Node\Expr\BinaryOp\BooleanAnd;
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Stmt;
Expand Down

0 comments on commit d22e71e

Please sign in to comment.