2021-01-30 21:16:37 +00:00
|
|
|
<?php
|
|
|
|
|
2021-05-09 20:15:43 +00:00
|
|
|
declare (strict_types=1);
|
2021-03-21 12:57:56 +00:00
|
|
|
namespace Rector\DeadCode\PhpDoc;
|
2021-01-30 21:16:37 +00:00
|
|
|
|
|
|
|
use PhpParser\Node\Stmt\Property;
|
|
|
|
use PHPStan\PhpDocParser\Ast\PhpDoc\VarTagValueNode;
|
2021-02-23 01:25:34 +00:00
|
|
|
use Rector\NodeTypeResolver\TypeComparator\TypeComparator;
|
2021-01-30 21:16:37 +00:00
|
|
|
final class DeadVarTagValueNodeAnalyzer
|
|
|
|
{
|
|
|
|
/**
|
2021-12-04 12:47:17 +00:00
|
|
|
* @readonly
|
2021-05-10 23:39:21 +00:00
|
|
|
* @var \Rector\NodeTypeResolver\TypeComparator\TypeComparator
|
2021-01-30 21:16:37 +00:00
|
|
|
*/
|
|
|
|
private $typeComparator;
|
2021-05-10 22:23:08 +00:00
|
|
|
public function __construct(\Rector\NodeTypeResolver\TypeComparator\TypeComparator $typeComparator)
|
2021-01-30 21:16:37 +00:00
|
|
|
{
|
|
|
|
$this->typeComparator = $typeComparator;
|
|
|
|
}
|
2021-05-10 22:23:08 +00:00
|
|
|
public function isDead(\PHPStan\PhpDocParser\Ast\PhpDoc\VarTagValueNode $varTagValueNode, \PhpParser\Node\Stmt\Property $property) : bool
|
2021-01-30 21:16:37 +00:00
|
|
|
{
|
|
|
|
if ($property->type === null) {
|
2021-05-09 20:15:43 +00:00
|
|
|
return \false;
|
2021-01-30 21:16:37 +00:00
|
|
|
}
|
2021-05-09 20:15:43 +00:00
|
|
|
if (!$this->typeComparator->arePhpParserAndPhpStanPhpDocTypesEqual($property->type, $varTagValueNode->type, $property)) {
|
|
|
|
return \false;
|
2021-01-30 21:16:37 +00:00
|
|
|
}
|
|
|
|
return $varTagValueNode->description === '';
|
|
|
|
}
|
|
|
|
}
|