skip same-namespace-short name in ImportFullyQualifiedNamesRect… (#1829)

skip same-namespace-short name in ImportFullyQualifiedNamesRector
This commit is contained in:
Tomáš Votruba 2019-08-08 16:36:13 +02:00 committed by GitHub
commit 7c0eec4b6c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 35 additions and 10 deletions

View File

@ -5,10 +5,10 @@ namespace Rector\CodingStyle\Tests\Rector\Namespace_\ImportFullyQualifiedNamesRe
class ImportParamDoc
{
/**
* @param \Rector\CodingStyle\Tests\Rector\Namespace_\ImportFullyQualifiedNamesRector\Source\AlreadyClassName $alreadyClassName
* @return \Rector\CodingStyle\Tests\Rector\Namespace_\ImportFullyQualifiedNamesRector\Source\AlreadyClassName
* @param \Rector\CodingStyle\Tests\Rector\Namespace_\ImportFullyQualifiedNamesRector\Source\NormalParamClass $alreadyClassName
* @return \Rector\CodingStyle\Tests\Rector\Namespace_\ImportFullyQualifiedNamesRector\Source\NormalParamClass
*/
public function create(\Rector\CodingStyle\Tests\Rector\Namespace_\ImportFullyQualifiedNamesRector\Source\AlreadyClassName $alreadyClassName)
public function create(\Rector\CodingStyle\Tests\Rector\Namespace_\ImportFullyQualifiedNamesRector\Source\NormalParamClass $alreadyClassName)
{
}
}
@ -19,14 +19,14 @@ class ImportParamDoc
namespace Rector\CodingStyle\Tests\Rector\Namespace_\ImportFullyQualifiedNamesRector\Fixture;
use Rector\CodingStyle\Tests\Rector\Namespace_\ImportFullyQualifiedNamesRector\Source\AlreadyClassName;
use Rector\CodingStyle\Tests\Rector\Namespace_\ImportFullyQualifiedNamesRector\Source\NormalParamClass;
class ImportParamDoc
{
/**
* @param AlreadyClassName $alreadyClassName
* @return AlreadyClassName
* @param NormalParamClass $alreadyClassName
* @return NormalParamClass
*/
public function create(AlreadyClassName $alreadyClassName)
public function create(NormalParamClass $alreadyClassName)
{
}
}

View File

@ -7,7 +7,7 @@ use Rector\CodingStyle\Tests\Rector\Namespace_;
class ImportReturnDoc
{
/**
* @return Namespace_\ImportFullyQualifiedNamesRector\Source\AlreadyClassName
* @return Namespace_\ImportFullyQualifiedNamesRector\Source\NormalReturnClass
*/
public function create()
{
@ -20,13 +20,13 @@ class ImportReturnDoc
namespace Rector\CodingStyle\Tests\Rector\Namespace_\ImportFullyQualifiedNamesRector\Fixture;
use Rector\CodingStyle\Tests\Rector\Namespace_\ImportFullyQualifiedNamesRector\Source\AlreadyClassName;
use Rector\CodingStyle\Tests\Rector\Namespace_\ImportFullyQualifiedNamesRector\Source\NormalReturnClass;
use Rector\CodingStyle\Tests\Rector\Namespace_;
class ImportReturnDoc
{
/**
* @return AlreadyClassName
* @return NormalReturnClass
*/
public function create()
{

View File

@ -0,0 +1,8 @@
<?php declare(strict_types=1);
namespace Rector\CodingStyle\Tests\Rector\Namespace_\ImportFullyQualifiedNamesRector\Source;
final class NormalParamClass
{
}

View File

@ -0,0 +1,8 @@
<?php declare(strict_types=1);
namespace Rector\CodingStyle\Tests\Rector\Namespace_\ImportFullyQualifiedNamesRector\Source;
final class NormalReturnClass
{
}

View File

@ -35,6 +35,7 @@ use Rector\BetterPhpDocParser\Printer\PhpDocInfoPrinter;
use Rector\CodingStyle\Application\UseAddingCommander;
use Rector\Exception\ShouldNotHappenException;
use Rector\NodeTypeResolver\Exception\MissingTagException;
use Rector\NodeTypeResolver\Node\AttributeKey;
use Rector\NodeTypeResolver\Php\ParamTypeInfo;
use Rector\NodeTypeResolver\Php\ReturnTypeInfo;
use Rector\NodeTypeResolver\Php\VarTypeInfo;
@ -680,6 +681,14 @@ final class DocBlockManipulator
string $shortName,
string $fullyQualifiedName
): AttributeAwareNodeInterface {
// the name is already in the same namespace implicitly
$namespaceName = $node->getAttribute(AttributeKey::NAMESPACE_NAME);
// the class in the same namespace as differnt file can se used in this code, the short names would colide → skip
if (class_exists($namespaceName . '\\' . $shortName)) {
return $attributeAwareNode;
}
if ($this->useAddingCommander->isShortImported($node, $fullyQualifiedName)) {
if ($this->useAddingCommander->isImportShortable($node, $fullyQualifiedName)) {
$attributeAwareNode->name = $shortName;