mirror of
https://github.com/rectorphp/rector.git
synced 2025-03-22 16:29:52 +01:00
Updated Rector to commit 734233107cae347d5987f3f2e9d1c5c69a4db3fa
734233107c
[PHPStanStaticTypeMapper] Remove #[Required] on IntersectionTypeMapper (#4705)
This commit is contained in:
parent
f4aa905f07
commit
6b04a1549b
@ -4,12 +4,10 @@ declare (strict_types=1);
|
||||
namespace Rector\PHPStanStaticTypeMapper\TypeMapper;
|
||||
|
||||
use PhpParser\Node;
|
||||
use PhpParser\Node\Identifier;
|
||||
use PhpParser\Node\Name;
|
||||
use PhpParser\Node\Name\FullyQualified;
|
||||
use PHPStan\PhpDocParser\Ast\Node as AstNode;
|
||||
use PHPStan\PhpDocParser\Ast\Type\IdentifierTypeNode;
|
||||
use PHPStan\PhpDocParser\Ast\Type\TypeNode;
|
||||
use PHPStan\Reflection\ReflectionProvider;
|
||||
use PHPStan\Type\IntersectionType;
|
||||
use PHPStan\Type\ObjectType;
|
||||
use PHPStan\Type\ObjectWithoutClassType;
|
||||
@ -18,8 +16,6 @@ use Rector\Core\Php\PhpVersionProvider;
|
||||
use Rector\Core\ValueObject\PhpVersionFeature;
|
||||
use Rector\PhpDocParser\PhpDocParser\PhpDocNodeTraverser;
|
||||
use Rector\PHPStanStaticTypeMapper\Contract\TypeMapperInterface;
|
||||
use Rector\PHPStanStaticTypeMapper\PHPStanStaticTypeMapper;
|
||||
use RectorPrefix202308\Symfony\Contracts\Service\Attribute\Required;
|
||||
/**
|
||||
* @implements TypeMapperInterface<IntersectionType>
|
||||
*/
|
||||
@ -32,24 +28,19 @@ final class IntersectionTypeMapper implements TypeMapperInterface
|
||||
private $phpVersionProvider;
|
||||
/**
|
||||
* @readonly
|
||||
* @var \PHPStan\Reflection\ReflectionProvider
|
||||
* @var \Rector\PHPStanStaticTypeMapper\TypeMapper\ObjectWithoutClassTypeMapper
|
||||
*/
|
||||
private $reflectionProvider;
|
||||
private $objectWithoutClassTypeMapper;
|
||||
/**
|
||||
* @var \Rector\PHPStanStaticTypeMapper\PHPStanStaticTypeMapper
|
||||
* @readonly
|
||||
* @var \Rector\PHPStanStaticTypeMapper\TypeMapper\ObjectTypeMapper
|
||||
*/
|
||||
private $phpStanStaticTypeMapper;
|
||||
public function __construct(PhpVersionProvider $phpVersionProvider, ReflectionProvider $reflectionProvider)
|
||||
private $objectTypeMapper;
|
||||
public function __construct(PhpVersionProvider $phpVersionProvider, \Rector\PHPStanStaticTypeMapper\TypeMapper\ObjectWithoutClassTypeMapper $objectWithoutClassTypeMapper, \Rector\PHPStanStaticTypeMapper\TypeMapper\ObjectTypeMapper $objectTypeMapper)
|
||||
{
|
||||
$this->phpVersionProvider = $phpVersionProvider;
|
||||
$this->reflectionProvider = $reflectionProvider;
|
||||
}
|
||||
/**
|
||||
* @required
|
||||
*/
|
||||
public function autowire(PHPStanStaticTypeMapper $phpStanStaticTypeMapper) : void
|
||||
{
|
||||
$this->phpStanStaticTypeMapper = $phpStanStaticTypeMapper;
|
||||
$this->objectWithoutClassTypeMapper = $objectWithoutClassTypeMapper;
|
||||
$this->objectTypeMapper = $objectTypeMapper;
|
||||
}
|
||||
/**
|
||||
* @return class-string<Type>
|
||||
@ -83,23 +74,15 @@ final class IntersectionTypeMapper implements TypeMapperInterface
|
||||
return null;
|
||||
}
|
||||
$intersectionedTypeNodes = [];
|
||||
foreach ($type->getTypes() as $intersectionedType) {
|
||||
$resolvedType = $this->phpStanStaticTypeMapper->mapToPhpParserNode($intersectionedType, $typeKind);
|
||||
if (!$resolvedType instanceof Name && !$resolvedType instanceof Identifier) {
|
||||
foreach ($type->getTypes() as $type) {
|
||||
if ($type instanceof ObjectWithoutClassType) {
|
||||
return $this->objectWithoutClassTypeMapper->mapToPhpParserNode($type, $typeKind);
|
||||
}
|
||||
if (!$type instanceof ObjectType) {
|
||||
return null;
|
||||
}
|
||||
$resolvedTypeName = (string) $resolvedType;
|
||||
/**
|
||||
* ObjectWithoutClassType can happen when use along with \PHPStan\Type\Accessory\HasMethodType
|
||||
* Use "object" as returned type
|
||||
*/
|
||||
if ($intersectionedType instanceof ObjectWithoutClassType) {
|
||||
return $resolvedType;
|
||||
}
|
||||
if (!$intersectionedType instanceof ObjectType) {
|
||||
return null;
|
||||
}
|
||||
if (!$this->reflectionProvider->hasClass($resolvedTypeName)) {
|
||||
$resolvedType = $this->objectTypeMapper->mapToPhpParserNode($type, $typeKind);
|
||||
if (!$resolvedType instanceof FullyQualified) {
|
||||
return null;
|
||||
}
|
||||
$intersectionedTypeNodes[] = $resolvedType;
|
||||
|
@ -4,7 +4,6 @@ declare (strict_types=1);
|
||||
namespace Rector\PHPStanStaticTypeMapper\TypeMapper;
|
||||
|
||||
use RectorPrefix202308\Nette\Utils\Strings;
|
||||
use PhpParser\Node;
|
||||
use PhpParser\Node\Name;
|
||||
use PhpParser\Node\Name\FullyQualified;
|
||||
use PHPStan\PhpDocParser\Ast\Type\TypeNode;
|
||||
@ -56,8 +55,9 @@ final class ObjectTypeMapper implements TypeMapperInterface
|
||||
}
|
||||
/**
|
||||
* @param ObjectType $type
|
||||
* @return null|\PhpParser\Node\Name|\PhpParser\Node\Name\FullyQualified
|
||||
*/
|
||||
public function mapToPhpParserNode(Type $type, string $typeKind) : ?Node
|
||||
public function mapToPhpParserNode(Type $type, string $typeKind)
|
||||
{
|
||||
if ($type instanceof SelfObjectType) {
|
||||
return new Name('self');
|
||||
|
@ -19,12 +19,12 @@ final class VersionResolver
|
||||
* @api
|
||||
* @var string
|
||||
*/
|
||||
public const PACKAGE_VERSION = '92b6e3a6d1e9a4289b5347e52f1cf379a68d74b4';
|
||||
public const PACKAGE_VERSION = '734233107cae347d5987f3f2e9d1c5c69a4db3fa';
|
||||
/**
|
||||
* @api
|
||||
* @var string
|
||||
*/
|
||||
public const RELEASE_DATE = '2023-08-07 13:16:17';
|
||||
public const RELEASE_DATE = '2023-08-07 23:18:55';
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
|
2
vendor/autoload.php
vendored
2
vendor/autoload.php
vendored
@ -22,4 +22,4 @@ if (PHP_VERSION_ID < 50600) {
|
||||
|
||||
require_once __DIR__ . '/composer/autoload_real.php';
|
||||
|
||||
return ComposerAutoloaderInit07f692a9b7f057489054a15eec63fa36::getLoader();
|
||||
return ComposerAutoloaderInite74185382e1a6c8e187dd0afe1ceba0c::getLoader();
|
||||
|
10
vendor/composer/autoload_real.php
vendored
10
vendor/composer/autoload_real.php
vendored
@ -2,7 +2,7 @@
|
||||
|
||||
// autoload_real.php @generated by Composer
|
||||
|
||||
class ComposerAutoloaderInit07f692a9b7f057489054a15eec63fa36
|
||||
class ComposerAutoloaderInite74185382e1a6c8e187dd0afe1ceba0c
|
||||
{
|
||||
private static $loader;
|
||||
|
||||
@ -22,17 +22,17 @@ class ComposerAutoloaderInit07f692a9b7f057489054a15eec63fa36
|
||||
return self::$loader;
|
||||
}
|
||||
|
||||
spl_autoload_register(array('ComposerAutoloaderInit07f692a9b7f057489054a15eec63fa36', 'loadClassLoader'), true, true);
|
||||
spl_autoload_register(array('ComposerAutoloaderInite74185382e1a6c8e187dd0afe1ceba0c', 'loadClassLoader'), true, true);
|
||||
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
|
||||
spl_autoload_unregister(array('ComposerAutoloaderInit07f692a9b7f057489054a15eec63fa36', 'loadClassLoader'));
|
||||
spl_autoload_unregister(array('ComposerAutoloaderInite74185382e1a6c8e187dd0afe1ceba0c', 'loadClassLoader'));
|
||||
|
||||
require __DIR__ . '/autoload_static.php';
|
||||
call_user_func(\Composer\Autoload\ComposerStaticInit07f692a9b7f057489054a15eec63fa36::getInitializer($loader));
|
||||
call_user_func(\Composer\Autoload\ComposerStaticInite74185382e1a6c8e187dd0afe1ceba0c::getInitializer($loader));
|
||||
|
||||
$loader->setClassMapAuthoritative(true);
|
||||
$loader->register(true);
|
||||
|
||||
$filesToLoad = \Composer\Autoload\ComposerStaticInit07f692a9b7f057489054a15eec63fa36::$files;
|
||||
$filesToLoad = \Composer\Autoload\ComposerStaticInite74185382e1a6c8e187dd0afe1ceba0c::$files;
|
||||
$requireFile = \Closure::bind(static function ($fileIdentifier, $file) {
|
||||
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
||||
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
|
||||
|
8
vendor/composer/autoload_static.php
vendored
8
vendor/composer/autoload_static.php
vendored
@ -4,7 +4,7 @@
|
||||
|
||||
namespace Composer\Autoload;
|
||||
|
||||
class ComposerStaticInit07f692a9b7f057489054a15eec63fa36
|
||||
class ComposerStaticInite74185382e1a6c8e187dd0afe1ceba0c
|
||||
{
|
||||
public static $files = array (
|
||||
'ad155f8f1cf0d418fe49e248db8c661b' => __DIR__ . '/..' . '/react/promise/src/functions_include.php',
|
||||
@ -3012,9 +3012,9 @@ class ComposerStaticInit07f692a9b7f057489054a15eec63fa36
|
||||
public static function getInitializer(ClassLoader $loader)
|
||||
{
|
||||
return \Closure::bind(function () use ($loader) {
|
||||
$loader->prefixLengthsPsr4 = ComposerStaticInit07f692a9b7f057489054a15eec63fa36::$prefixLengthsPsr4;
|
||||
$loader->prefixDirsPsr4 = ComposerStaticInit07f692a9b7f057489054a15eec63fa36::$prefixDirsPsr4;
|
||||
$loader->classMap = ComposerStaticInit07f692a9b7f057489054a15eec63fa36::$classMap;
|
||||
$loader->prefixLengthsPsr4 = ComposerStaticInite74185382e1a6c8e187dd0afe1ceba0c::$prefixLengthsPsr4;
|
||||
$loader->prefixDirsPsr4 = ComposerStaticInite74185382e1a6c8e187dd0afe1ceba0c::$prefixDirsPsr4;
|
||||
$loader->classMap = ComposerStaticInite74185382e1a6c8e187dd0afe1ceba0c::$classMap;
|
||||
|
||||
}, null, ClassLoader::class);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user