Skip to content

Commit 146bdbe

Browse files
committed
Treat array-shapes without keys as tuples
1 parent 54ca85b commit 146bdbe

File tree

2 files changed

+12
-0
lines changed

2 files changed

+12
-0
lines changed

src/PhpDoc/TypeNodeResolver.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1043,6 +1043,13 @@ function (CallableTypeParameterNode $parameterNode) use ($nameScope, &$isVariadi
10431043
private function resolveArrayShapeNode(ArrayShapeNode $typeNode, NameScope $nameScope): Type
10441044
{
10451045
$builder = ConstantArrayTypeBuilder::createEmpty();
1046+
foreach ($typeNode->items as $itemNode) {
1047+
if ($itemNode->keyName !== null) {
1048+
$builder = ConstantArrayTypeBuilder::createEmptyIndeterminate();
1049+
break;
1050+
}
1051+
}
1052+
10461053
if (count($typeNode->items) > ConstantArrayTypeBuilder::ARRAY_COUNT_LIMIT) {
10471054
$builder->degradeToGeneralArray(true);
10481055
}

src/Type/Constant/ConstantArrayTypeBuilder.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,11 @@ public static function createEmpty(): self
5555
return new self([], [], [0], [], TrinaryLogic::createYes());
5656
}
5757

58+
public static function createEmptyIndeterminate(): self
59+
{
60+
return new self([], [], [0], [], TrinaryLogic::createMaybe());
61+
}
62+
5863
public static function createFromConstantArray(ConstantArrayType $startArrayType): self
5964
{
6065
$builder = new self(

0 commit comments

Comments
 (0)