|
87 | 87 | use PHPStan\Type\Generic\TemplateType; |
88 | 88 | use PHPStan\Type\Generic\TemplateTypeHelper; |
89 | 89 | use PHPStan\Type\Generic\TemplateTypeMap; |
90 | | -use PHPStan\Type\GenericTypeVariableResolver; |
91 | 90 | use PHPStan\Type\IntegerRangeType; |
92 | 91 | use PHPStan\Type\IntegerType; |
93 | 92 | use PHPStan\Type\IntersectionType; |
@@ -1426,25 +1425,16 @@ private function resolveType(string $exprString, Expr $node): Type |
1426 | 1425 | } |
1427 | 1426 |
|
1428 | 1427 | $returnType = ParametersAcceptorSelector::selectSingle($functionReflection->getVariants())->getReturnType(); |
1429 | | - if (!$returnType instanceof TypeWithClassName) { |
1430 | | - return new MixedType(); |
1431 | | - } |
1432 | | - |
1433 | | - $generatorSendType = GenericTypeVariableResolver::getType($returnType, Generator::class, 'TSend'); |
1434 | | - if ($generatorSendType === null) { |
| 1428 | + $generatorSendType = $returnType->getTemplateType(Generator::class, 'TSend'); |
| 1429 | + if ($generatorSendType instanceof ErrorType) { |
1435 | 1430 | return new MixedType(); |
1436 | 1431 | } |
1437 | 1432 |
|
1438 | 1433 | return $generatorSendType; |
1439 | 1434 | } elseif ($node instanceof Expr\YieldFrom) { |
1440 | 1435 | $yieldFromType = $this->getType($node->expr); |
1441 | | - |
1442 | | - if (!$yieldFromType instanceof TypeWithClassName) { |
1443 | | - return new MixedType(); |
1444 | | - } |
1445 | | - |
1446 | | - $generatorReturnType = GenericTypeVariableResolver::getType($yieldFromType, Generator::class, 'TReturn'); |
1447 | | - if ($generatorReturnType === null) { |
| 1436 | + $generatorReturnType = $yieldFromType->getTemplateType(Generator::class, 'TReturn'); |
| 1437 | + if ($generatorReturnType instanceof ErrorType) { |
1448 | 1438 | return new MixedType(); |
1449 | 1439 | } |
1450 | 1440 |
|
|
0 commit comments