From 51e9f2776e9c7e36f4ec063ea68505a62a60b808 Mon Sep 17 00:00:00 2001 From: TomasVotruba Date: Mon, 10 Feb 2020 01:22:10 +0100 Subject: [PATCH 1/2] remove unused method --- .../src/NodeTypeResolver.php | 37 ++----------------- 1 file changed, 4 insertions(+), 33 deletions(-) diff --git a/packages/node-type-resolver/src/NodeTypeResolver.php b/packages/node-type-resolver/src/NodeTypeResolver.php index f47378d5b362..18d54b04f75a 100644 --- a/packages/node-type-resolver/src/NodeTypeResolver.php +++ b/packages/node-type-resolver/src/NodeTypeResolver.php @@ -158,10 +158,6 @@ public function isObjectType(Node $node, $requiredType): bool return true; } - if ($this->isUnionNullTypeOfRequiredType($requiredType, $resolvedType)) { - return true; - } - return $this->isMatchingUnionType($requiredType, $resolvedType); } @@ -231,7 +227,8 @@ public function getStaticType(Node $node): Type public function isNullableObjectType(Node $node): bool { - $nodeType = $this->getStaticType($node); + $nodeType = $this->resolve($node); + if (! $nodeType instanceof UnionType) { return false; } @@ -315,34 +312,6 @@ private function isFnMatch(Node $node, string $requiredType): bool return false; } - /** - * Matches: - * - Type|null - */ - private function isUnionNullTypeOfRequiredType(ObjectType $objectType, Type $resolvedType): bool - { - if (! $resolvedType instanceof UnionType) { - return false; - } - - if (count($resolvedType->getTypes()) !== 2) { - return false; - } - - $firstType = $resolvedType->getTypes()[0]; - $secondType = $resolvedType->getTypes()[1]; - - if ($firstType instanceof NullType && $secondType instanceof ObjectType) { - return $objectType->equals($firstType); - } - - if ($secondType instanceof NullType && $firstType instanceof ObjectType) { - return $objectType->equals($secondType); - } - - return false; - } - private function resolveFirstType(Node $node): Type { foreach ($this->perNodeTypeResolvers as $perNodeTypeResolver) { @@ -490,10 +459,12 @@ private function isMatchingUnionType(Type $requiredType, Type $resolvedType): bo if (! $resolvedType instanceof UnionType) { return false; } + foreach ($resolvedType->getTypes() as $unionedType) { if (! $unionedType->equals($requiredType)) { continue; } + return true; } From 9f359d584707be7b36a36588fbb6de2e039c1d27 Mon Sep 17 00:00:00 2001 From: TomasVotruba Date: Mon, 10 Feb 2020 01:24:01 +0100 Subject: [PATCH 2/2] cleanup --- packages/node-type-resolver/src/NodeTypeResolver.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/node-type-resolver/src/NodeTypeResolver.php b/packages/node-type-resolver/src/NodeTypeResolver.php index 18d54b04f75a..c1e2489f5f5e 100644 --- a/packages/node-type-resolver/src/NodeTypeResolver.php +++ b/packages/node-type-resolver/src/NodeTypeResolver.php @@ -176,7 +176,7 @@ public function resolve(Node $node): Type */ public function isNullableType(Node $node): bool { - $nodeType = $this->getStaticType($node); + $nodeType = $this->resolve($node); if (! $nodeType instanceof UnionType) { return false; } @@ -266,7 +266,7 @@ public function isStaticType(Node $node, string $staticTypeClass): bool )); } - return is_a($this->getStaticType($node), $staticTypeClass); + return is_a($this->resolve($node), $staticTypeClass); } private function addPerNodeTypeResolver(PerNodeTypeResolverInterface $perNodeTypeResolver): void @@ -403,7 +403,7 @@ private function isAnonymousClass(Node $node): bool private function getVendorPropertyFetchType(PropertyFetch $propertyFetch): ?Type { - $varObjectType = $this->getStaticType($propertyFetch->var); + $varObjectType = $this->resolve($propertyFetch->var); if (! $varObjectType instanceof TypeWithClassName) { return null; }