From b4dca636bdd0ec5b04667366d8df0f4d05be0cd0 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Sat, 27 Sep 2025 16:27:18 +0700 Subject: [PATCH 1/2] [NodeTypeResolver] Apply logic Mixed inside Union check on TypeFactory::uniquateTypes() --- src/NodeTypeResolver/PHPStan/Type/TypeFactory.php | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/NodeTypeResolver/PHPStan/Type/TypeFactory.php b/src/NodeTypeResolver/PHPStan/Type/TypeFactory.php index 6f12a85490d..cb792fb645f 100644 --- a/src/NodeTypeResolver/PHPStan/Type/TypeFactory.php +++ b/src/NodeTypeResolver/PHPStan/Type/TypeFactory.php @@ -64,8 +64,9 @@ public function uniquateTypes(array $types, bool $keepConstant = false): array $hasFalse = false; $hasTrue = false; foreach ($types as $type) { + // mixed only allowed to be standalone if ($type instanceof MixedType) { - $type = new MixedType(); + return [new MixedType()]; } $type = $this->normalizeObjectType($totalTypes, $type); @@ -168,12 +169,6 @@ private function createUnionOrSingleType(array $types): Type return $types[0]; } - foreach ($types as $type) { - if ($type instanceof MixedType) { - return new MixedType(); - } - } - return new UnionType($types); } From 316df2e168d924a0c98c5f30e468045e684a3c5a Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Sat, 27 Sep 2025 16:32:38 +0700 Subject: [PATCH 2/2] [NodeTypeResolver] Apply logic Mixed inside Union check on TypeFactory::uniquateTypes() --- src/NodeTypeResolver/PHPStan/Type/TypeFactory.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/NodeTypeResolver/PHPStan/Type/TypeFactory.php b/src/NodeTypeResolver/PHPStan/Type/TypeFactory.php index cb792fb645f..4bb63172494 100644 --- a/src/NodeTypeResolver/PHPStan/Type/TypeFactory.php +++ b/src/NodeTypeResolver/PHPStan/Type/TypeFactory.php @@ -66,6 +66,7 @@ public function uniquateTypes(array $types, bool $keepConstant = false): array foreach ($types as $type) { // mixed only allowed to be standalone if ($type instanceof MixedType) { + /** @var array */ return [new MixedType()]; }