Skip to content

Commit cab5db4

Browse files
committed
Updated Rector to commit 184dd0296b2bdcb7165a0879b0a830f5c77bcc44
rectorphp/rector-src@184dd02 [dead-code] Add RemoveVoidDocblockFromMagicMethodRector (#7822)
1 parent cffe29b commit cab5db4

File tree

7 files changed

+110
-10
lines changed

7 files changed

+110
-10
lines changed
Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
<?php
2+
3+
declare (strict_types=1);
4+
namespace Rector\DeadCode\Rector\ClassMethod;
5+
6+
use PhpParser\Node;
7+
use PhpParser\Node\Stmt\ClassMethod;
8+
use PHPStan\PhpDocParser\Ast\PhpDoc\ReturnTagValueNode;
9+
use PHPStan\PhpDocParser\Ast\Type\IdentifierTypeNode;
10+
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory;
11+
use Rector\Comments\NodeDocBlock\DocBlockUpdater;
12+
use Rector\Rector\AbstractRector;
13+
use Rector\ValueObject\MethodName;
14+
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
15+
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
16+
/**
17+
* @see \Rector\Tests\DeadCode\Rector\ClassMethod\RemoveVoidDocblockFromMagicMethodRector\RemoveVoidDocblockFromMagicMethodRectorTest
18+
*/
19+
final class RemoveVoidDocblockFromMagicMethodRector extends AbstractRector
20+
{
21+
/**
22+
* @readonly
23+
*/
24+
private DocBlockUpdater $docBlockUpdater;
25+
/**
26+
* @readonly
27+
*/
28+
private PhpDocInfoFactory $phpDocInfoFactory;
29+
public function __construct(DocBlockUpdater $docBlockUpdater, PhpDocInfoFactory $phpDocInfoFactory)
30+
{
31+
$this->docBlockUpdater = $docBlockUpdater;
32+
$this->phpDocInfoFactory = $phpDocInfoFactory;
33+
}
34+
public function getRuleDefinition(): RuleDefinition
35+
{
36+
return new RuleDefinition('Remove useless @return void docblock from magic methods __construct, __destruct, and __clone', [new CodeSample(<<<'CODE_SAMPLE'
37+
class SomeClass
38+
{
39+
/**
40+
* @return void
41+
*/
42+
public function __construct() {}
43+
44+
/**
45+
* @return void
46+
*/
47+
public function __destruct() {}
48+
49+
/**
50+
* @return void
51+
*/
52+
public function __clone() {}
53+
}
54+
CODE_SAMPLE
55+
, <<<'CODE_SAMPLE'
56+
class SomeClass
57+
{
58+
public function __construct() {}
59+
60+
public function __destruct() {}
61+
62+
public function __clone() {}
63+
}
64+
CODE_SAMPLE
65+
)]);
66+
}
67+
public function getNodeTypes(): array
68+
{
69+
return [ClassMethod::class];
70+
}
71+
/**
72+
* @param ClassMethod $node
73+
*/
74+
public function refactor(Node $node): ?Node
75+
{
76+
if ($node->returnType instanceof Node) {
77+
return null;
78+
}
79+
if (!$this->isNames($node, [MethodName::CONSTRUCT, MethodName::DESTRUCT, MethodName::CLONE])) {
80+
return null;
81+
}
82+
$phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($node);
83+
$returnTagValueNode = $phpDocInfo->getReturnTagValue();
84+
if (!$returnTagValueNode instanceof ReturnTagValueNode) {
85+
return null;
86+
}
87+
if ($returnTagValueNode->description !== '') {
88+
return null;
89+
}
90+
if (!$returnTagValueNode->type instanceof IdentifierTypeNode || $returnTagValueNode->type->name !== 'void') {
91+
return null;
92+
}
93+
$phpDocInfo->removeByType(ReturnTagValueNode::class);
94+
$this->docBlockUpdater->updateRefactoredNodeWithPhpDocInfo($node);
95+
return $node;
96+
}
97+
}

rules/DeadCode/Rector/If_/RemoveDeadIfBlockRector.php

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
use PhpParser\Node;
77
use PhpParser\Node\Expr\BinaryOp\BooleanAnd;
88
use PhpParser\Node\Stmt\Else_;
9+
use PhpParser\Node\Stmt\ElseIf_;
910
use PhpParser\Node\Stmt\If_;
1011
use PhpParser\NodeVisitor;
1112
use Rector\DeadCode\SideEffect\SideEffectNodeDetector;
@@ -95,13 +96,11 @@ public function refactor(Node $node)
9596
$node->else = null;
9697
return $this->refactor($node) ?? $node;
9798
}
98-
if ($node->elseifs !== []) {
99-
foreach ($node->elseifs as $elseif) {
100-
$keep_elseifs = array_filter($node->elseifs, fn($elseif) => $elseif->stmts !== [] || $this->sideEffectNodeDetector->detect($elseif->cond));
101-
if (count($node->elseifs) !== count($keep_elseifs)) {
102-
$node->elseifs = $keep_elseifs;
103-
return $this->refactor($node) ?? $node;
104-
}
99+
foreach ($node->elseifs as $elseif) {
100+
$keep_elseifs = array_filter($node->elseifs, fn(ElseIf_ $elseif): bool => $elseif->stmts !== [] || $this->sideEffectNodeDetector->detect($elseif->cond));
101+
if (count($node->elseifs) !== count($keep_elseifs)) {
102+
$node->elseifs = $keep_elseifs;
103+
return $this->refactor($node) ?? $node;
105104
}
106105
}
107106
if ($node->stmts !== []) {

src/Application/VersionResolver.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@ final class VersionResolver
1919
* @api
2020
* @var string
2121
*/
22-
public const PACKAGE_VERSION = '7891d874ac7cc0f7b3a0dc2dc128085f9038bfa9';
22+
public const PACKAGE_VERSION = '184dd0296b2bdcb7165a0879b0a830f5c77bcc44';
2323
/**
2424
* @api
2525
* @var string
2626
*/
27-
public const RELEASE_DATE = '2026-01-13 15:14:53';
27+
public const RELEASE_DATE = '2026-01-13 14:52:03';
2828
/**
2929
* @var int
3030
*/

src/Config/Level/DeadCodeLevel.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
use Rector\DeadCode\Rector\ClassMethod\RemoveUselessParamTagRector;
2727
use Rector\DeadCode\Rector\ClassMethod\RemoveUselessReturnExprInConstructRector;
2828
use Rector\DeadCode\Rector\ClassMethod\RemoveUselessReturnTagRector;
29+
use Rector\DeadCode\Rector\ClassMethod\RemoveVoidDocblockFromMagicMethodRector;
2930
use Rector\DeadCode\Rector\Closure\RemoveUnusedClosureVariableUseRector;
3031
use Rector\DeadCode\Rector\Concat\RemoveConcatAutocastRector;
3132
use Rector\DeadCode\Rector\ConstFetch\RemovePhpVersionIdCheckRector;
@@ -104,6 +105,7 @@ final class DeadCodeLevel
104105
SimplifyUselessVariableRector::class,
105106
RemoveDeadZeroAndOneOperationRector::class,
106107
// docblock
108+
RemoveVoidDocblockFromMagicMethodRector::class,
107109
RemoveUselessParamTagRector::class,
108110
RemoveUselessReturnTagRector::class,
109111
RemoveUselessReadOnlyTagRector::class,

src/PhpParser/Node/BetterNodeFinder.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@
33
declare (strict_types=1);
44
namespace Rector\PhpParser\Node;
55

6-
use PhpParser\Node\Stmt\ClassMethod;
76
use PhpParser\Node;
87
use PhpParser\Node\Expr\Variable;
98
use PhpParser\Node\Expr\Yield_;
109
use PhpParser\Node\Expr\YieldFrom;
1110
use PhpParser\Node\FunctionLike;
1211
use PhpParser\Node\Stmt;
1312
use PhpParser\Node\Stmt\Class_;
13+
use PhpParser\Node\Stmt\ClassMethod;
1414
use PhpParser\Node\Stmt\Return_;
1515
use PhpParser\NodeFinder;
1616
use PhpParser\NodeVisitor;

vendor/composer/autoload_classmap.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1410,6 +1410,7 @@
14101410
'Rector\\DeadCode\\Rector\\ClassMethod\\RemoveUselessParamTagRector' => $baseDir . '/rules/DeadCode/Rector/ClassMethod/RemoveUselessParamTagRector.php',
14111411
'Rector\\DeadCode\\Rector\\ClassMethod\\RemoveUselessReturnExprInConstructRector' => $baseDir . '/rules/DeadCode/Rector/ClassMethod/RemoveUselessReturnExprInConstructRector.php',
14121412
'Rector\\DeadCode\\Rector\\ClassMethod\\RemoveUselessReturnTagRector' => $baseDir . '/rules/DeadCode/Rector/ClassMethod/RemoveUselessReturnTagRector.php',
1413+
'Rector\\DeadCode\\Rector\\ClassMethod\\RemoveVoidDocblockFromMagicMethodRector' => $baseDir . '/rules/DeadCode/Rector/ClassMethod/RemoveVoidDocblockFromMagicMethodRector.php',
14131414
'Rector\\DeadCode\\Rector\\Closure\\RemoveUnusedClosureVariableUseRector' => $baseDir . '/rules/DeadCode/Rector/Closure/RemoveUnusedClosureVariableUseRector.php',
14141415
'Rector\\DeadCode\\Rector\\Concat\\RemoveConcatAutocastRector' => $baseDir . '/rules/DeadCode/Rector/Concat/RemoveConcatAutocastRector.php',
14151416
'Rector\\DeadCode\\Rector\\ConstFetch\\RemovePhpVersionIdCheckRector' => $baseDir . '/rules/DeadCode/Rector/ConstFetch/RemovePhpVersionIdCheckRector.php',

vendor/composer/autoload_static.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1670,6 +1670,7 @@ class ComposerStaticInit7001fb5f7b9b8dbb950c02836c7af51c
16701670
'Rector\\DeadCode\\Rector\\ClassMethod\\RemoveUselessParamTagRector' => __DIR__ . '/../..' . '/rules/DeadCode/Rector/ClassMethod/RemoveUselessParamTagRector.php',
16711671
'Rector\\DeadCode\\Rector\\ClassMethod\\RemoveUselessReturnExprInConstructRector' => __DIR__ . '/../..' . '/rules/DeadCode/Rector/ClassMethod/RemoveUselessReturnExprInConstructRector.php',
16721672
'Rector\\DeadCode\\Rector\\ClassMethod\\RemoveUselessReturnTagRector' => __DIR__ . '/../..' . '/rules/DeadCode/Rector/ClassMethod/RemoveUselessReturnTagRector.php',
1673+
'Rector\\DeadCode\\Rector\\ClassMethod\\RemoveVoidDocblockFromMagicMethodRector' => __DIR__ . '/../..' . '/rules/DeadCode/Rector/ClassMethod/RemoveVoidDocblockFromMagicMethodRector.php',
16731674
'Rector\\DeadCode\\Rector\\Closure\\RemoveUnusedClosureVariableUseRector' => __DIR__ . '/../..' . '/rules/DeadCode/Rector/Closure/RemoveUnusedClosureVariableUseRector.php',
16741675
'Rector\\DeadCode\\Rector\\Concat\\RemoveConcatAutocastRector' => __DIR__ . '/../..' . '/rules/DeadCode/Rector/Concat/RemoveConcatAutocastRector.php',
16751676
'Rector\\DeadCode\\Rector\\ConstFetch\\RemovePhpVersionIdCheckRector' => __DIR__ . '/../..' . '/rules/DeadCode/Rector/ConstFetch/RemovePhpVersionIdCheckRector.php',

0 commit comments

Comments
 (0)