1010use PHPStan \PhpDocParser \Ast \Type \IdentifierTypeNode ;
1111use Rector \BetterPhpDocParser \PhpDocManipulator \PhpDocTypeChanger ;
1212use Rector \BetterPhpDocParser \ValueObject \Type \BracketsAwareUnionTypeNode ;
13+ use Rector \DeadCode \PhpDoc \Guard \StandaloneTypeRemovalGuard ;
1314use Rector \DeadCode \TypeNodeAnalyzer \GenericTypeNodeAnalyzer ;
1415use Rector \DeadCode \TypeNodeAnalyzer \MixedArrayTypeNodeAnalyzer ;
1516use Rector \NodeNameResolver \NodeNameResolver ;
@@ -47,14 +48,20 @@ final class DeadParamTagValueNodeAnalyzer
4748 * @var \Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTypeChanger
4849 */
4950 private $ phpDocTypeChanger ;
50- public function __construct (NodeNameResolver $ nodeNameResolver , TypeComparator $ typeComparator , GenericTypeNodeAnalyzer $ genericTypeNodeAnalyzer , MixedArrayTypeNodeAnalyzer $ mixedArrayTypeNodeAnalyzer , ParamAnalyzer $ paramAnalyzer , PhpDocTypeChanger $ phpDocTypeChanger )
51+ /**
52+ * @readonly
53+ * @var \Rector\DeadCode\PhpDoc\Guard\StandaloneTypeRemovalGuard
54+ */
55+ private $ standaloneTypeRemovalGuard ;
56+ public function __construct (NodeNameResolver $ nodeNameResolver , TypeComparator $ typeComparator , GenericTypeNodeAnalyzer $ genericTypeNodeAnalyzer , MixedArrayTypeNodeAnalyzer $ mixedArrayTypeNodeAnalyzer , ParamAnalyzer $ paramAnalyzer , PhpDocTypeChanger $ phpDocTypeChanger , StandaloneTypeRemovalGuard $ standaloneTypeRemovalGuard )
5157 {
5258 $ this ->nodeNameResolver = $ nodeNameResolver ;
5359 $ this ->typeComparator = $ typeComparator ;
5460 $ this ->genericTypeNodeAnalyzer = $ genericTypeNodeAnalyzer ;
5561 $ this ->mixedArrayTypeNodeAnalyzer = $ mixedArrayTypeNodeAnalyzer ;
5662 $ this ->paramAnalyzer = $ paramAnalyzer ;
5763 $ this ->phpDocTypeChanger = $ phpDocTypeChanger ;
64+ $ this ->standaloneTypeRemovalGuard = $ standaloneTypeRemovalGuard ;
5865 }
5966 public function isDead (ParamTagValueNode $ paramTagValueNode , FunctionLike $ functionLike ) : bool
6067 {
@@ -78,7 +85,7 @@ public function isDead(ParamTagValueNode $paramTagValueNode, FunctionLike $funct
7885 return \false;
7986 }
8087 if (!$ paramTagValueNode ->type instanceof BracketsAwareUnionTypeNode) {
81- return \true ;
88+ return $ this -> standaloneTypeRemovalGuard -> isLegal ( $ paramTagValueNode -> type , $ param -> type ) ;
8289 }
8390 return $ this ->isAllowedBracketAwareUnion ($ paramTagValueNode ->type );
8491 }
0 commit comments