From 6c0c49b49fb3f758637e64bab0a2450cfc5cff8d Mon Sep 17 00:00:00 2001 From: Markus Staab Date: Fri, 2 Jan 2026 09:25:34 +0100 Subject: [PATCH] TypeNodeResolver: Reduce number of intersect() calls --- src/PhpDoc/TypeNodeResolver.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/PhpDoc/TypeNodeResolver.php b/src/PhpDoc/TypeNodeResolver.php index 194ad2808b..9bd6fed47d 100644 --- a/src/PhpDoc/TypeNodeResolver.php +++ b/src/PhpDoc/TypeNodeResolver.php @@ -1056,18 +1056,24 @@ private function resolveArrayShapeNode(ArrayShapeNode $typeNode, NameScope $name } $arrayType = $builder->getArray(); + + $accessories = []; if (in_array($typeNode->kind, [ ArrayShapeNode::KIND_LIST, ArrayShapeNode::KIND_NON_EMPTY_LIST, ], true)) { - $arrayType = TypeCombinator::intersect($arrayType, new AccessoryArrayListType()); + $accessories[] = new AccessoryArrayListType(); } if (in_array($typeNode->kind, [ ArrayShapeNode::KIND_NON_EMPTY_ARRAY, ArrayShapeNode::KIND_NON_EMPTY_LIST, ], true)) { - $arrayType = TypeCombinator::intersect($arrayType, new NonEmptyArrayType()); + $accessories[] = new NonEmptyArrayType(); + } + + if (count($accessories) > 0) { + return TypeCombinator::intersect($arrayType, ...$accessories); } return $arrayType;