|
63 | 63 | use PHPStan\BetterReflection\SourceLocator\Located\LocatedSource; |
64 | 64 | use PHPStan\DependencyInjection\Reflection\ClassReflectionExtensionRegistryProvider; |
65 | 65 | use PHPStan\DependencyInjection\Type\DynamicThrowTypeExtensionProvider; |
66 | | -use PHPStan\DependencyInjection\Type\ParameterClosureTypeExtensionProvider; |
67 | 66 | use PHPStan\DependencyInjection\Type\ParameterOutTypeExtensionProvider; |
68 | 67 | use PHPStan\File\FileHelper; |
69 | 68 | use PHPStan\File\FileReader; |
|
171 | 170 | use PHPStan\Type\NullType; |
172 | 171 | use PHPStan\Type\ObjectType; |
173 | 172 | use PHPStan\Type\ObjectWithoutClassType; |
| 173 | +use PHPStan\Type\ParameterClosureTypeHelper; |
174 | 174 | use PHPStan\Type\ResourceType; |
175 | 175 | use PHPStan\Type\StaticType; |
176 | 176 | use PHPStan\Type\StaticTypeFactory; |
@@ -250,7 +250,7 @@ public function __construct( |
250 | 250 | private readonly TypeSpecifier $typeSpecifier, |
251 | 251 | private readonly DynamicThrowTypeExtensionProvider $dynamicThrowTypeExtensionProvider, |
252 | 252 | private readonly ReadWritePropertiesExtensionProvider $readWritePropertiesExtensionProvider, |
253 | | - private readonly ParameterClosureTypeExtensionProvider $parameterClosureTypeExtensionProvider, |
| 253 | + private readonly ParameterClosureTypeHelper $parameterClosureTypeHelper, |
254 | 254 | private readonly ScopeFactory $scopeFactory, |
255 | 255 | private readonly bool $polluteScopeWithLoopInitialAssignments, |
256 | 256 | private readonly bool $polluteScopeWithAlwaysIterableForeach, |
@@ -4621,7 +4621,7 @@ private function processArgs( |
4621 | 4621 | } |
4622 | 4622 |
|
4623 | 4623 | if ($parameter !== null) { |
4624 | | - $overwritingParameterType = $this->getParameterTypeFromParameterClosureTypeExtension($callLike, $calleeReflection, $parameter, $scopeToPass); |
| 4624 | + $overwritingParameterType = $this->parameterClosureTypeHelper->getParameterTypeFromParameterClosureTypeExtension($callLike, $calleeReflection, $parameter, $scopeToPass); |
4625 | 4625 |
|
4626 | 4626 | if ($overwritingParameterType !== null) { |
4627 | 4627 | $parameterType = $overwritingParameterType; |
@@ -4673,7 +4673,7 @@ private function processArgs( |
4673 | 4673 | } |
4674 | 4674 |
|
4675 | 4675 | if ($parameter !== null) { |
4676 | | - $overwritingParameterType = $this->getParameterTypeFromParameterClosureTypeExtension($callLike, $calleeReflection, $parameter, $scopeToPass); |
| 4676 | + $overwritingParameterType = $this->parameterClosureTypeHelper->getParameterTypeFromParameterClosureTypeExtension($callLike, $calleeReflection, $parameter, $scopeToPass); |
4677 | 4677 |
|
4678 | 4678 | if ($overwritingParameterType !== null) { |
4679 | 4679 | $parameterType = $overwritingParameterType; |
@@ -4820,36 +4820,6 @@ static function (Node $node, Scope $scope) use ($nodeCallback): void { |
4820 | 4820 | return new ExpressionResult($scope, $hasYield, $throwPoints, $impurePoints); |
4821 | 4821 | } |
4822 | 4822 |
|
4823 | | - /** |
4824 | | - * @param MethodReflection|FunctionReflection|null $calleeReflection |
4825 | | - */ |
4826 | | - private function getParameterTypeFromParameterClosureTypeExtension(CallLike $callLike, $calleeReflection, ParameterReflection $parameter, MutatingScope $scope): ?Type |
4827 | | - { |
4828 | | - if ($callLike instanceof FuncCall && $calleeReflection instanceof FunctionReflection) { |
4829 | | - foreach ($this->parameterClosureTypeExtensionProvider->getFunctionParameterClosureTypeExtensions() as $functionParameterClosureTypeExtension) { |
4830 | | - if ($functionParameterClosureTypeExtension->isFunctionSupported($calleeReflection, $parameter)) { |
4831 | | - return $functionParameterClosureTypeExtension->getTypeFromFunctionCall($calleeReflection, $callLike, $parameter, $scope); |
4832 | | - } |
4833 | | - } |
4834 | | - } elseif ($calleeReflection instanceof MethodReflection) { |
4835 | | - if ($callLike instanceof StaticCall) { |
4836 | | - foreach ($this->parameterClosureTypeExtensionProvider->getStaticMethodParameterClosureTypeExtensions() as $staticMethodParameterClosureTypeExtension) { |
4837 | | - if ($staticMethodParameterClosureTypeExtension->isStaticMethodSupported($calleeReflection, $parameter)) { |
4838 | | - return $staticMethodParameterClosureTypeExtension->getTypeFromStaticMethodCall($calleeReflection, $callLike, $parameter, $scope); |
4839 | | - } |
4840 | | - } |
4841 | | - } elseif ($callLike instanceof MethodCall) { |
4842 | | - foreach ($this->parameterClosureTypeExtensionProvider->getMethodParameterClosureTypeExtensions() as $methodParameterClosureTypeExtension) { |
4843 | | - if ($methodParameterClosureTypeExtension->isMethodSupported($calleeReflection, $parameter)) { |
4844 | | - return $methodParameterClosureTypeExtension->getTypeFromMethodCall($calleeReflection, $callLike, $parameter, $scope); |
4845 | | - } |
4846 | | - } |
4847 | | - } |
4848 | | - } |
4849 | | - |
4850 | | - return null; |
4851 | | - } |
4852 | | - |
4853 | 4823 | /** |
4854 | 4824 | * @param MethodReflection|FunctionReflection|null $calleeReflection |
4855 | 4825 | */ |
|
0 commit comments