|
86 | 86 | use PHPStan\Type\IterableType; |
87 | 87 | use PHPStan\Type\KeyOfType; |
88 | 88 | use PHPStan\Type\MixedType; |
89 | | -use PHPStan\Type\NeverType; |
90 | 89 | use PHPStan\Type\NewObjectType; |
91 | 90 | use PHPStan\Type\NonAcceptingNeverType; |
92 | 91 | use PHPStan\Type\NonexistentParentClassType; |
@@ -936,23 +935,17 @@ static function (string $variance): TemplateTypeVariance { |
936 | 935 |
|
937 | 936 | try { |
938 | 937 | if (count($genericTypes) === 1) { // Foo<ValueType> |
939 | | - $iterableType = new IterableType(new MixedType(true), $genericTypes[0]); |
940 | | - $result = TypeCombinator::intersect($mainType, $iterableType); |
941 | | - if (!$result instanceof NeverType) { |
942 | | - return $result; |
943 | | - } |
944 | | - |
945 | | - return new IntersectionType([$mainType, $iterableType]); |
| 938 | + return TypeCombinator::intersect( |
| 939 | + $mainType, |
| 940 | + new IterableType(new MixedType(true), $genericTypes[0]), |
| 941 | + ); |
946 | 942 | } |
947 | 943 |
|
948 | 944 | if (count($genericTypes) === 2) { // Foo<KeyType, ValueType> |
949 | | - $iterableType = new IterableType($genericTypes[0], $genericTypes[1]); |
950 | | - $result = TypeCombinator::intersect($mainType, $iterableType); |
951 | | - if (!$result instanceof NeverType) { |
952 | | - return $result; |
953 | | - } |
954 | | - |
955 | | - return new IntersectionType([$mainType, $iterableType]); |
| 945 | + return TypeCombinator::intersect( |
| 946 | + $mainType, |
| 947 | + new IterableType($genericTypes[0], $genericTypes[1]), |
| 948 | + ); |
956 | 949 | } |
957 | 950 | } finally { |
958 | 951 | if ($mainTypeClassName !== null) { |
|
0 commit comments