Updated Rector to commit 57ec646b63b0c7804df44fd67990b41d83d56c40

57ec646b63 Make PhpDocINfo::removeByType() return bool to inform about changed node (#4979)
This commit is contained in:
Tomas Votruba 2023-09-11 07:37:02 +00:00
parent 4cbb15f972
commit 553b67b890
12 changed files with 45 additions and 39 deletions

View File

@ -258,10 +258,11 @@ final class PhpDocInfo
* @template T of \PHPStan\PhpDocParser\Ast\Node
* @param class-string<T> $typeToRemove
*/
public function removeByType(string $typeToRemove) : void
public function removeByType(string $typeToRemove) : bool
{
$hasChanged = \false;
$phpDocNodeTraverser = new PhpDocNodeTraverser();
$phpDocNodeTraverser->traverseWithCallable($this->phpDocNode, '', function (Node $node) use($typeToRemove) : ?int {
$phpDocNodeTraverser->traverseWithCallable($this->phpDocNode, '', function (Node $node) use($typeToRemove, &$hasChanged) : ?int {
if ($node instanceof PhpDocTagNode && $node->value instanceof $typeToRemove) {
// keep special annotation for tools
if (\strncmp($node->name, '@psalm-', \strlen('@psalm-')) === 0) {
@ -271,14 +272,17 @@ final class PhpDocInfo
return null;
}
$this->markAsChanged();
$hasChanged = \true;
return PhpDocNodeTraverser::NODE_REMOVE;
}
if (!$node instanceof $typeToRemove) {
return null;
}
$this->markAsChanged();
$hasChanged = \true;
return PhpDocNodeTraverser::NODE_REMOVE;
});
return $hasChanged;
}
public function addTagValueNode(PhpDocTagValueNode $phpDocTagValueNode) : void
{

View File

@ -10,8 +10,9 @@ use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo;
use Rector\PhpDocParser\PhpDocParser\PhpDocNodeTraverser;
final class PhpDocTagRemover
{
public function removeByName(PhpDocInfo $phpDocInfo, string $name) : void
public function removeByName(PhpDocInfo $phpDocInfo, string $name) : bool
{
$hasChanged = \false;
$phpDocNode = $phpDocInfo->getPhpDocNode();
foreach ($phpDocNode->children as $key => $phpDocChildNode) {
if (!$phpDocChildNode instanceof PhpDocTagNode) {
@ -19,13 +20,16 @@ final class PhpDocTagRemover
}
if ($this->areAnnotationNamesEqual($name, $phpDocChildNode->name)) {
unset($phpDocNode->children[$key]);
$hasChanged = \true;
$phpDocInfo->markAsChanged();
}
if ($phpDocChildNode->value instanceof DoctrineAnnotationTagValueNode && $phpDocChildNode->value->hasClassName($name)) {
unset($phpDocNode->children[$key]);
$hasChanged = \true;
$phpDocInfo->markAsChanged();
}
}
return $hasChanged;
}
public function removeTagValueFromNode(PhpDocInfo $phpDocInfo, Node $desiredNode) : void
{

View File

@ -9,6 +9,7 @@ use PhpParser\Node\Stmt\ClassConst;
use PhpParser\Node\Stmt\ClassLike;
use PhpParser\Node\Stmt\Property;
use PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTagValueNode;
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo;
use Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTagRemover;
use Rector\Core\Contract\Rector\ConfigurableRectorInterface;
use Rector\Core\Rector\AbstractRector;
@ -62,18 +63,26 @@ CODE_SAMPLE
*/
public function refactor(Node $node) : ?Node
{
if ($this->annotationsToRemove === []) {
Assert::notEmpty($this->annotationsToRemove);
$phpDocInfo = $this->phpDocInfoFactory->createFromNode($node);
if (!$phpDocInfo instanceof PhpDocInfo) {
return null;
}
$phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($node);
$hasChanged = \false;
foreach ($this->annotationsToRemove as $annotationToRemove) {
$this->phpDocTagRemover->removeByName($phpDocInfo, $annotationToRemove);
$namedHasChanged = $this->phpDocTagRemover->removeByName($phpDocInfo, $annotationToRemove);
if ($namedHasChanged) {
$hasChanged = \true;
}
if (!\is_a($annotationToRemove, PhpDocTagValueNode::class, \true)) {
continue;
}
$phpDocInfo->removeByType($annotationToRemove);
$typedHasChanged = $phpDocInfo->removeByType($annotationToRemove);
if ($typedHasChanged) {
$hasChanged = \true;
}
}
if ($phpDocInfo->hasChanged()) {
if ($hasChanged) {
return $node;
}
return null;

View File

@ -19,12 +19,12 @@ final class VersionResolver
* @api
* @var string
*/
public const PACKAGE_VERSION = '1593d006138230202e20bd209da375ca1e171876';
public const PACKAGE_VERSION = '57ec646b63b0c7804df44fd67990b41d83d56c40';
/**
* @api
* @var string
*/
public const RELEASE_DATE = '2023-09-10 22:24:21';
public const RELEASE_DATE = '2023-09-11 07:33:42';
/**
* @var int
*/

2
vendor/autoload.php vendored
View File

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

View File

@ -2,7 +2,7 @@
// autoload_real.php @generated by Composer
class ComposerAutoloaderInitd016ff441fb90d53cf2764e0578c9778
class ComposerAutoloaderInit2869eca86dbdc2f5b27200462c810b76
{
private static $loader;
@ -22,17 +22,17 @@ class ComposerAutoloaderInitd016ff441fb90d53cf2764e0578c9778
return self::$loader;
}
spl_autoload_register(array('ComposerAutoloaderInitd016ff441fb90d53cf2764e0578c9778', 'loadClassLoader'), true, true);
spl_autoload_register(array('ComposerAutoloaderInit2869eca86dbdc2f5b27200462c810b76', 'loadClassLoader'), true, true);
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
spl_autoload_unregister(array('ComposerAutoloaderInitd016ff441fb90d53cf2764e0578c9778', 'loadClassLoader'));
spl_autoload_unregister(array('ComposerAutoloaderInit2869eca86dbdc2f5b27200462c810b76', 'loadClassLoader'));
require __DIR__ . '/autoload_static.php';
call_user_func(\Composer\Autoload\ComposerStaticInitd016ff441fb90d53cf2764e0578c9778::getInitializer($loader));
call_user_func(\Composer\Autoload\ComposerStaticInit2869eca86dbdc2f5b27200462c810b76::getInitializer($loader));
$loader->setClassMapAuthoritative(true);
$loader->register(true);
$filesToLoad = \Composer\Autoload\ComposerStaticInitd016ff441fb90d53cf2764e0578c9778::$files;
$filesToLoad = \Composer\Autoload\ComposerStaticInit2869eca86dbdc2f5b27200462c810b76::$files;
$requireFile = \Closure::bind(static function ($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 ComposerStaticInitd016ff441fb90d53cf2764e0578c9778
class ComposerStaticInit2869eca86dbdc2f5b27200462c810b76
{
public static $files = array (
'ad155f8f1cf0d418fe49e248db8c661b' => __DIR__ . '/..' . '/react/promise/src/functions_include.php',
@ -2596,9 +2596,9 @@ class ComposerStaticInitd016ff441fb90d53cf2764e0578c9778
public static function getInitializer(ClassLoader $loader)
{
return \Closure::bind(function () use ($loader) {
$loader->prefixLengthsPsr4 = ComposerStaticInitd016ff441fb90d53cf2764e0578c9778::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInitd016ff441fb90d53cf2764e0578c9778::$prefixDirsPsr4;
$loader->classMap = ComposerStaticInitd016ff441fb90d53cf2764e0578c9778::$classMap;
$loader->prefixLengthsPsr4 = ComposerStaticInit2869eca86dbdc2f5b27200462c810b76::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInit2869eca86dbdc2f5b27200462c810b76::$prefixDirsPsr4;
$loader->classMap = ComposerStaticInit2869eca86dbdc2f5b27200462c810b76::$classMap;
}, null, ClassLoader::class);
}

View File

@ -1943,12 +1943,12 @@
"source": {
"type": "git",
"url": "https:\/\/github.com\/rectorphp\/rector-symfony.git",
"reference": "d4f8c9dd6750fe31362d2f93412ed53bd0ff726c"
"reference": "f24210be3d800965debdd9be6a284b0ab4d54c94"
},
"dist": {
"type": "zip",
"url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-symfony\/zipball\/d4f8c9dd6750fe31362d2f93412ed53bd0ff726c",
"reference": "d4f8c9dd6750fe31362d2f93412ed53bd0ff726c",
"url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-symfony\/zipball\/f24210be3d800965debdd9be6a284b0ab4d54c94",
"reference": "f24210be3d800965debdd9be6a284b0ab4d54c94",
"shasum": ""
},
"require": {
@ -1962,7 +1962,7 @@
"phpunit\/phpunit": "^10.3",
"rector\/phpstan-rules": "^0.6",
"rector\/rector-generator": "^0.7",
"rector\/rector-src": "dev-main",
"rector\/rector-src": "dev-main#tv-narrow-abstract",
"symfony\/config": "^6.3",
"symfony\/dependency-injection": "^6.3",
"symfony\/routing": "^6.2",
@ -1981,7 +1981,7 @@
"tomasvotruba\/unused-public": "^0.2",
"tracy\/tracy": "^2.10"
},
"time": "2023-09-09T22:24:42+00:00",
"time": "2023-09-10T23:41:00+00:00",
"default-branch": true,
"type": "rector-extension",
"extra": {

File diff suppressed because one or more lines are too long

View File

@ -9,7 +9,7 @@ namespace Rector\RectorInstaller;
*/
final class GeneratedConfig
{
public const EXTENSIONS = array('rector/rector-doctrine' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-doctrine', 'relative_install_path' => '../../rector-doctrine', 'extra' => NULL, 'version' => 'dev-main aecc9c7'), 'rector/rector-downgrade-php' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-downgrade-php', 'relative_install_path' => '../../rector-downgrade-php', 'extra' => NULL, 'version' => 'dev-main fa41cc7'), 'rector/rector-phpunit' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-phpunit', 'relative_install_path' => '../../rector-phpunit', 'extra' => NULL, 'version' => 'dev-main 942af4f'), 'rector/rector-symfony' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-symfony', 'relative_install_path' => '../../rector-symfony', 'extra' => NULL, 'version' => 'dev-main d4f8c9d'));
public const EXTENSIONS = array('rector/rector-doctrine' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-doctrine', 'relative_install_path' => '../../rector-doctrine', 'extra' => NULL, 'version' => 'dev-main aecc9c7'), 'rector/rector-downgrade-php' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-downgrade-php', 'relative_install_path' => '../../rector-downgrade-php', 'extra' => NULL, 'version' => 'dev-main fa41cc7'), 'rector/rector-phpunit' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-phpunit', 'relative_install_path' => '../../rector-phpunit', 'extra' => NULL, 'version' => 'dev-main 942af4f'), 'rector/rector-symfony' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-symfony', 'relative_install_path' => '../../rector-symfony', 'extra' => NULL, 'version' => 'dev-main f24210b'));
private function __construct()
{
}

View File

@ -14,7 +14,7 @@
"phpunit\/phpunit": "^10.3",
"rector\/phpstan-rules": "^0.6",
"rector\/rector-generator": "^0.7",
"rector\/rector-src": "dev-main",
"rector\/rector-src": "dev-main#tv-narrow-abstract",
"symfony\/config": "^6.3",
"symfony\/dependency-injection": "^6.3",
"symfony\/routing": "^6.2",

View File

@ -6,18 +6,8 @@ namespace Rector\Symfony\NodeManipulator;
use PhpParser\Node\Expr\Array_;
use PhpParser\Node\Expr\ArrayItem;
use PhpParser\Node\Scalar\String_;
use Rector\ChangesReporting\Collector\RectorChangeCollector;
final class ArrayManipulator
{
/**
* @readonly
* @var \Rector\ChangesReporting\Collector\RectorChangeCollector
*/
private $rectorChangeCollector;
public function __construct(RectorChangeCollector $rectorChangeCollector)
{
$this->rectorChangeCollector = $rectorChangeCollector;
}
public function addItemToArrayUnderKey(Array_ $array, ArrayItem $newArrayItem, string $key) : void
{
foreach ($array->items as $item) {
@ -49,7 +39,6 @@ final class ArrayManipulator
}
// remove + recount for the printer
unset($array->items[$i]);
$this->rectorChangeCollector->notifyNodeFileInfo($removedArrayItem);
return $item;
}
return null;