1414use function array_key_exists ;
1515use function array_map ;
1616
17- class ResolvedFunctionVariant implements ParametersAcceptor, SingleParametersAcceptor
17+ class ResolvedFunctionVariant implements ParametersAcceptor
1818{
1919
2020 /** @var ParameterReflection[]|null */
@@ -57,7 +57,13 @@ public function getParameters(): array
5757 if ($ parameters === null ) {
5858 $ parameters = array_map (fn (ParameterReflection $ param ): ParameterReflection => new DummyParameter (
5959 $ param ->getName (),
60- TemplateTypeHelper::resolveTemplateTypes ($ param ->getType (), $ this ->resolvedTemplateTypeMap ),
60+ TypeUtils::resolveLateResolvableTypes (
61+ TemplateTypeHelper::resolveTemplateTypes (
62+ $ this ->resolveConditionalTypesForParameter ($ param ->getType ()),
63+ $ this ->resolvedTemplateTypeMap ,
64+ ),
65+ false ,
66+ ),
6167 $ param ->isOptional (),
6268 $ param ->passedByReference (),
6369 $ param ->isVariadic (),
@@ -88,9 +94,12 @@ public function getReturnType(): Type
8894 $ type = $ this ->returnType ;
8995
9096 if ($ type === null ) {
91- $ type = TemplateTypeHelper::resolveTemplateTypes (
92- $ this ->getReturnTypeWithUnresolvableTemplateTypes (),
93- $ this ->resolvedTemplateTypeMap ,
97+ $ type = TypeUtils::resolveLateResolvableTypes (
98+ TemplateTypeHelper::resolveTemplateTypes (
99+ $ this ->getReturnTypeWithUnresolvableTemplateTypes (),
100+ $ this ->resolvedTemplateTypeMap ,
101+ ),
102+ false ,
94103 );
95104
96105 $ this ->returnType = $ type ;
@@ -99,22 +108,6 @@ public function getReturnType(): Type
99108 return $ type ;
100109 }
101110
102- /**
103- * @return static
104- */
105- public function flattenConditionalsInReturnType (): SingleParametersAcceptor
106- {
107- /** @var static $result */
108- $ result = new self (
109- $ this ->parametersAcceptor ,
110- $ this ->resolvedTemplateTypeMap ,
111- $ this ->passedArgs ,
112- );
113- $ result ->returnType = TypeUtils::flattenConditionals ($ this ->getReturnType ());
114-
115- return $ result ;
116- }
117-
118111 private function resolveResolvableTemplateTypes (Type $ type ): Type
119112 {
120113 return TypeTraverser::map ($ type , function (Type $ type , callable $ traverse ): Type {
0 commit comments