Skip to content

Commit

Permalink
Updated Rector to commit f8814b1d707d72e284870759d1f446848fa003b2
Browse files Browse the repository at this point in the history
rectorphp/rector-src@f8814b1 [CodeQuality] Remove type addition on CompleteDynamicPropertiesRector (#3248)
  • Loading branch information
TomasVotruba committed Dec 24, 2022
1 parent 5003a01 commit 374d2f5
Show file tree
Hide file tree
Showing 5 changed files with 16 additions and 67 deletions.
59 changes: 4 additions & 55 deletions rules/CodeQuality/NodeFactory/PropertyTypeDecorator.php
Expand Up @@ -3,28 +3,17 @@
declare (strict_types=1);
namespace Rector\CodeQuality\NodeFactory;

use PhpParser\Node;
use PhpParser\Node\ComplexType;
use PhpParser\Node\Identifier;
use PhpParser\Node\Name;
use PhpParser\Node\Stmt\Property;
use PHPStan\Type\ArrayType;
use PHPStan\Type\MixedType;
use PHPStan\Type\Type;
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory;
use Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTypeChanger;
use Rector\Core\Php\PhpVersionProvider;
use Rector\Core\ValueObject\PhpVersionFeature;
use Rector\PHPStanStaticTypeMapper\Enum\TypeKind;
use Rector\Privatization\TypeManipulator\TypeNormalizer;
use Rector\StaticTypeMapper\StaticTypeMapper;
final class PropertyTypeDecorator
{
/**
* @readonly
* @var \Rector\Core\Php\PhpVersionProvider
*/
private $phpVersionProvider;
/**
* @readonly
* @var \Rector\StaticTypeMapper\StaticTypeMapper
Expand All @@ -45,9 +34,8 @@ final class PropertyTypeDecorator
* @var \Rector\Privatization\TypeManipulator\TypeNormalizer
*/
private $typeNormalizer;
public function __construct(PhpVersionProvider $phpVersionProvider, StaticTypeMapper $staticTypeMapper, PhpDocTypeChanger $phpDocTypeChanger, PhpDocInfoFactory $phpDocInfoFactory, TypeNormalizer $typeNormalizer)
public function __construct(StaticTypeMapper $staticTypeMapper, PhpDocTypeChanger $phpDocTypeChanger, PhpDocInfoFactory $phpDocInfoFactory, TypeNormalizer $typeNormalizer)
{
$this->phpVersionProvider = $phpVersionProvider;
$this->staticTypeMapper = $staticTypeMapper;
$this->phpDocTypeChanger = $phpDocTypeChanger;
$this->phpDocInfoFactory = $phpDocInfoFactory;
Expand All @@ -57,8 +45,9 @@ public function decorateProperty(Property $property, Type $propertyType) : void
{
// generalize false/true type to bool, as mostly default value but accepts both
$propertyType = $this->typeNormalizer->generalizeConstantBoolTypes($propertyType);
$this->decoratePropertyWithVarDoc($property, $propertyType);
$this->decoratePropertyWithType($property, $propertyType);
$phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($property);
$phpDocInfo->makeMultiLined();
$this->phpDocTypeChanger->changeVarType($phpDocInfo, $propertyType);
}
/**
* @api downgrade
Expand All @@ -73,44 +62,4 @@ public function decoratePropertyWithDocBlock(Property $property, $typeNode) : vo
$newType = $this->staticTypeMapper->mapPhpParserNodePHPStanType($typeNode);
$this->phpDocTypeChanger->changeVarType($phpDocInfo, $newType);
}
private function decoratePropertyWithVarDoc(Property $property, Type $propertyType) : void
{
$phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($property);
$phpDocInfo->makeMultiLined();
if ($this->isNonMixedArrayType($propertyType)) {
$this->phpDocTypeChanger->changeVarType($phpDocInfo, $propertyType);
$property->type = new Identifier('array');
return;
}
if ($this->phpVersionProvider->isAtLeastPhpVersion(PhpVersionFeature::TYPED_PROPERTIES)) {
$phpParserNode = $this->staticTypeMapper->mapPHPStanTypeToPhpParserNode($propertyType, TypeKind::PROPERTY);
if (!$phpParserNode instanceof Node) {
// fallback to doc type in PHP 7.4
$this->phpDocTypeChanger->changeVarType($phpDocInfo, $propertyType);
}
} else {
$this->phpDocTypeChanger->changeVarType($phpDocInfo, $propertyType);
}
}
private function decoratePropertyWithType(Property $property, Type $propertyType) : void
{
if (!$this->phpVersionProvider->isAtLeastPhpVersion(PhpVersionFeature::TYPED_PROPERTIES)) {
return;
}
$phpParserNode = $this->staticTypeMapper->mapPHPStanTypeToPhpParserNode($propertyType, TypeKind::PROPERTY);
if (!$phpParserNode instanceof Node) {
return;
}
$property->type = $phpParserNode;
}
private function isNonMixedArrayType(Type $type) : bool
{
if (!$type instanceof ArrayType) {
return \false;
}
if ($type->getKeyType() instanceof MixedType) {
return \false;
}
return !$type->getItemType() instanceof MixedType;
}
}
4 changes: 2 additions & 2 deletions src/Application/VersionResolver.php
Expand Up @@ -19,12 +19,12 @@ final class VersionResolver
* @api
* @var string
*/
public const PACKAGE_VERSION = 'e920ade7b67a17dbf7e6129585a3261f1fd1540e';
public const PACKAGE_VERSION = 'f8814b1d707d72e284870759d1f446848fa003b2';
/**
* @api
* @var string
*/
public const RELEASE_DATE = '2022-12-24 01:01:02';
public const RELEASE_DATE = '2022-12-24 09:25:59';
/**
* @var int
*/
Expand Down
2 changes: 1 addition & 1 deletion vendor/autoload.php
Expand Up @@ -22,4 +22,4 @@

require_once __DIR__ . '/composer/autoload_real.php';

return ComposerAutoloaderInitded2f83f5e19fc6bbb5a7180b1f8f0e2::getLoader();
return ComposerAutoloaderInit70a4bf84a6ddbe6d73421f3dc2a511cc::getLoader();
10 changes: 5 additions & 5 deletions vendor/composer/autoload_real.php
Expand Up @@ -2,7 +2,7 @@

// autoload_real.php @generated by Composer

class ComposerAutoloaderInitded2f83f5e19fc6bbb5a7180b1f8f0e2
class ComposerAutoloaderInit70a4bf84a6ddbe6d73421f3dc2a511cc
{
private static $loader;

Expand All @@ -22,17 +22,17 @@ public static function getLoader()
return self::$loader;
}

spl_autoload_register(array('ComposerAutoloaderInitded2f83f5e19fc6bbb5a7180b1f8f0e2', 'loadClassLoader'), true, true);
spl_autoload_register(array('ComposerAutoloaderInit70a4bf84a6ddbe6d73421f3dc2a511cc', 'loadClassLoader'), true, true);
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
spl_autoload_unregister(array('ComposerAutoloaderInitded2f83f5e19fc6bbb5a7180b1f8f0e2', 'loadClassLoader'));
spl_autoload_unregister(array('ComposerAutoloaderInit70a4bf84a6ddbe6d73421f3dc2a511cc', 'loadClassLoader'));

require __DIR__ . '/autoload_static.php';
call_user_func(\Composer\Autoload\ComposerStaticInitded2f83f5e19fc6bbb5a7180b1f8f0e2::getInitializer($loader));
call_user_func(\Composer\Autoload\ComposerStaticInit70a4bf84a6ddbe6d73421f3dc2a511cc::getInitializer($loader));

$loader->setClassMapAuthoritative(true);
$loader->register(true);

$filesToLoad = \Composer\Autoload\ComposerStaticInitded2f83f5e19fc6bbb5a7180b1f8f0e2::$files;
$filesToLoad = \Composer\Autoload\ComposerStaticInit70a4bf84a6ddbe6d73421f3dc2a511cc::$files;
$requireFile = static function ($fileIdentifier, $file) {
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
Expand Down
8 changes: 4 additions & 4 deletions vendor/composer/autoload_static.php
Expand Up @@ -4,7 +4,7 @@

namespace Composer\Autoload;

class ComposerStaticInitded2f83f5e19fc6bbb5a7180b1f8f0e2
class ComposerStaticInit70a4bf84a6ddbe6d73421f3dc2a511cc
{
public static $files = array (
'ad155f8f1cf0d418fe49e248db8c661b' => __DIR__ . '/..' . '/react/promise/src/functions_include.php',
Expand Down Expand Up @@ -3061,9 +3061,9 @@ class ComposerStaticInitded2f83f5e19fc6bbb5a7180b1f8f0e2
public static function getInitializer(ClassLoader $loader)
{
return \Closure::bind(function () use ($loader) {
$loader->prefixLengthsPsr4 = ComposerStaticInitded2f83f5e19fc6bbb5a7180b1f8f0e2::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInitded2f83f5e19fc6bbb5a7180b1f8f0e2::$prefixDirsPsr4;
$loader->classMap = ComposerStaticInitded2f83f5e19fc6bbb5a7180b1f8f0e2::$classMap;
$loader->prefixLengthsPsr4 = ComposerStaticInit70a4bf84a6ddbe6d73421f3dc2a511cc::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInit70a4bf84a6ddbe6d73421f3dc2a511cc::$prefixDirsPsr4;
$loader->classMap = ComposerStaticInit70a4bf84a6ddbe6d73421f3dc2a511cc::$classMap;

}, null, ClassLoader::class);
}
Expand Down

0 comments on commit 374d2f5

Please sign in to comment.