14
14
use function array_key_exists ;
15
15
use function array_map ;
16
16
17
- class ResolvedFunctionVariant implements ParametersAcceptor, SingleParametersAcceptor
17
+ class ResolvedFunctionVariant implements ParametersAcceptor
18
18
{
19
19
20
20
/** @var ParameterReflection[]|null */
@@ -57,7 +57,13 @@ public function getParameters(): array
57
57
if ($ parameters === null ) {
58
58
$ parameters = array_map (fn (ParameterReflection $ param ): ParameterReflection => new DummyParameter (
59
59
$ 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
+ ),
61
67
$ param ->isOptional (),
62
68
$ param ->passedByReference (),
63
69
$ param ->isVariadic (),
@@ -88,9 +94,12 @@ public function getReturnType(): Type
88
94
$ type = $ this ->returnType ;
89
95
90
96
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 ,
94
103
);
95
104
96
105
$ this ->returnType = $ type ;
@@ -99,22 +108,6 @@ public function getReturnType(): Type
99
108
return $ type ;
100
109
}
101
110
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
-
118
111
private function resolveResolvableTemplateTypes (Type $ type ): Type
119
112
{
120
113
return TypeTraverser::map ($ type , function (Type $ type , callable $ traverse ): Type {
0 commit comments