Skip to content

Commit 4df6565

Browse files
Improve
1 parent c4ede85 commit 4df6565

File tree

2 files changed

+14
-10
lines changed

2 files changed

+14
-10
lines changed

src/Type/ObjectType.php

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1554,17 +1554,20 @@ private function getInterfaces(): array
15541554

15551555
public function tryRemove(Type $typeToRemove): ?Type
15561556
{
1557-
foreach (UnionType::EQUAL_UNION_CLASSES as $baseClass => $classes) {
1558-
if ($this->getClassName() !== $baseClass || !($typeToRemove instanceof ObjectType)) {
1559-
continue;
1560-
}
1557+
if ($typeToRemove instanceof ObjectType) {
1558+
foreach (UnionType::EQUAL_UNION_CLASSES as $baseClass => $classes) {
1559+
if ($this->getClassName() !== $baseClass) {
1560+
continue;
1561+
}
15611562

1562-
foreach ($classes as $index => $class) {
1563-
if ($typeToRemove->getClassName() === $class) {
1564-
unset($classes[$index]);
1565-
return TypeCombinator::union(
1566-
...array_map(static fn (string $objectClass): Type => new ObjectType($objectClass), $classes),
1567-
);
1563+
foreach ($classes as $index => $class) {
1564+
if ($typeToRemove->getClassName() === $class) {
1565+
unset($classes[$index]);
1566+
1567+
return TypeCombinator::union(
1568+
...array_map(static fn(string $objectClass): Type => new ObjectType($objectClass), $classes),
1569+
);
1570+
}
15681571
}
15691572
}
15701573
}

src/Type/UnionType.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,7 @@ public function accepts(Type $type, bool $strictTypes): AcceptsResult
205205
if ($this->accepts($union, $strictTypes)->yes()) {
206206
return AcceptsResult::createYes();
207207
}
208+
break;
208209
}
209210

210211
$result = AcceptsResult::createNo();

0 commit comments

Comments
 (0)