From b11261ff690dbac958bc663d6587dd75ff388229 Mon Sep 17 00:00:00 2001 From: TomasVotruba Date: Tue, 28 Jan 2020 10:08:08 +0100 Subject: [PATCH] cleanup --- .../NodeTypeResolver/src/NodeTypeResolver.php | 37 +++++++++++-------- .../ScalarTypeResolver.php | 2 +- 2 files changed, 22 insertions(+), 17 deletions(-) diff --git a/packages/NodeTypeResolver/src/NodeTypeResolver.php b/packages/NodeTypeResolver/src/NodeTypeResolver.php index 1e0c4e54656..dd06565d241 100644 --- a/packages/NodeTypeResolver/src/NodeTypeResolver.php +++ b/packages/NodeTypeResolver/src/NodeTypeResolver.php @@ -200,7 +200,7 @@ final class NodeTypeResolver if ($nodeType instanceof UnionType) { foreach ($nodeType->getTypes() as $singleType) { - if (! $singleType instanceof StringType) { + if ($singleType->isSuperTypeOf(new StringType())->no()) { return false; } } @@ -227,19 +227,10 @@ final class NodeTypeResolver public function isCountableType(Node $node): bool { $nodeType = $this->getStaticType($node); - $nodeType = $this->pregMatchTypeCorrector->correct($node, $nodeType); - if ($nodeType instanceof ObjectType) { - if (is_a($nodeType->getClassName(), Countable::class, true)) { - return true; - } - // @see https://github.com/rectorphp/rector/issues/2028 - if (is_a($nodeType->getClassName(), 'SimpleXMLElement', true)) { - return true; - } - - return is_a($nodeType->getClassName(), 'ResourceBundle', true); + if ($this->isCountableObjectType($nodeType)) { + return true; } return $this->isArrayType($node); @@ -334,10 +325,6 @@ final class NodeTypeResolver return new ArrayType(new MixedType(), new MixedType()); } - if ($this->isStringOrUnionStringOnlyType($expr)) { - return new StringType(); - } - return $this->getStaticType($expr); } @@ -648,4 +635,22 @@ final class NodeTypeResolver return $this->staticTypeMapper->mapPHPStanPhpDocTypeNodeToPHPStanType($typeNode, new Nop()); } + + private function isCountableObjectType(Type $type): bool + { + if (! $type instanceof ObjectType) { + return false; + } + + if (is_a($type->getClassName(), Countable::class, true)) { + return true; + } + + // @see https://github.com/rectorphp/rector/issues/2028 + if (is_a($type->getClassName(), 'SimpleXMLElement', true)) { + return true; + } + + return is_a($type->getClassName(), 'ResourceBundle', true); + } } diff --git a/packages/NodeTypeResolver/src/PerNodeTypeResolver/ScalarTypeResolver.php b/packages/NodeTypeResolver/src/PerNodeTypeResolver/ScalarTypeResolver.php index 72b6266a9dd..16fb5d05771 100644 --- a/packages/NodeTypeResolver/src/PerNodeTypeResolver/ScalarTypeResolver.php +++ b/packages/NodeTypeResolver/src/PerNodeTypeResolver/ScalarTypeResolver.php @@ -4,8 +4,8 @@ declare(strict_types=1); namespace Rector\NodeTypeResolver\PerNodeTypeResolver; -use PhpParser\Node\Scalar; use PhpParser\Node; +use PhpParser\Node\Scalar; use PhpParser\Node\Scalar\DNumber; use PhpParser\Node\Scalar\LNumber; use PhpParser\Node\Scalar\MagicConst;