Skip to content

Commit

Permalink
[AutoImport] Skip multiple namespaces on single file on auto imports (#…
Browse files Browse the repository at this point in the history
…2940)

* [AutoImport] Skip multiple namespaces on auto imports

* more fixture

* more fixture

* skip multiple namespaces
  • Loading branch information
samsonasik committed Sep 19, 2022
1 parent cd1dca7 commit 4c69331
Show file tree
Hide file tree
Showing 6 changed files with 75 additions and 43 deletions.
13 changes: 12 additions & 1 deletion packages/PostRector/Rector/NameImportingPostRector.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@
use PhpParser\Node;
use PhpParser\Node\Name;
use PhpParser\Node\Name\FullyQualified;
use PhpParser\Node\Stmt;
use PhpParser\Node\Stmt\GroupUse;
use PhpParser\Node\Stmt\Namespace_;
use PhpParser\Node\Stmt\Use_;
use PHPStan\Reflection\ReflectionProvider;
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory;
Expand Down Expand Up @@ -102,7 +104,16 @@ public function run(AnotherClass $anotherClass)
private function processNodeName(Name $name, File $file): ?Node
{
if ($name->isSpecialClassName()) {
return $name;
return null;
}

$namespaces = array_filter(
$file->getNewStmts(),
static fn (Stmt $stmt): bool => $stmt instanceof Namespace_
);

if (count($namespaces) > 1) {
return null;
}

/** @var Use_[]|GroupUse[] $currentUses */
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<?php

namespace {
function run_me_never()
{
// silent deprecations, since we test them
error_reporting(E_ALL ^ E_DEPRECATED);

// performance boost
\SomeNamespace\gc_disable();
}
}

namespace SomeNamespace
{
function gc_disable()
{}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?php

namespace A {
use Rector\Core\Tests\Issues\AutoImportGroupUse\Source\{ SomeClass };

final class AutoImportInGroupUse extends \Rector\Core\Tests\Issues\AutoImportGroupUse\Source\SomeClass
{
}
}

namespace B {
final class AutoImportInGroupUse extends \Rector\Core\Tests\Issues\AutoImportGroupUse\Source\SomeClass
{
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?php

namespace C {
use stdClass;

final class AutoImport extends \stdClass
{
}
}

namespace D {
final class AutoImport extends \stdClass
{
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?php

namespace A {
use stdClass as SomeObject;

final class AutoImportInAlias extends \stdClass
{
}
}

namespace B {
final class AutoImportInAlias extends \stdClass
{
}
}

0 comments on commit 4c69331

Please sign in to comment.