From 5f4324118c455d37678a2c103861c6daffb3d2e4 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Sun, 9 Nov 2025 23:13:39 +0700 Subject: [PATCH] [TypeDeclaration] Register NarrowObjectReturnTypeRector to type declaration set --- src/Config/Level/TypeDeclarationLevel.php | 3 +++ src/DependencyInjection/RectorContainerFactory.php | 14 +++++++------- src/NodeTypeResolver/NodeTypeResolver.php | 2 +- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/Config/Level/TypeDeclarationLevel.php b/src/Config/Level/TypeDeclarationLevel.php index 67384942413..96fab757ee9 100644 --- a/src/Config/Level/TypeDeclarationLevel.php +++ b/src/Config/Level/TypeDeclarationLevel.php @@ -29,6 +29,7 @@ use Rector\TypeDeclaration\Rector\ClassMethod\BoolReturnTypeFromBooleanConstReturnsRector; use Rector\TypeDeclaration\Rector\ClassMethod\BoolReturnTypeFromBooleanStrictReturnsRector; use Rector\TypeDeclaration\Rector\ClassMethod\KnownMagicClassMethodTypeRector; +use Rector\TypeDeclaration\Rector\ClassMethod\NarrowObjectReturnTypeRector; use Rector\TypeDeclaration\Rector\ClassMethod\NumericReturnTypeFromStrictReturnsRector; use Rector\TypeDeclaration\Rector\ClassMethod\NumericReturnTypeFromStrictScalarReturnsRector; use Rector\TypeDeclaration\Rector\ClassMethod\ParamTypeByMethodCallTypeRector; @@ -132,6 +133,8 @@ final class TypeDeclarationLevel AddMethodCallBasedStrictParamTypeRector::class, ParamTypeByParentCallTypeRector::class, + NarrowObjectReturnTypeRector::class, + // multi types (nullable, union) ReturnUnionTypeRector::class, diff --git a/src/DependencyInjection/RectorContainerFactory.php b/src/DependencyInjection/RectorContainerFactory.php index d82d789f739..4c8492724f1 100644 --- a/src/DependencyInjection/RectorContainerFactory.php +++ b/src/DependencyInjection/RectorContainerFactory.php @@ -4,36 +4,36 @@ namespace Rector\DependencyInjection; -use Illuminate\Container\Container; +use Rector\Config\RectorConfig; use Rector\Autoloading\BootstrapFilesIncluder; use Rector\Caching\Detector\ChangedFilesDetector; use Rector\ValueObject\Bootstrap\BootstrapConfigs; final class RectorContainerFactory { - public function createFromBootstrapConfigs(BootstrapConfigs $bootstrapConfigs): Container + public function createFromBootstrapConfigs(BootstrapConfigs $bootstrapConfigs): RectorConfig { - $container = $this->createFromConfigs($bootstrapConfigs->getConfigFiles()); + $rectorConfig = $this->createFromConfigs($bootstrapConfigs->getConfigFiles()); $mainConfigFile = $bootstrapConfigs->getMainConfigFile(); if ($mainConfigFile !== null) { /** @var ChangedFilesDetector $changedFilesDetector */ - $changedFilesDetector = $container->make(ChangedFilesDetector::class); + $changedFilesDetector = $rectorConfig->make(ChangedFilesDetector::class); $changedFilesDetector->setFirstResolvedConfigFileInfo($mainConfigFile); } /** @var BootstrapFilesIncluder $bootstrapFilesIncluder */ - $bootstrapFilesIncluder = $container->get(BootstrapFilesIncluder::class); + $bootstrapFilesIncluder = $rectorConfig->get(BootstrapFilesIncluder::class); $bootstrapFilesIncluder->includeBootstrapFiles(); - return $container; + return $rectorConfig; } /** * @param string[] $configFiles */ - private function createFromConfigs(array $configFiles): Container + private function createFromConfigs(array $configFiles): RectorConfig { $lazyContainerFactory = new LazyContainerFactory(); $rectorConfig = $lazyContainerFactory->create(); diff --git a/src/NodeTypeResolver/NodeTypeResolver.php b/src/NodeTypeResolver/NodeTypeResolver.php index 03872f7ec4e..aef2fd7bf0c 100644 --- a/src/NodeTypeResolver/NodeTypeResolver.php +++ b/src/NodeTypeResolver/NodeTypeResolver.php @@ -424,7 +424,7 @@ private function resolveArrayDimFetchType( return $type; } - private function resolveNativeUnionType(UnionType $unionType): Type + private function resolveNativeUnionType(UnionType $unionType): UnionType { $hasChanged = false; $types = $unionType->getTypes();