mirror of
https://github.com/rectorphp/rector.git
synced 2025-04-13 12:02:09 +02:00
Updated Rector to commit 57ec646b63b0c7804df44fd67990b41d83d56c40
57ec646b63
Make PhpDocINfo::removeByType() return bool to inform about changed node (#4979)
This commit is contained in:
parent
4cbb15f972
commit
553b67b890
@ -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
|
||||
{
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -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;
|
||||
|
@ -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
2
vendor/autoload.php
vendored
@ -22,4 +22,4 @@ if (PHP_VERSION_ID < 50600) {
|
||||
|
||||
require_once __DIR__ . '/composer/autoload_real.php';
|
||||
|
||||
return ComposerAutoloaderInitd016ff441fb90d53cf2764e0578c9778::getLoader();
|
||||
return ComposerAutoloaderInit2869eca86dbdc2f5b27200462c810b76::getLoader();
|
||||
|
10
vendor/composer/autoload_real.php
vendored
10
vendor/composer/autoload_real.php
vendored
@ -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;
|
||||
|
8
vendor/composer/autoload_static.php
vendored
8
vendor/composer/autoload_static.php
vendored
@ -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);
|
||||
}
|
||||
|
10
vendor/composer/installed.json
vendored
10
vendor/composer/installed.json
vendored
@ -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": {
|
||||
|
2
vendor/composer/installed.php
vendored
2
vendor/composer/installed.php
vendored
File diff suppressed because one or more lines are too long
@ -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()
|
||||
{
|
||||
}
|
||||
|
2
vendor/rector/rector-symfony/composer.json
vendored
2
vendor/rector/rector-symfony/composer.json
vendored
@ -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",
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user