Skip to content

Commit 552bc66

Browse files
authored
[TypeDeclarationDocblocks] Skip empty list iterable value type on ClassMethodArrayDocblockParamFromLocalCallsRector (#7324)
* [TypeDeclarationDocblocks] Skip empty list iterable value type on ClassMethodArrayDocblockParamFromLocalCallsRector * Fix
1 parent 86b724e commit 552bc66

File tree

2 files changed

+33
-0
lines changed

2 files changed

+33
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?php
2+
3+
namespace Rector\Tests\TypeDeclarationDocblocks\Rector\Class_\ClassMethodArrayDocblockParamFromLocalCallsRector\Fixture;
4+
5+
final class SkipEmptyIterableValueType
6+
{
7+
public function run()
8+
{
9+
/** @var list $value */
10+
$value = [];
11+
12+
$this->someCall($value);
13+
}
14+
15+
private function someCall(array $value)
16+
{
17+
}
18+
}

rules/TypeDeclarationDocblocks/NodeDocblockTypeDecorator.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,11 @@ public function decorateGenericIterableParamType(
4545
$normalizedType = $this->typeNormalizer->generalizeConstantTypes($type);
4646
$typeNode = $this->createTypeNode($normalizedType);
4747

48+
// no value iterable type
49+
if ($typeNode instanceof IdentifierTypeNode) {
50+
return false;
51+
}
52+
4853
$paramTagValueNode = new ParamTagValueNode($typeNode, false, '$' . $parameterName, '', false);
4954

5055
$this->addTagValueNodeAndUpdatePhpDocInfo($phpDocInfo, $paramTagValueNode, $classMethod);
@@ -64,6 +69,11 @@ public function decorateGenericIterableReturnType(
6469
return false;
6570
}
6671

72+
// no value iterable type
73+
if ($typeNode instanceof IdentifierTypeNode) {
74+
return false;
75+
}
76+
6777
$returnTagValueNode = new ReturnTagValueNode($typeNode, '');
6878

6979
$this->addTagValueNodeAndUpdatePhpDocInfo($classMethodPhpDocInfo, $returnTagValueNode, $classMethod);
@@ -80,6 +90,11 @@ public function decorateGenericIterableVarType(Type $type, PhpDocInfo $phpDocInf
8090
return false;
8191
}
8292

93+
// no value iterable type
94+
if ($typeNode instanceof IdentifierTypeNode) {
95+
return false;
96+
}
97+
8398
$varTagValueNode = new VarTagValueNode($typeNode, '', '');
8499

85100
$this->addTagValueNodeAndUpdatePhpDocInfo($phpDocInfo, $varTagValueNode, $property);

0 commit comments

Comments
 (0)