From d5e203a6e9fd986c04e2a489083b9766d4381a4d Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Tue, 23 Apr 2024 12:10:57 +0000 Subject: [PATCH] Updated Rector to commit d5069f0fccf649646eeea05b5291c0ac34e511d6 https://github.com/rectorphp/rector-src/commit/d5069f0fccf649646eeea05b5291c0ac34e511d6 [Php83] Handle default native constant on AddTypeToConstRector (#5843) --- .../ClassConst/AddTypeToConstRector.php | 25 ++++++++++++++----- src/Application/VersionResolver.php | 4 +-- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/rules/Php83/Rector/ClassConst/AddTypeToConstRector.php b/rules/Php83/Rector/ClassConst/AddTypeToConstRector.php index aef6b7cd22a..1546eea81fe 100644 --- a/rules/Php83/Rector/ClassConst/AddTypeToConstRector.php +++ b/rules/Php83/Rector/ClassConst/AddTypeToConstRector.php @@ -19,7 +19,9 @@ use PhpParser\Node\Stmt\Class_; use PhpParser\Node\Stmt\ClassConst; use PHPStan\Reflection\ClassReflection; use PHPStan\Reflection\ReflectionProvider; +use Rector\PHPStanStaticTypeMapper\Enum\TypeKind; use Rector\Rector\AbstractRector; +use Rector\StaticTypeMapper\StaticTypeMapper; use Rector\ValueObject\PhpVersionFeature; use Rector\VersionBonding\Contract\MinPhpVersionInterface; use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample; @@ -34,9 +36,15 @@ final class AddTypeToConstRector extends AbstractRector implements MinPhpVersion * @var \PHPStan\Reflection\ReflectionProvider */ private $reflectionProvider; - public function __construct(ReflectionProvider $reflectionProvider) + /** + * @readonly + * @var \Rector\StaticTypeMapper\StaticTypeMapper + */ + private $staticTypeMapper; + public function __construct(ReflectionProvider $reflectionProvider, StaticTypeMapper $staticTypeMapper) { $this->reflectionProvider = $reflectionProvider; + $this->staticTypeMapper = $staticTypeMapper; } public function getRuleDefinition() : RuleDefinition { @@ -133,11 +141,16 @@ CODE_SAMPLE if ($expr instanceof DNumber) { return new Identifier('float'); } - if ($expr instanceof ConstFetch && $expr->name->toLowerString() !== 'null') { - return new Identifier('bool'); - } - if ($expr instanceof ConstFetch && $expr->name->toLowerString() === 'null') { - return new Identifier('null'); + if ($expr instanceof ConstFetch) { + if ($expr->name->toLowerString() === 'null') { + return new Identifier('null'); + } + $type = $this->nodeTypeResolver->getNativeType($expr); + $nodeType = $this->staticTypeMapper->mapPHPStanTypeToPhpParserNode($type, TypeKind::PROPERTY); + if (!$nodeType instanceof Identifier) { + return null; + } + return $nodeType; } if ($expr instanceof Array_) { return new Identifier('array'); diff --git a/src/Application/VersionResolver.php b/src/Application/VersionResolver.php index 1a4c2502a11..84a9e68c7e7 100644 --- a/src/Application/VersionResolver.php +++ b/src/Application/VersionResolver.php @@ -19,12 +19,12 @@ final class VersionResolver * @api * @var string */ - public const PACKAGE_VERSION = '775916c6416e68507e846421f04e2cabbfa2d737'; + public const PACKAGE_VERSION = 'd5069f0fccf649646eeea05b5291c0ac34e511d6'; /** * @api * @var string */ - public const RELEASE_DATE = '2024-04-23 11:03:42'; + public const RELEASE_DATE = '2024-04-23 19:08:22'; /** * @var int */