Updated Rector to commit 6b9984175f

6b9984175f [Naming] Fix PseudoNamespaceToNamespaceRector reporting on change (#2426)
This commit is contained in:
Tomas Votruba 2022-06-04 08:16:56 +00:00
parent 5349987b1f
commit bf28f06a74
17 changed files with 111 additions and 199 deletions

View File

@ -74,6 +74,7 @@ return static function (\Rector\Config\RectorConfig $rectorConfig) : void {
__DIR__ . '/../packages/BetterPhpDocParser/PhpDoc',
__DIR__ . '/../packages/PHPStanStaticTypeMapper/Enum',
__DIR__ . '/../packages/Caching/Cache.php',
__DIR__ . '/../packages/NodeTypeResolver/PhpDocNodeVisitor/UnderscoreRenamePhpDocNodeVisitor.php',
// used in PHPStan
__DIR__ . '/../packages/NodeTypeResolver/Reflection/BetterReflection/RectorBetterReflectionSourceLocatorFactory.php',
__DIR__ . '/../packages/NodeTypeResolver/Reflection/BetterReflection/SourceLocatorProvider/DynamicSourceLocatorProvider.php',

View File

@ -1,25 +0,0 @@
<?php
declare (strict_types=1);
namespace Rector\BetterPhpDocParser\PhpDocNodeTraverser;
use Rector\BetterPhpDocParser\PhpDocNodeVisitor\ChangedPhpDocNodeVisitor;
use RectorPrefix20220604\Symplify\Astral\PhpDocParser\PhpDocNodeTraverser;
final class ChangedPhpDocNodeTraverserFactory
{
/**
* @readonly
* @var \Rector\BetterPhpDocParser\PhpDocNodeVisitor\ChangedPhpDocNodeVisitor
*/
private $changedPhpDocNodeVisitor;
public function __construct(\Rector\BetterPhpDocParser\PhpDocNodeVisitor\ChangedPhpDocNodeVisitor $changedPhpDocNodeVisitor)
{
$this->changedPhpDocNodeVisitor = $changedPhpDocNodeVisitor;
}
public function create() : \RectorPrefix20220604\Symplify\Astral\PhpDocParser\PhpDocNodeTraverser
{
$changedPhpDocNodeTraverser = new \RectorPrefix20220604\Symplify\Astral\PhpDocParser\PhpDocNodeTraverser();
$changedPhpDocNodeTraverser->addPhpDocNodeVisitor($this->changedPhpDocNodeVisitor);
return $changedPhpDocNodeTraverser;
}
}

View File

@ -16,7 +16,6 @@ use PHPStan\PhpDocParser\Ast\PhpDoc\VarTagValueNode;
use PHPStan\PhpDocParser\Lexer\Lexer;
use Rector\BetterPhpDocParser\PhpDoc\DoctrineAnnotationTagValueNode;
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo;
use Rector\BetterPhpDocParser\PhpDocNodeTraverser\ChangedPhpDocNodeTraverserFactory;
use Rector\BetterPhpDocParser\PhpDocNodeVisitor\ChangedPhpDocNodeVisitor;
use Rector\BetterPhpDocParser\ValueObject\PhpDocAttributeKey;
use Rector\BetterPhpDocParser\ValueObject\StartAndEnd;
@ -98,13 +97,15 @@ final class PhpDocInfoPrinter
* @var \Rector\BetterPhpDocParser\PhpDocNodeVisitor\ChangedPhpDocNodeVisitor
*/
private $changedPhpDocNodeVisitor;
public function __construct(\Rector\BetterPhpDocParser\Printer\EmptyPhpDocDetector $emptyPhpDocDetector, \Rector\BetterPhpDocParser\Printer\DocBlockInliner $docBlockInliner, \Rector\BetterPhpDocParser\Printer\RemoveNodesStartAndEndResolver $removeNodesStartAndEndResolver, \Rector\BetterPhpDocParser\PhpDocNodeVisitor\ChangedPhpDocNodeVisitor $changedPhpDocNodeVisitor, \Rector\BetterPhpDocParser\PhpDocNodeTraverser\ChangedPhpDocNodeTraverserFactory $changedPhpDocNodeTraverserFactory)
public function __construct(\Rector\BetterPhpDocParser\Printer\EmptyPhpDocDetector $emptyPhpDocDetector, \Rector\BetterPhpDocParser\Printer\DocBlockInliner $docBlockInliner, \Rector\BetterPhpDocParser\Printer\RemoveNodesStartAndEndResolver $removeNodesStartAndEndResolver, \Rector\BetterPhpDocParser\PhpDocNodeVisitor\ChangedPhpDocNodeVisitor $changedPhpDocNodeVisitor)
{
$this->emptyPhpDocDetector = $emptyPhpDocDetector;
$this->docBlockInliner = $docBlockInliner;
$this->removeNodesStartAndEndResolver = $removeNodesStartAndEndResolver;
$this->changedPhpDocNodeVisitor = $changedPhpDocNodeVisitor;
$this->changedPhpDocNodeTraverser = $changedPhpDocNodeTraverserFactory->create();
$changedPhpDocNodeTraverser = new \RectorPrefix20220604\Symplify\Astral\PhpDocParser\PhpDocNodeTraverser();
$changedPhpDocNodeTraverser->addPhpDocNodeVisitor($this->changedPhpDocNodeVisitor);
$this->changedPhpDocNodeTraverser = $changedPhpDocNodeTraverser;
}
public function printNew(\Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo $phpDocInfo) : string
{

View File

@ -4,9 +4,9 @@ declare (strict_types=1);
namespace Rector\NodeTypeResolver\PhpDoc\NodeAnalyzer;
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo;
use Rector\NodeTypeResolver\PhpDoc\PhpDocNodeTraverser\RenamingPhpDocNodeVisitorFactory;
use Rector\NodeTypeResolver\PhpDocNodeVisitor\ClassRenamePhpDocNodeVisitor;
use Rector\NodeTypeResolver\ValueObject\OldToNewType;
use RectorPrefix20220604\Symplify\Astral\PhpDocParser\PhpDocNodeTraverser;
final class DocBlockClassRenamer
{
/**
@ -14,15 +14,9 @@ final class DocBlockClassRenamer
* @var \Rector\NodeTypeResolver\PhpDocNodeVisitor\ClassRenamePhpDocNodeVisitor
*/
private $classRenamePhpDocNodeVisitor;
/**
* @readonly
* @var \Rector\NodeTypeResolver\PhpDoc\PhpDocNodeTraverser\RenamingPhpDocNodeVisitorFactory
*/
private $renamingPhpDocNodeVisitorFactory;
public function __construct(\Rector\NodeTypeResolver\PhpDocNodeVisitor\ClassRenamePhpDocNodeVisitor $classRenamePhpDocNodeVisitor, \Rector\NodeTypeResolver\PhpDoc\PhpDocNodeTraverser\RenamingPhpDocNodeVisitorFactory $renamingPhpDocNodeVisitorFactory)
public function __construct(\Rector\NodeTypeResolver\PhpDocNodeVisitor\ClassRenamePhpDocNodeVisitor $classRenamePhpDocNodeVisitor)
{
$this->classRenamePhpDocNodeVisitor = $classRenamePhpDocNodeVisitor;
$this->renamingPhpDocNodeVisitorFactory = $renamingPhpDocNodeVisitorFactory;
}
/**
* @param OldToNewType[] $oldToNewTypes
@ -32,7 +26,8 @@ final class DocBlockClassRenamer
if ($oldToNewTypes === []) {
return;
}
$phpDocNodeTraverser = $this->renamingPhpDocNodeVisitorFactory->create();
$phpDocNodeTraverser = new \RectorPrefix20220604\Symplify\Astral\PhpDocParser\PhpDocNodeTraverser();
$phpDocNodeTraverser->addPhpDocNodeVisitor($this->classRenamePhpDocNodeVisitor);
$this->classRenamePhpDocNodeVisitor->setOldToNewTypes($oldToNewTypes);
$phpDocNodeTraverser->traverse($phpDocInfo->getPhpDocNode());
}

View File

@ -5,8 +5,8 @@ namespace Rector\NodeTypeResolver\PhpDoc\NodeAnalyzer;
use PhpParser\Node;
use PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocNode;
use Rector\NodeTypeResolver\PhpDoc\PhpDocNodeTraverser\ImportingPhpDocNodeTraverserFactory;
use Rector\NodeTypeResolver\PhpDocNodeVisitor\NameImportingPhpDocNodeVisitor;
use RectorPrefix20220604\Symplify\Astral\PhpDocParser\PhpDocNodeTraverser;
final class DocBlockNameImporter
{
/**
@ -14,15 +14,9 @@ final class DocBlockNameImporter
* @var \Rector\NodeTypeResolver\PhpDocNodeVisitor\NameImportingPhpDocNodeVisitor
*/
private $nameImportingPhpDocNodeVisitor;
/**
* @readonly
* @var \Rector\NodeTypeResolver\PhpDoc\PhpDocNodeTraverser\ImportingPhpDocNodeTraverserFactory
*/
private $importingPhpDocNodeTraverserFactory;
public function __construct(\Rector\NodeTypeResolver\PhpDocNodeVisitor\NameImportingPhpDocNodeVisitor $nameImportingPhpDocNodeVisitor, \Rector\NodeTypeResolver\PhpDoc\PhpDocNodeTraverser\ImportingPhpDocNodeTraverserFactory $importingPhpDocNodeTraverserFactory)
public function __construct(\Rector\NodeTypeResolver\PhpDocNodeVisitor\NameImportingPhpDocNodeVisitor $nameImportingPhpDocNodeVisitor)
{
$this->nameImportingPhpDocNodeVisitor = $nameImportingPhpDocNodeVisitor;
$this->importingPhpDocNodeTraverserFactory = $importingPhpDocNodeTraverserFactory;
}
public function importNames(\PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocNode $phpDocNode, \PhpParser\Node $node) : void
{
@ -30,7 +24,8 @@ final class DocBlockNameImporter
return;
}
$this->nameImportingPhpDocNodeVisitor->setCurrentNode($node);
$phpDocNodeTraverser = $this->importingPhpDocNodeTraverserFactory->create();
$phpDocNodeTraverser = new \RectorPrefix20220604\Symplify\Astral\PhpDocParser\PhpDocNodeTraverser();
$phpDocNodeTraverser->addPhpDocNodeVisitor($this->nameImportingPhpDocNodeVisitor);
$phpDocNodeTraverser->traverse($phpDocNode);
}
}

View File

@ -1,25 +0,0 @@
<?php
declare (strict_types=1);
namespace Rector\NodeTypeResolver\PhpDoc\PhpDocNodeTraverser;
use Rector\NodeTypeResolver\PhpDocNodeVisitor\NameImportingPhpDocNodeVisitor;
use RectorPrefix20220604\Symplify\Astral\PhpDocParser\PhpDocNodeTraverser;
final class ImportingPhpDocNodeTraverserFactory
{
/**
* @readonly
* @var \Rector\NodeTypeResolver\PhpDocNodeVisitor\NameImportingPhpDocNodeVisitor
*/
private $nameImportingPhpDocNodeVisitor;
public function __construct(\Rector\NodeTypeResolver\PhpDocNodeVisitor\NameImportingPhpDocNodeVisitor $nameImportingPhpDocNodeVisitor)
{
$this->nameImportingPhpDocNodeVisitor = $nameImportingPhpDocNodeVisitor;
}
public function create() : \RectorPrefix20220604\Symplify\Astral\PhpDocParser\PhpDocNodeTraverser
{
$phpDocNodeTraverser = new \RectorPrefix20220604\Symplify\Astral\PhpDocParser\PhpDocNodeTraverser();
$phpDocNodeTraverser->addPhpDocNodeVisitor($this->nameImportingPhpDocNodeVisitor);
return $phpDocNodeTraverser;
}
}

View File

@ -1,25 +0,0 @@
<?php
declare (strict_types=1);
namespace Rector\NodeTypeResolver\PhpDoc\PhpDocNodeTraverser;
use Rector\NodeTypeResolver\PhpDocNodeVisitor\ClassRenamePhpDocNodeVisitor;
use RectorPrefix20220604\Symplify\Astral\PhpDocParser\PhpDocNodeTraverser;
final class RenamingPhpDocNodeVisitorFactory
{
/**
* @readonly
* @var \Rector\NodeTypeResolver\PhpDocNodeVisitor\ClassRenamePhpDocNodeVisitor
*/
private $classRenamePhpDocNodeVisitor;
public function __construct(\Rector\NodeTypeResolver\PhpDocNodeVisitor\ClassRenamePhpDocNodeVisitor $classRenamePhpDocNodeVisitor)
{
$this->classRenamePhpDocNodeVisitor = $classRenamePhpDocNodeVisitor;
}
public function create() : \RectorPrefix20220604\Symplify\Astral\PhpDocParser\PhpDocNodeTraverser
{
$phpDocNodeTraverser = new \RectorPrefix20220604\Symplify\Astral\PhpDocParser\PhpDocNodeTraverser();
$phpDocNodeTraverser->addPhpDocNodeVisitor($this->classRenamePhpDocNodeVisitor);
return $phpDocNodeTraverser;
}
}

View File

@ -1,25 +0,0 @@
<?php
declare (strict_types=1);
namespace Rector\NodeTypeResolver\PhpDoc\PhpDocNodeTraverser;
use Rector\NodeTypeResolver\PhpDocNodeVisitor\UnderscoreRenamePhpDocNodeVisitor;
use RectorPrefix20220604\Symplify\Astral\PhpDocParser\PhpDocNodeTraverser;
final class UnderscorePhpDocNodeTraverserFactory
{
/**
* @readonly
* @var \Rector\NodeTypeResolver\PhpDocNodeVisitor\UnderscoreRenamePhpDocNodeVisitor
*/
private $underscoreRenamePhpDocNodeVisitor;
public function __construct(\Rector\NodeTypeResolver\PhpDocNodeVisitor\UnderscoreRenamePhpDocNodeVisitor $underscoreRenamePhpDocNodeVisitor)
{
$this->underscoreRenamePhpDocNodeVisitor = $underscoreRenamePhpDocNodeVisitor;
}
public function create() : \RectorPrefix20220604\Symplify\Astral\PhpDocParser\PhpDocNodeTraverser
{
$phpDocNodeTraverser = new \RectorPrefix20220604\Symplify\Astral\PhpDocParser\PhpDocNodeTraverser();
$phpDocNodeTraverser->addPhpDocNodeVisitor($this->underscoreRenamePhpDocNodeVisitor);
return $phpDocNodeTraverser;
}
}

View File

@ -5,32 +5,29 @@ namespace Rector\NodeTypeResolver\PhpDoc;
use PhpParser\Node;
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo;
use Rector\NodeTypeResolver\PhpDoc\PhpDocNodeTraverser\UnderscorePhpDocNodeTraverserFactory;
use Rector\NodeTypeResolver\PhpDocNodeVisitor\UnderscoreRenamePhpDocNodeVisitor;
use Rector\Renaming\ValueObject\PseudoNamespaceToNamespace;
use Rector\StaticTypeMapper\StaticTypeMapper;
use RectorPrefix20220604\Symplify\Astral\PhpDocParser\PhpDocNodeTraverser;
final class PhpDocTypeRenamer
{
/**
* @readonly
* @var \Rector\NodeTypeResolver\PhpDoc\PhpDocNodeTraverser\UnderscorePhpDocNodeTraverserFactory
* @var \Rector\StaticTypeMapper\StaticTypeMapper
*/
private $underscorePhpDocNodeTraverserFactory;
/**
* @readonly
* @var \Rector\NodeTypeResolver\PhpDocNodeVisitor\UnderscoreRenamePhpDocNodeVisitor
*/
private $underscoreRenamePhpDocNodeVisitor;
public function __construct(\Rector\NodeTypeResolver\PhpDoc\PhpDocNodeTraverser\UnderscorePhpDocNodeTraverserFactory $underscorePhpDocNodeTraverserFactory, \Rector\NodeTypeResolver\PhpDocNodeVisitor\UnderscoreRenamePhpDocNodeVisitor $underscoreRenamePhpDocNodeVisitor)
private $staticTypeMapper;
public function __construct(\Rector\StaticTypeMapper\StaticTypeMapper $staticTypeMapper)
{
$this->underscorePhpDocNodeTraverserFactory = $underscorePhpDocNodeTraverserFactory;
$this->underscoreRenamePhpDocNodeVisitor = $underscoreRenamePhpDocNodeVisitor;
$this->staticTypeMapper = $staticTypeMapper;
}
public function changeUnderscoreType(\Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo $phpDocInfo, \PhpParser\Node $node, \Rector\Renaming\ValueObject\PseudoNamespaceToNamespace $pseudoNamespaceToNamespace) : void
public function changeUnderscoreType(\Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo $phpDocInfo, \PhpParser\Node $node, \Rector\Renaming\ValueObject\PseudoNamespaceToNamespace $pseudoNamespaceToNamespace) : bool
{
$phpDocNode = $phpDocInfo->getPhpDocNode();
$this->underscoreRenamePhpDocNodeVisitor->setPseudoNamespaceToNamespace($pseudoNamespaceToNamespace);
$this->underscoreRenamePhpDocNodeVisitor->setCurrentPhpParserNode($node);
$phpDocNodeTraverser = $this->underscorePhpDocNodeTraverserFactory->create();
$underscoreRenamePhpDocNodeVisitor = new \Rector\NodeTypeResolver\PhpDocNodeVisitor\UnderscoreRenamePhpDocNodeVisitor($this->staticTypeMapper, $pseudoNamespaceToNamespace, $node);
$phpDocNodeTraverser = new \RectorPrefix20220604\Symplify\Astral\PhpDocParser\PhpDocNodeTraverser();
$phpDocNodeTraverser->addPhpDocNodeVisitor($underscoreRenamePhpDocNodeVisitor);
$phpDocNodeTraverser->traverse($phpDocNode);
// has changed?
return $underscoreRenamePhpDocNodeVisitor->hasChanged();
}
}

View File

@ -7,62 +7,61 @@ use RectorPrefix20220604\Nette\Utils\Strings;
use PHPStan\PhpDocParser\Ast\Node;
use PHPStan\PhpDocParser\Ast\Type\IdentifierTypeNode;
use PHPStan\Type\ObjectType;
use Rector\Core\Exception\ShouldNotHappenException;
use Rector\Renaming\ValueObject\PseudoNamespaceToNamespace;
use Rector\StaticTypeMapper\StaticTypeMapper;
use RectorPrefix20220604\Symplify\Astral\PhpDocParser\PhpDocNodeVisitor\AbstractPhpDocNodeVisitor;
final class UnderscoreRenamePhpDocNodeVisitor extends \RectorPrefix20220604\Symplify\Astral\PhpDocParser\PhpDocNodeVisitor\AbstractPhpDocNodeVisitor
{
/**
* @var \Rector\Renaming\ValueObject\PseudoNamespaceToNamespace|null
* @var bool
*/
private $pseudoNamespaceToNamespace;
/**
* @var \PhpParser\Node|null
*/
private $currentPhpParserNode;
private $hasChanged = \false;
/**
* @readonly
* @var \Rector\StaticTypeMapper\StaticTypeMapper
*/
private $staticTypeMapper;
public function __construct(\Rector\StaticTypeMapper\StaticTypeMapper $staticTypeMapper)
/**
* @readonly
* @var \Rector\Renaming\ValueObject\PseudoNamespaceToNamespace
*/
private $pseudoNamespaceToNamespace;
/**
* @readonly
* @var \PhpParser\Node
*/
private $phpNode;
public function __construct(\Rector\StaticTypeMapper\StaticTypeMapper $staticTypeMapper, \Rector\Renaming\ValueObject\PseudoNamespaceToNamespace $pseudoNamespaceToNamespace, \PhpParser\Node $phpNode)
{
$this->staticTypeMapper = $staticTypeMapper;
$this->pseudoNamespaceToNamespace = $pseudoNamespaceToNamespace;
$this->phpNode = $phpNode;
}
public function beforeTraverse(\PHPStan\PhpDocParser\Ast\Node $node) : void
{
if ($this->pseudoNamespaceToNamespace === null) {
throw new \Rector\Core\Exception\ShouldNotHappenException('Set PseudoNamespaceToNamespace first');
}
if (!$this->currentPhpParserNode instanceof \PhpParser\Node) {
throw new \Rector\Core\Exception\ShouldNotHappenException('Set "$currentPhpParserNode" first');
}
$this->hasChanged = \false;
}
public function enterNode(\PHPStan\PhpDocParser\Ast\Node $node) : ?\PHPStan\PhpDocParser\Ast\Node
{
if (!$node instanceof \PHPStan\PhpDocParser\Ast\Type\IdentifierTypeNode) {
return null;
}
if ($this->shouldSkip($node, $this->currentPhpParserNode, $this->pseudoNamespaceToNamespace)) {
if ($this->shouldSkip($node, $this->phpNode, $this->pseudoNamespaceToNamespace)) {
return null;
}
/** @var IdentifierTypeNode $node */
$staticType = $this->staticTypeMapper->mapPHPStanPhpDocTypeNodeToPHPStanType($node, $this->currentPhpParserNode);
$staticType = $this->staticTypeMapper->mapPHPStanPhpDocTypeNodeToPHPStanType($node, $this->phpNode);
if (!$staticType instanceof \PHPStan\Type\ObjectType) {
return null;
}
$this->hasChanged = \true;
// change underscore to \\
$slashedName = '\\' . \RectorPrefix20220604\Nette\Utils\Strings::replace($staticType->getClassName(), '#_#', '\\');
return new \PHPStan\PhpDocParser\Ast\Type\IdentifierTypeNode($slashedName);
}
public function setPseudoNamespaceToNamespace(\Rector\Renaming\ValueObject\PseudoNamespaceToNamespace $pseudoNamespaceToNamespace) : void
public function hasChanged() : bool
{
$this->pseudoNamespaceToNamespace = $pseudoNamespaceToNamespace;
}
public function setCurrentPhpParserNode(\PhpParser\Node $node) : void
{
$this->currentPhpParserNode = $node;
return $this->hasChanged;
}
private function shouldSkip(\PHPStan\PhpDocParser\Ast\Type\IdentifierTypeNode $identifierTypeNode, \PhpParser\Node $phpParserNode, \Rector\Renaming\ValueObject\PseudoNamespaceToNamespace $pseudoNamespaceToNamespace) : bool
{

View File

@ -78,16 +78,18 @@ CODE_SAMPLE
{
$this->newNamespace = null;
if ($node instanceof \Rector\Core\PhpParser\Node\CustomNode\FileWithoutNamespace) {
$stmts = $this->refactorStmts($node->stmts);
$node->stmts = $stmts;
$changedStmts = $this->refactorStmts($node->stmts);
if ($changedStmts === null) {
return null;
}
$node->stmts = $changedStmts;
// add a new namespace?
if ($this->newNamespace !== null) {
return new \PhpParser\Node\Stmt\Namespace_(new \PhpParser\Node\Name($this->newNamespace), $stmts);
return new \PhpParser\Node\Stmt\Namespace_(new \PhpParser\Node\Name($this->newNamespace), $changedStmts);
}
}
if ($node instanceof \PhpParser\Node\Stmt\Namespace_) {
$this->refactorStmts([$node]);
return $node;
return $this->refactorNamespace($node);
}
return null;
}
@ -101,26 +103,32 @@ CODE_SAMPLE
}
/**
* @param Stmt[] $stmts
* @return Stmt[]
* @return Stmt[]|null
*/
private function refactorStmts(array $stmts) : array
private function refactorStmts(array $stmts) : ?array
{
$this->traverseNodesWithCallable($stmts, function (\PhpParser\Node $node) : ?Node {
$hasChanged = \false;
$this->traverseNodesWithCallable($stmts, function (\PhpParser\Node $node) use(&$hasChanged) : ?Node {
if (!$node instanceof \PhpParser\Node\Name && !$node instanceof \PhpParser\Node\Identifier && !$node instanceof \PhpParser\Node\Stmt\Property && !$node instanceof \PhpParser\Node\FunctionLike) {
return null;
}
$phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($node);
// replace on @var/@param/@return/@throws
foreach ($this->pseudoNamespacesToNamespaces as $pseudoNamespaceToNamespace) {
$this->phpDocTypeRenamer->changeUnderscoreType($phpDocInfo, $node, $pseudoNamespaceToNamespace);
if ($this->refactorPhpDoc($node)) {
$hasChanged = \true;
}
// @todo - update rule to allow for bool instanceof check
if ($node instanceof \PhpParser\Node\Name || $node instanceof \PhpParser\Node\Identifier) {
return $this->processNameOrIdentifier($node);
$changedNode = $this->processNameOrIdentifier($node);
if ($changedNode instanceof \PhpParser\Node) {
$hasChanged = \true;
return $changedNode;
}
}
return null;
});
return $stmts;
if ($hasChanged) {
return $stmts;
}
return null;
}
/**
* @return Identifier|Name|null
@ -175,4 +183,28 @@ CODE_SAMPLE
$identifier->name = $lastNewNamePart;
return $identifier;
}
private function refactorNamespace(\PhpParser\Node\Stmt\Namespace_ $namespace) : ?\PhpParser\Node\Stmt\Namespace_
{
$changedStmts = $this->refactorStmts($namespace->stmts);
if ($changedStmts === null) {
return null;
}
return $namespace;
}
/**
* @param \PhpParser\Node\Name|\PhpParser\Node\FunctionLike|\PhpParser\Node\Identifier|\PhpParser\Node\Stmt\Property $node
*/
private function refactorPhpDoc($node) : bool
{
$hasChanged = \false;
$phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($node);
// replace on @var/@param/@return/@throws
foreach ($this->pseudoNamespacesToNamespaces as $pseudoNamespaceToNamespace) {
$hasDocTypeChanged = $this->phpDocTypeRenamer->changeUnderscoreType($phpDocInfo, $node, $pseudoNamespaceToNamespace);
if ($hasDocTypeChanged) {
$hasChanged = \true;
}
}
return $hasChanged;
}
}

View File

@ -16,11 +16,11 @@ final class VersionResolver
/**
* @var string
*/
public const PACKAGE_VERSION = 'c3581f9d339415a309668656d7e83e062588a1d1';
public const PACKAGE_VERSION = '6b9984175f5a334baa6d1b0736fd2434f1338252';
/**
* @var string
*/
public const RELEASE_DATE = '2022-06-04 07:37:23';
public const RELEASE_DATE = '2022-06-04 08:09:40';
/**
* @var int
*/

2
vendor/autoload.php vendored
View File

@ -9,4 +9,4 @@ if (PHP_VERSION_ID < 50600) {
require_once __DIR__ . '/composer/autoload_real.php';
return ComposerAutoloaderInited211136b2176d4962c85dca53c94647::getLoader();
return ComposerAutoloaderInit6644991d8153f63a37b73dfa0ef3e4a4::getLoader();

View File

@ -1311,7 +1311,6 @@ return array(
'Rector\\BetterPhpDocParser\\PhpDocManipulator\\VarAnnotationManipulator' => $baseDir . '/packages/BetterPhpDocParser/PhpDocManipulator/VarAnnotationManipulator.php',
'Rector\\BetterPhpDocParser\\PhpDocNodeFinder\\PhpDocNodeByTypeFinder' => $baseDir . '/packages/BetterPhpDocParser/PhpDocNodeFinder/PhpDocNodeByTypeFinder.php',
'Rector\\BetterPhpDocParser\\PhpDocNodeMapper' => $baseDir . '/packages/BetterPhpDocParser/PhpDocNodeMapper.php',
'Rector\\BetterPhpDocParser\\PhpDocNodeTraverser\\ChangedPhpDocNodeTraverserFactory' => $baseDir . '/packages/BetterPhpDocParser/PhpDocNodeTraverser/ChangedPhpDocNodeTraverserFactory.php',
'Rector\\BetterPhpDocParser\\PhpDocNodeVisitor\\ArrayTypePhpDocNodeVisitor' => $baseDir . '/packages/BetterPhpDocParser/PhpDocNodeVisitor/ArrayTypePhpDocNodeVisitor.php',
'Rector\\BetterPhpDocParser\\PhpDocNodeVisitor\\CallableTypePhpDocNodeVisitor' => $baseDir . '/packages/BetterPhpDocParser/PhpDocNodeVisitor/CallableTypePhpDocNodeVisitor.php',
'Rector\\BetterPhpDocParser\\PhpDocNodeVisitor\\ChangedPhpDocNodeVisitor' => $baseDir . '/packages/BetterPhpDocParser/PhpDocNodeVisitor/ChangedPhpDocNodeVisitor.php',
@ -2333,9 +2332,6 @@ return array(
'Rector\\NodeTypeResolver\\PhpDoc\\NodeAnalyzer\\DocBlockNameImporter' => $baseDir . '/packages/NodeTypeResolver/PhpDoc/NodeAnalyzer/DocBlockNameImporter.php',
'Rector\\NodeTypeResolver\\PhpDoc\\NodeAnalyzer\\DocBlockNamespaceRenamer' => $baseDir . '/packages/NodeTypeResolver/PhpDoc/NodeAnalyzer/DocBlockNamespaceRenamer.php',
'Rector\\NodeTypeResolver\\PhpDoc\\NodeAnalyzer\\DocBlockTagReplacer' => $baseDir . '/packages/NodeTypeResolver/PhpDoc/NodeAnalyzer/DocBlockTagReplacer.php',
'Rector\\NodeTypeResolver\\PhpDoc\\PhpDocNodeTraverser\\ImportingPhpDocNodeTraverserFactory' => $baseDir . '/packages/NodeTypeResolver/PhpDoc/PhpDocNodeTraverser/ImportingPhpDocNodeTraverserFactory.php',
'Rector\\NodeTypeResolver\\PhpDoc\\PhpDocNodeTraverser\\RenamingPhpDocNodeVisitorFactory' => $baseDir . '/packages/NodeTypeResolver/PhpDoc/PhpDocNodeTraverser/RenamingPhpDocNodeVisitorFactory.php',
'Rector\\NodeTypeResolver\\PhpDoc\\PhpDocNodeTraverser\\UnderscorePhpDocNodeTraverserFactory' => $baseDir . '/packages/NodeTypeResolver/PhpDoc/PhpDocNodeTraverser/UnderscorePhpDocNodeTraverserFactory.php',
'Rector\\NodeTypeResolver\\PhpDoc\\PhpDocTypeRenamer' => $baseDir . '/packages/NodeTypeResolver/PhpDoc/PhpDocTypeRenamer.php',
'Rector\\NodeTypeResolver\\Reflection\\BetterReflection\\RectorBetterReflectionSourceLocatorFactory' => $baseDir . '/packages/NodeTypeResolver/Reflection/BetterReflection/RectorBetterReflectionSourceLocatorFactory.php',
'Rector\\NodeTypeResolver\\Reflection\\BetterReflection\\SourceLocatorProvider\\DynamicSourceLocatorProvider' => $baseDir . '/packages/NodeTypeResolver/Reflection/BetterReflection/SourceLocatorProvider/DynamicSourceLocatorProvider.php',

View File

@ -2,7 +2,7 @@
// autoload_real.php @generated by Composer
class ComposerAutoloaderInited211136b2176d4962c85dca53c94647
class ComposerAutoloaderInit6644991d8153f63a37b73dfa0ef3e4a4
{
private static $loader;
@ -22,19 +22,19 @@ class ComposerAutoloaderInited211136b2176d4962c85dca53c94647
return self::$loader;
}
spl_autoload_register(array('ComposerAutoloaderInited211136b2176d4962c85dca53c94647', 'loadClassLoader'), true, true);
spl_autoload_register(array('ComposerAutoloaderInit6644991d8153f63a37b73dfa0ef3e4a4', 'loadClassLoader'), true, true);
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
spl_autoload_unregister(array('ComposerAutoloaderInited211136b2176d4962c85dca53c94647', 'loadClassLoader'));
spl_autoload_unregister(array('ComposerAutoloaderInit6644991d8153f63a37b73dfa0ef3e4a4', 'loadClassLoader'));
require __DIR__ . '/autoload_static.php';
call_user_func(\Composer\Autoload\ComposerStaticInited211136b2176d4962c85dca53c94647::getInitializer($loader));
call_user_func(\Composer\Autoload\ComposerStaticInit6644991d8153f63a37b73dfa0ef3e4a4::getInitializer($loader));
$loader->setClassMapAuthoritative(true);
$loader->register(true);
$includeFiles = \Composer\Autoload\ComposerStaticInited211136b2176d4962c85dca53c94647::$files;
$includeFiles = \Composer\Autoload\ComposerStaticInit6644991d8153f63a37b73dfa0ef3e4a4::$files;
foreach ($includeFiles as $fileIdentifier => $file) {
composerRequireed211136b2176d4962c85dca53c94647($fileIdentifier, $file);
composerRequire6644991d8153f63a37b73dfa0ef3e4a4($fileIdentifier, $file);
}
return $loader;
@ -46,7 +46,7 @@ class ComposerAutoloaderInited211136b2176d4962c85dca53c94647
* @param string $file
* @return void
*/
function composerRequireed211136b2176d4962c85dca53c94647($fileIdentifier, $file)
function composerRequire6644991d8153f63a37b73dfa0ef3e4a4($fileIdentifier, $file)
{
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;

View File

@ -4,7 +4,7 @@
namespace Composer\Autoload;
class ComposerStaticInited211136b2176d4962c85dca53c94647
class ComposerStaticInit6644991d8153f63a37b73dfa0ef3e4a4
{
public static $files = array (
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
@ -1638,7 +1638,6 @@ class ComposerStaticInited211136b2176d4962c85dca53c94647
'Rector\\BetterPhpDocParser\\PhpDocManipulator\\VarAnnotationManipulator' => __DIR__ . '/../..' . '/packages/BetterPhpDocParser/PhpDocManipulator/VarAnnotationManipulator.php',
'Rector\\BetterPhpDocParser\\PhpDocNodeFinder\\PhpDocNodeByTypeFinder' => __DIR__ . '/../..' . '/packages/BetterPhpDocParser/PhpDocNodeFinder/PhpDocNodeByTypeFinder.php',
'Rector\\BetterPhpDocParser\\PhpDocNodeMapper' => __DIR__ . '/../..' . '/packages/BetterPhpDocParser/PhpDocNodeMapper.php',
'Rector\\BetterPhpDocParser\\PhpDocNodeTraverser\\ChangedPhpDocNodeTraverserFactory' => __DIR__ . '/../..' . '/packages/BetterPhpDocParser/PhpDocNodeTraverser/ChangedPhpDocNodeTraverserFactory.php',
'Rector\\BetterPhpDocParser\\PhpDocNodeVisitor\\ArrayTypePhpDocNodeVisitor' => __DIR__ . '/../..' . '/packages/BetterPhpDocParser/PhpDocNodeVisitor/ArrayTypePhpDocNodeVisitor.php',
'Rector\\BetterPhpDocParser\\PhpDocNodeVisitor\\CallableTypePhpDocNodeVisitor' => __DIR__ . '/../..' . '/packages/BetterPhpDocParser/PhpDocNodeVisitor/CallableTypePhpDocNodeVisitor.php',
'Rector\\BetterPhpDocParser\\PhpDocNodeVisitor\\ChangedPhpDocNodeVisitor' => __DIR__ . '/../..' . '/packages/BetterPhpDocParser/PhpDocNodeVisitor/ChangedPhpDocNodeVisitor.php',
@ -2660,9 +2659,6 @@ class ComposerStaticInited211136b2176d4962c85dca53c94647
'Rector\\NodeTypeResolver\\PhpDoc\\NodeAnalyzer\\DocBlockNameImporter' => __DIR__ . '/../..' . '/packages/NodeTypeResolver/PhpDoc/NodeAnalyzer/DocBlockNameImporter.php',
'Rector\\NodeTypeResolver\\PhpDoc\\NodeAnalyzer\\DocBlockNamespaceRenamer' => __DIR__ . '/../..' . '/packages/NodeTypeResolver/PhpDoc/NodeAnalyzer/DocBlockNamespaceRenamer.php',
'Rector\\NodeTypeResolver\\PhpDoc\\NodeAnalyzer\\DocBlockTagReplacer' => __DIR__ . '/../..' . '/packages/NodeTypeResolver/PhpDoc/NodeAnalyzer/DocBlockTagReplacer.php',
'Rector\\NodeTypeResolver\\PhpDoc\\PhpDocNodeTraverser\\ImportingPhpDocNodeTraverserFactory' => __DIR__ . '/../..' . '/packages/NodeTypeResolver/PhpDoc/PhpDocNodeTraverser/ImportingPhpDocNodeTraverserFactory.php',
'Rector\\NodeTypeResolver\\PhpDoc\\PhpDocNodeTraverser\\RenamingPhpDocNodeVisitorFactory' => __DIR__ . '/../..' . '/packages/NodeTypeResolver/PhpDoc/PhpDocNodeTraverser/RenamingPhpDocNodeVisitorFactory.php',
'Rector\\NodeTypeResolver\\PhpDoc\\PhpDocNodeTraverser\\UnderscorePhpDocNodeTraverserFactory' => __DIR__ . '/../..' . '/packages/NodeTypeResolver/PhpDoc/PhpDocNodeTraverser/UnderscorePhpDocNodeTraverserFactory.php',
'Rector\\NodeTypeResolver\\PhpDoc\\PhpDocTypeRenamer' => __DIR__ . '/../..' . '/packages/NodeTypeResolver/PhpDoc/PhpDocTypeRenamer.php',
'Rector\\NodeTypeResolver\\Reflection\\BetterReflection\\RectorBetterReflectionSourceLocatorFactory' => __DIR__ . '/../..' . '/packages/NodeTypeResolver/Reflection/BetterReflection/RectorBetterReflectionSourceLocatorFactory.php',
'Rector\\NodeTypeResolver\\Reflection\\BetterReflection\\SourceLocatorProvider\\DynamicSourceLocatorProvider' => __DIR__ . '/../..' . '/packages/NodeTypeResolver/Reflection/BetterReflection/SourceLocatorProvider/DynamicSourceLocatorProvider.php',
@ -3795,9 +3791,9 @@ class ComposerStaticInited211136b2176d4962c85dca53c94647
public static function getInitializer(ClassLoader $loader)
{
return \Closure::bind(function () use ($loader) {
$loader->prefixLengthsPsr4 = ComposerStaticInited211136b2176d4962c85dca53c94647::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInited211136b2176d4962c85dca53c94647::$prefixDirsPsr4;
$loader->classMap = ComposerStaticInited211136b2176d4962c85dca53c94647::$classMap;
$loader->prefixLengthsPsr4 = ComposerStaticInit6644991d8153f63a37b73dfa0ef3e4a4::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInit6644991d8153f63a37b73dfa0ef3e4a4::$prefixDirsPsr4;
$loader->classMap = ComposerStaticInit6644991d8153f63a37b73dfa0ef3e4a4::$classMap;
}, null, ClassLoader::class);
}

View File

@ -9,8 +9,8 @@ $loader = require_once __DIR__.'/autoload.php';
if (!class_exists('AutoloadIncluder', false) && !interface_exists('AutoloadIncluder', false) && !trait_exists('AutoloadIncluder', false)) {
spl_autoload_call('RectorPrefix20220604\AutoloadIncluder');
}
if (!class_exists('ComposerAutoloaderInited211136b2176d4962c85dca53c94647', false) && !interface_exists('ComposerAutoloaderInited211136b2176d4962c85dca53c94647', false) && !trait_exists('ComposerAutoloaderInited211136b2176d4962c85dca53c94647', false)) {
spl_autoload_call('RectorPrefix20220604\ComposerAutoloaderInited211136b2176d4962c85dca53c94647');
if (!class_exists('ComposerAutoloaderInit6644991d8153f63a37b73dfa0ef3e4a4', false) && !interface_exists('ComposerAutoloaderInit6644991d8153f63a37b73dfa0ef3e4a4', false) && !trait_exists('ComposerAutoloaderInit6644991d8153f63a37b73dfa0ef3e4a4', false)) {
spl_autoload_call('RectorPrefix20220604\ComposerAutoloaderInit6644991d8153f63a37b73dfa0ef3e4a4');
}
if (!class_exists('Helmich\TypoScriptParser\Parser\AST\Statement', false) && !interface_exists('Helmich\TypoScriptParser\Parser\AST\Statement', false) && !trait_exists('Helmich\TypoScriptParser\Parser\AST\Statement', false)) {
spl_autoload_call('RectorPrefix20220604\Helmich\TypoScriptParser\Parser\AST\Statement');
@ -59,9 +59,9 @@ if (!function_exists('print_node')) {
return \RectorPrefix20220604\print_node(...func_get_args());
}
}
if (!function_exists('composerRequireed211136b2176d4962c85dca53c94647')) {
function composerRequireed211136b2176d4962c85dca53c94647() {
return \RectorPrefix20220604\composerRequireed211136b2176d4962c85dca53c94647(...func_get_args());
if (!function_exists('composerRequire6644991d8153f63a37b73dfa0ef3e4a4')) {
function composerRequire6644991d8153f63a37b73dfa0ef3e4a4() {
return \RectorPrefix20220604\composerRequire6644991d8153f63a37b73dfa0ef3e4a4(...func_get_args());
}
}
if (!function_exists('scanPath')) {