|
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; |
|
172 | 171 | use PHPStan\Type\NullType; |
173 | 172 | use PHPStan\Type\ObjectType; |
174 | 173 | use PHPStan\Type\ObjectWithoutClassType; |
| 174 | +use PHPStan\Type\ParameterClosureTypeHelper; |
175 | 175 | use PHPStan\Type\ResourceType; |
176 | 176 | use PHPStan\Type\StaticType; |
177 | 177 | use PHPStan\Type\StaticTypeFactory; |
@@ -251,7 +251,7 @@ public function __construct( |
251 | 251 | private readonly TypeSpecifier $typeSpecifier, |
252 | 252 | private readonly DynamicThrowTypeExtensionProvider $dynamicThrowTypeExtensionProvider, |
253 | 253 | private readonly ReadWritePropertiesExtensionProvider $readWritePropertiesExtensionProvider, |
254 | | - private readonly ParameterClosureTypeExtensionProvider $parameterClosureTypeExtensionProvider, |
| 254 | + private readonly ParameterClosureTypeHelper $parameterClosureTypeHelper, |
255 | 255 | private readonly ScopeFactory $scopeFactory, |
256 | 256 | private readonly bool $polluteScopeWithLoopInitialAssignments, |
257 | 257 | private readonly bool $polluteScopeWithAlwaysIterableForeach, |
@@ -4677,7 +4677,7 @@ private function processArgs( |
4677 | 4677 | } |
4678 | 4678 |
|
4679 | 4679 | if ($parameter !== null) { |
4680 | | - $overwritingParameterType = $this->getParameterTypeFromParameterClosureTypeExtension($callLike, $calleeReflection, $parameter, $scopeToPass); |
| 4680 | + $overwritingParameterType = $this->parameterClosureTypeHelper->getParameterTypeFromParameterClosureTypeExtension($callLike, $calleeReflection, $parameter, $scopeToPass); |
4681 | 4681 |
|
4682 | 4682 | if ($overwritingParameterType !== null) { |
4683 | 4683 | $parameterType = $overwritingParameterType; |
@@ -4729,7 +4729,7 @@ private function processArgs( |
4729 | 4729 | } |
4730 | 4730 |
|
4731 | 4731 | if ($parameter !== null) { |
4732 | | - $overwritingParameterType = $this->getParameterTypeFromParameterClosureTypeExtension($callLike, $calleeReflection, $parameter, $scopeToPass); |
| 4732 | + $overwritingParameterType = $this->parameterClosureTypeHelper->getParameterTypeFromParameterClosureTypeExtension($callLike, $calleeReflection, $parameter, $scopeToPass); |
4733 | 4733 |
|
4734 | 4734 | if ($overwritingParameterType !== null) { |
4735 | 4735 | $parameterType = $overwritingParameterType; |
@@ -4876,36 +4876,6 @@ static function (Node $node, Scope $scope) use ($nodeCallback): void { |
4876 | 4876 | return new ExpressionResult($scope, $hasYield, $throwPoints, $impurePoints); |
4877 | 4877 | } |
4878 | 4878 |
|
4879 | | - /** |
4880 | | - * @param MethodReflection|FunctionReflection|null $calleeReflection |
4881 | | - */ |
4882 | | - private function getParameterTypeFromParameterClosureTypeExtension(CallLike $callLike, $calleeReflection, ParameterReflection $parameter, MutatingScope $scope): ?Type |
4883 | | - { |
4884 | | - if ($callLike instanceof FuncCall && $calleeReflection instanceof FunctionReflection) { |
4885 | | - foreach ($this->parameterClosureTypeExtensionProvider->getFunctionParameterClosureTypeExtensions() as $functionParameterClosureTypeExtension) { |
4886 | | - if ($functionParameterClosureTypeExtension->isFunctionSupported($calleeReflection, $parameter)) { |
4887 | | - return $functionParameterClosureTypeExtension->getTypeFromFunctionCall($calleeReflection, $callLike, $parameter, $scope); |
4888 | | - } |
4889 | | - } |
4890 | | - } elseif ($calleeReflection instanceof MethodReflection) { |
4891 | | - if ($callLike instanceof StaticCall) { |
4892 | | - foreach ($this->parameterClosureTypeExtensionProvider->getStaticMethodParameterClosureTypeExtensions() as $staticMethodParameterClosureTypeExtension) { |
4893 | | - if ($staticMethodParameterClosureTypeExtension->isStaticMethodSupported($calleeReflection, $parameter)) { |
4894 | | - return $staticMethodParameterClosureTypeExtension->getTypeFromStaticMethodCall($calleeReflection, $callLike, $parameter, $scope); |
4895 | | - } |
4896 | | - } |
4897 | | - } elseif ($callLike instanceof MethodCall) { |
4898 | | - foreach ($this->parameterClosureTypeExtensionProvider->getMethodParameterClosureTypeExtensions() as $methodParameterClosureTypeExtension) { |
4899 | | - if ($methodParameterClosureTypeExtension->isMethodSupported($calleeReflection, $parameter)) { |
4900 | | - return $methodParameterClosureTypeExtension->getTypeFromMethodCall($calleeReflection, $callLike, $parameter, $scope); |
4901 | | - } |
4902 | | - } |
4903 | | - } |
4904 | | - } |
4905 | | - |
4906 | | - return null; |
4907 | | - } |
4908 | | - |
4909 | 4879 | /** |
4910 | 4880 | * @param MethodReflection|FunctionReflection|null $calleeReflection |
4911 | 4881 | */ |
|
0 commit comments