Skip to content

Commit b789271

Browse files
authored
Fixed iterable methods (all* + allNullOr*) types (return and $value parameter). (#338)
1 parent bdbabc1 commit b789271

File tree

2 files changed

+166
-164
lines changed

2 files changed

+166
-164
lines changed

bin/src/MixinGenerator.php

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,7 @@ private function assertion(ReflectionMethod $method, string $methodNameTemplate,
216216
/** @var array<string, string> $parameterTypes */
217217
$parameterTypes = [];
218218
$parametersReflection = $method->getParameters();
219+
$nativeReturnType = 'mixed';
219220

220221
foreach ($parametersReflection as $parameterReflection) {
221222
$parameters[] = $parameterReflection->name;
@@ -228,11 +229,13 @@ private function assertion(ReflectionMethod $method, string $methodNameTemplate,
228229
}
229230

230231
if ($parameterReflection->hasType()) {
231-
if ($parameterReflection->name === 'value' && $typeTemplate) {
232-
$parameterTypes[$parameterReflection->name] = match ($typeTemplate) {
232+
if ($parameterReflection->name === 'value') {
233+
$parameterTypes[$parameterReflection->name] = 'mixed';
234+
235+
$nativeReturnType = match ($typeTemplate) {
233236
'%s|null' => $this->reduceParameterType($parameterReflection->getType()),
234237
'iterable<%s>' => 'iterable',
235-
'iterable<%s|null>' => '?iterable',
238+
'iterable<%s|null>' => 'iterable',
236239
};
237240
} else {
238241
$parameterTypes[$parameterReflection->name] = $this->reduceParameterType($parameterReflection->getType());
@@ -246,7 +249,6 @@ private function assertion(ReflectionMethod $method, string $methodNameTemplate,
246249

247250
$paramsAdded = false;
248251

249-
$nativeReturnType = $parameterTypes ? $parameterTypes[\array_key_first($parameterTypes)] : 'mixed';
250252
$phpdocReturnType = 'mixed';
251253

252254
$phpdocLines = [];

0 commit comments

Comments
 (0)