From a355aaa147429b6ba07ab1c8ebc418b8b647127e Mon Sep 17 00:00:00 2001 From: Ondrej Mirtes Date: Thu, 24 Mar 2022 18:35:12 +0100 Subject: [PATCH] Fix for Threaded --- src/Type/ObjectType.php | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/Type/ObjectType.php b/src/Type/ObjectType.php index 2761a46d86..49a95678e4 100644 --- a/src/Type/ObjectType.php +++ b/src/Type/ObjectType.php @@ -696,7 +696,8 @@ public function getIterableKeyType(): Type } } - if ($this->isInstanceOf(Traversable::class)->yes() && !$this->isExtraOffsetAccessibleClass()->yes()) { + $extraOffsetAccessible = $this->isExtraOffsetAccessibleClass()->yes(); + if ($this->isInstanceOf(Traversable::class)->yes() && !$extraOffsetAccessible) { $isTraversable = true; $tKey = GenericTypeVariableResolver::getType($this, Traversable::class, 'TKey'); if ($tKey !== null) { @@ -712,6 +713,10 @@ public function getIterableKeyType(): Type )->getReturnType()); } + if ($extraOffsetAccessible) { + return new MixedType(true); + } + if ($isTraversable) { return new MixedType(); } @@ -732,7 +737,8 @@ public function getIterableValueType(): Type } } - if ($this->isInstanceOf(Traversable::class)->yes() && !$this->isExtraOffsetAccessibleClass()->yes()) { + $extraOffsetAccessible = $this->isExtraOffsetAccessibleClass()->yes(); + if ($this->isInstanceOf(Traversable::class)->yes() && !$extraOffsetAccessible) { $isTraversable = true; $tValue = GenericTypeVariableResolver::getType($this, Traversable::class, 'TValue'); if ($tValue !== null) { @@ -748,6 +754,10 @@ public function getIterableValueType(): Type )->getReturnType()); } + if ($extraOffsetAccessible) { + return new MixedType(true); + } + if ($isTraversable) { return new MixedType(); }