Skip to content

Commit 51179e2

Browse files
authored
[CodeQuality] Skip AddIntersectionVarToMockObjectPropertyRector when @var already has intersection type (#699)
1 parent ceb0d4c commit 51179e2

2 files changed

Lines changed: 27 additions & 0 deletions

File tree

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?php
2+
3+
namespace Rector\PHPUnit\Tests\CodeQuality\Rector\Class_\AddIntersectionVarToMockObjectPropertyRector\Fixture;
4+
5+
use PHPUnit\Framework\TestCase;
6+
7+
final class SkipExistingIntersectionVarTest extends TestCase
8+
{
9+
/**
10+
* @var \PHPUnit\Framework\MockObject\MockObject&\stdClass
11+
*/
12+
private \PHPUnit\Framework\MockObject\MockObject $someServiceMock;
13+
14+
protected function setUp(): void
15+
{
16+
$this->someServiceMock = $this->createMock(\stdClass::class);
17+
}
18+
}

‎rules/CodeQuality/Rector/Class_/AddIntersectionVarToMockObjectPropertyRector.php‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@
1010
use PhpParser\Node\Stmt\Class_;
1111
use PhpParser\Node\Stmt\ClassMethod;
1212
use PhpParser\Node\Stmt\Property;
13+
use PHPStan\PhpDocParser\Ast\PhpDoc\VarTagValueNode;
1314
use PHPStan\PhpDocParser\Ast\Type\IdentifierTypeNode;
15+
use PHPStan\PhpDocParser\Ast\Type\IntersectionTypeNode;
1416
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory;
1517
use Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTypeChanger;
1618
use Rector\BetterPhpDocParser\ValueObject\Type\BracketsAwareIntersectionTypeNode;
@@ -85,6 +87,13 @@ public function refactor(Node $node): ?Class_
8587
]);
8688

8789
$phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($property);
90+
91+
// already has an intersection @var, skip
92+
$varTagValueNode = $phpDocInfo->getVarTagValueNode();
93+
if ($varTagValueNode instanceof VarTagValueNode && $varTagValueNode->type instanceof IntersectionTypeNode) {
94+
continue;
95+
}
96+
8897
$this->phpDocTypeChanger->changeVarTypeNode($property, $phpDocInfo, $intersectionTypeNode);
8998

9099
$hasChanged = true;

0 commit comments

Comments
 (0)