Skip to content

Commit 1bdae03

Browse files
authored
[TypeDeclarationDocblocks] Skip mixed|mixed[] on ClassMethodArrayDocblockParamFromLocalCallsRector (#7338)
* [TypeDeclarationDocblocks] Skip mixed|mixed[] on ClassMethodArrayDocblockParamFromLocalCallsRector * Fix * Fix * Fix * Fix * Fix * Fix
1 parent 903d7a6 commit 1bdae03

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?php
2+
3+
namespace Rector\Tests\TypeDeclarationDocblocks\Rector\Class_\ClassMethodArrayDocblockParamFromLocalCallsRector\Fixture;
4+
5+
class SkipUnionMixedArray
6+
{
7+
public function run()
8+
{
9+
$this->exec($_SERVER['argv'] ?? []);
10+
}
11+
12+
private function exec(array $argv)
13+
{
14+
}
15+
}

rules/TypeDeclaration/NodeAnalyzer/CallTypesResolver.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,15 @@ private function unionToSingleType(array $staticTypesByArgumentPosition, bool $r
135135
if ($staticTypeByArgumentPosition[$position]->isNull()->yes()) {
136136
$staticTypeByArgumentPosition[$position] = new MixedType();
137137
}
138+
139+
if ($staticTypeByArgumentPosition[$position] instanceof UnionType) {
140+
foreach ($staticTypeByArgumentPosition[$position]->getTypes() as $subType) {
141+
if ($subType instanceof MixedType) {
142+
$staticTypeByArgumentPosition[$position] = new MixedType();
143+
continue 2;
144+
}
145+
}
146+
}
138147
}
139148

140149
return $staticTypeByArgumentPosition;

0 commit comments

Comments
 (0)