Skip to content

Commit 069da3f

Browse files
committed
TypeNodeResolver - more specific array key type for lists
1 parent f680629 commit 069da3f

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

src/PhpDoc/TypeNodeResolver.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -420,10 +420,10 @@ private function resolveIdentifierTypeNode(IdentifierTypeNode $typeNode, NameSco
420420
return new NonAcceptingNeverType();
421421

422422
case 'list':
423-
return TypeCombinator::intersect(new ArrayType(new IntegerType(), new MixedType()), new AccessoryArrayListType());
423+
return TypeCombinator::intersect(new ArrayType(IntegerRangeType::createAllGreaterThanOrEqualTo(0), new MixedType()), new AccessoryArrayListType());
424424
case 'non-empty-list':
425425
return TypeCombinator::intersect(
426-
new ArrayType(new IntegerType(), new MixedType()),
426+
new ArrayType(IntegerRangeType::createAllGreaterThanOrEqualTo(0), new MixedType()),
427427
new NonEmptyArrayType(),
428428
new AccessoryArrayListType(),
429429
);
@@ -666,7 +666,7 @@ static function (string $variance): TemplateTypeVariance {
666666
return $arrayType;
667667
} elseif (in_array($mainTypeName, ['list', 'non-empty-list'], true)) {
668668
if (count($genericTypes) === 1) { // list<ValueType>
669-
$listType = TypeCombinator::intersect(new ArrayType(new IntegerType(), $genericTypes[0]), new AccessoryArrayListType());
669+
$listType = TypeCombinator::intersect(new ArrayType(IntegerRangeType::createAllGreaterThanOrEqualTo(0), $genericTypes[0]), new AccessoryArrayListType());
670670
if ($mainTypeName === 'non-empty-list') {
671671
return TypeCombinator::intersect($listType, new NonEmptyArrayType());
672672
}

0 commit comments

Comments
 (0)