Skip to content

Commit 29d7ee1

Browse files
committed
feature: add handling for void magic methods
1 parent 6535bab commit 29d7ee1

4 files changed

Lines changed: 105 additions & 0 deletions

File tree

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?php
2+
3+
namespace Rector\Tests\DeadCode\Rector\ClassMethod\RemoveUselessReturnTagRector\Fixture;
4+
5+
class RemoveReturnClone
6+
{
7+
/**
8+
* @return void
9+
*/
10+
function __clone()
11+
{
12+
//
13+
}
14+
}
15+
16+
?>
17+
-----
18+
<?php
19+
20+
namespace Rector\Tests\DeadCode\Rector\ClassMethod\RemoveUselessReturnTagRector\Fixture;
21+
22+
class RemoveReturnClone
23+
{
24+
function __clone()
25+
{
26+
//
27+
}
28+
}
29+
30+
?>
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?php
2+
3+
namespace Rector\Tests\DeadCode\Rector\ClassMethod\RemoveUselessReturnTagRector\Fixture;
4+
5+
class RemoveReturnConstruct
6+
{
7+
/**
8+
* @return void
9+
*/
10+
function __construct()
11+
{
12+
//
13+
}
14+
}
15+
16+
?>
17+
-----
18+
<?php
19+
20+
namespace Rector\Tests\DeadCode\Rector\ClassMethod\RemoveUselessReturnTagRector\Fixture;
21+
22+
class RemoveReturnConstruct
23+
{
24+
function __construct()
25+
{
26+
//
27+
}
28+
}
29+
30+
?>
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?php
2+
3+
namespace Rector\Tests\DeadCode\Rector\ClassMethod\RemoveUselessReturnTagRector\Fixture;
4+
5+
class RemoveReturnDestruct
6+
{
7+
/**
8+
* @return void
9+
*/
10+
function __destruct()
11+
{
12+
//
13+
}
14+
}
15+
16+
?>
17+
-----
18+
<?php
19+
20+
namespace Rector\Tests\DeadCode\Rector\ClassMethod\RemoveUselessReturnTagRector\Fixture;
21+
22+
class RemoveReturnDestruct
23+
{
24+
function __destruct()
25+
{
26+
//
27+
}
28+
}
29+
30+
?>

rules/DeadCode/PhpDoc/DeadReturnTagValueNodeAnalyzer.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,10 @@ public function isDead(ReturnTagValueNode $returnTagValueNode, ClassMethod|Funct
4242
{
4343
$returnType = $functionLike->getReturnType();
4444

45+
if ($this->isVoidMagicMethod($functionLike)) {
46+
return true;
47+
}
48+
4549
if ($returnType === null) {
4650
return false;
4751
}
@@ -94,6 +98,17 @@ public function isDead(ReturnTagValueNode $returnTagValueNode, ClassMethod|Funct
9498
return ! $this->hasTrueFalsePseudoType($returnTagValueNode->type);
9599
}
96100

101+
public function isVoidMagicMethod(ClassMethod|Function_ $functionLike): bool
102+
{
103+
$voidMagicMethods = ['__construct', '__destruct', '__clone'];
104+
105+
return $functionLike instanceof ClassMethod && in_array(
106+
$functionLike->name->toString(),
107+
$voidMagicMethods,
108+
true
109+
);
110+
}
111+
97112
private function isVoidReturnType(Node $node): bool
98113
{
99114
return $node instanceof Identifier && $node->toString() === 'void';

0 commit comments

Comments
 (0)