[DeadCode] Fix RemoveDoubleAssignRector in catch

This commit is contained in:
Tomas Votruba 2019-04-26 00:12:34 +02:00
parent 713707b42b
commit 5780ab30a3
4 changed files with 41 additions and 3 deletions

View File

@ -123,17 +123,34 @@ CODE_SAMPLE
{
$firstNodeParent = $this->betterNodeFinder->findFirstParentInstanceOf(
$firstNode,
[Foreach_::class, If_::class, While_::class, Do_::class, Else_::class, ElseIf_::class]
[
Foreach_::class,
If_::class,
While_::class,
Do_::class,
Else_::class,
ElseIf_::class,
Node\Stmt\Catch_::class,
]
);
$secondNodeParent = $this->betterNodeFinder->findFirstParentInstanceOf(
$secondNode,
[Foreach_::class, If_::class, While_::class, Do_::class, If_::class, ElseIf_::class]
[
Foreach_::class,
If_::class,
While_::class,
Do_::class,
If_::class,
ElseIf_::class,
Node\Stmt\Catch_::class,
]
);
if ($firstNodeParent === null || $secondNodeParent === null) {
return false;
}
return ! $this->areNodesEqual($firstNodeParent, $secondNodeParent);
}

View File

@ -0,0 +1,19 @@
<?php
namespace Rector\DeadCode\Tests\Rector\Assign\RemoveDoubleAssignRector\Fixture;
class Example
{
public function action()
{
$noException = true;
try {
$this->doSomething();
} catch (\InvalidArgumentException $e) {
$noException = false;
} catch (\Exception $e) {
$noException = false;
}
}
}

View File

@ -18,6 +18,8 @@ final class RemoveDoubleAssignRectorTest extends AbstractRectorTestCase
__DIR__ . '/Fixture/keep_property_assign_in_different_ifs.php.inc',
__DIR__ . '/Fixture/inside_if_else.php.inc',
__DIR__ . '/Fixture/inside_the_same_if.php.inc',
// skip
__DIR__ . '/Fixture/skip_double_catch.php.inc',
]);
}

View File

@ -8,7 +8,7 @@ use PhpParser\Node\Stmt\Class_;
final class UniqueObjectOrServiceDetector
{
public function isUniqueObject(Class_ $class): bool
public function isUniqueObject(): bool
{
// ideas:
// hook in container?