Skip to content

Commit 057c471

Browse files
Improve
1 parent 9f29868 commit 057c471

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
@@ -1582,17 +1582,20 @@ private function getInterfaces(): array
15821582

15831583
public function tryRemove(Type $typeToRemove): ?Type
15841584
{
1585-
foreach (UnionType::EQUAL_UNION_CLASSES as $baseClass => $classes) {
1586-
if ($this->getClassName() !== $baseClass || !($typeToRemove instanceof ObjectType)) {
1587-
continue;
1588-
}
1585+
if ($typeToRemove instanceof ObjectType) {
1586+
foreach (UnionType::EQUAL_UNION_CLASSES as $baseClass => $classes) {
1587+
if ($this->getClassName() !== $baseClass) {
1588+
continue;
1589+
}
15891590

1590-
foreach ($classes as $index => $class) {
1591-
if ($typeToRemove->getClassName() === $class) {
1592-
unset($classes[$index]);
1593-
return TypeCombinator::union(
1594-
...array_map(static fn (string $objectClass): Type => new ObjectType($objectClass), $classes),
1595-
);
1591+
foreach ($classes as $index => $class) {
1592+
if ($typeToRemove->getClassName() === $class) {
1593+
unset($classes[$index]);
1594+
1595+
return TypeCombinator::union(
1596+
...array_map(static fn(string $objectClass): Type => new ObjectType($objectClass), $classes),
1597+
);
1598+
}
15961599
}
15971600
}
15981601
}

src/Type/UnionType.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,7 @@ public function acceptsWithReason(Type $type, bool $strictTypes): AcceptsResult
213213
if ($this->accepts($union, $strictTypes)->yes()) {
214214
return AcceptsResult::createYes();
215215
}
216+
break;
216217
}
217218

218219
$result = AcceptsResult::createNo();

0 commit comments

Comments
 (0)