|
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