Updated Rector to commit 85c3848e8b

85c3848e8b [DowngradePhp80/81] Refactor Downgrade Resource Return to Object to use BooleanOr check (#1193)
This commit is contained in:
Tomas Votruba 2021-11-08 20:33:54 +00:00
parent 59fbea4817
commit 46f79a7750
9 changed files with 48 additions and 30 deletions

View File

@ -5207,7 +5207,7 @@ change instanceof Object to is_resource
public function run($obj)
{
- $obj instanceof \CurlHandle;
+ is_resource($obj);
+ is_resource($obj) || $obj instanceof \CurlHandle;
}
}
```
@ -5447,7 +5447,7 @@ change instanceof Object to is_resource
public function run($obj)
{
- $obj instanceof \finfo;
+ is_resource($obj);
+ is_resource($obj) || $obj instanceof \finfo;
}
}
```

View File

@ -72,7 +72,7 @@ class SomeClass
{
public function run($obj)
{
is_resource($obj);
is_resource($obj) || $obj instanceof \CurlHandle;
}
}
CODE_SAMPLE

View File

@ -4,11 +4,15 @@ declare (strict_types=1);
namespace Rector\DowngradePhp81\NodeManipulator;
use PhpParser\Node;
use PhpParser\Node\Arg;
use PhpParser\Node\Expr;
use PhpParser\Node\Expr\BinaryOp;
use PhpParser\Node\Expr\BinaryOp\BooleanOr;
use PhpParser\Node\Expr\FuncCall;
use PhpParser\Node\Expr\Instanceof_;
use PhpParser\Node\Name;
use PhpParser\Node\Name\FullyQualified;
use Rector\Core\PhpParser\Comparing\NodeComparator;
use Rector\Core\PhpParser\Node\BetterNodeFinder;
use Rector\Core\PhpParser\Node\NodeFactory;
use Rector\NodeNameResolver\NodeNameResolver;
@ -22,20 +26,25 @@ final class ObjectToResourceReturn
* @var \Rector\NodeNameResolver\NodeNameResolver
*/
private $nodeNameResolver;
/**
* @var \Rector\Core\PhpParser\Comparing\NodeComparator
*/
private $nodeComparator;
/**
* @var \Rector\Core\PhpParser\Node\NodeFactory
*/
private $nodeFactory;
public function __construct(\Rector\Core\PhpParser\Node\BetterNodeFinder $betterNodeFinder, \Rector\NodeNameResolver\NodeNameResolver $nodeNameResolver, \Rector\Core\PhpParser\Node\NodeFactory $nodeFactory)
public function __construct(\Rector\Core\PhpParser\Node\BetterNodeFinder $betterNodeFinder, \Rector\NodeNameResolver\NodeNameResolver $nodeNameResolver, \Rector\Core\PhpParser\Comparing\NodeComparator $nodeComparator, \Rector\Core\PhpParser\Node\NodeFactory $nodeFactory)
{
$this->betterNodeFinder = $betterNodeFinder;
$this->nodeNameResolver = $nodeNameResolver;
$this->nodeComparator = $nodeComparator;
$this->nodeFactory = $nodeFactory;
}
/**
* @param string[] $collectionObjectToResource
*/
public function refactor(\PhpParser\Node\Expr\Instanceof_ $instanceof, array $collectionObjectToResource) : ?\PhpParser\Node\Expr\FuncCall
public function refactor(\PhpParser\Node\Expr\Instanceof_ $instanceof, array $collectionObjectToResource) : ?\PhpParser\Node\Expr\BinaryOp\BooleanOr
{
if (!$instanceof->class instanceof \PhpParser\Node\Name\FullyQualified) {
return null;
@ -46,24 +55,33 @@ final class ObjectToResourceReturn
continue;
}
$binaryOp = $this->betterNodeFinder->findParentType($instanceof, \PhpParser\Node\Expr\BinaryOp::class);
if ($this->hasIsResourceCheck($binaryOp)) {
if ($this->hasIsResourceCheck($instanceof->expr, $binaryOp)) {
continue;
}
return $this->nodeFactory->createFuncCall('is_resource', [$instanceof->expr]);
return new \PhpParser\Node\Expr\BinaryOp\BooleanOr($this->nodeFactory->createFuncCall('is_resource', [$instanceof->expr]), $instanceof);
}
return null;
}
private function hasIsResourceCheck(?\PhpParser\Node\Expr\BinaryOp $binaryOp) : bool
private function hasIsResourceCheck(\PhpParser\Node\Expr $expr, ?\PhpParser\Node\Expr\BinaryOp $binaryOp) : bool
{
if ($binaryOp instanceof \PhpParser\Node\Expr\BinaryOp) {
return (bool) $this->betterNodeFinder->findFirst($binaryOp, function (\PhpParser\Node $subNode) : bool {
return (bool) $this->betterNodeFinder->findFirst($binaryOp, function (\PhpParser\Node $subNode) use($expr) : bool {
if (!$subNode instanceof \PhpParser\Node\Expr\FuncCall) {
return \false;
}
if (!$subNode->name instanceof \PhpParser\Node\Name) {
return \false;
}
return $this->nodeNameResolver->isName($subNode->name, 'is_resource');
if (!$this->nodeNameResolver->isName($subNode->name, 'is_resource')) {
return \false;
}
if (!isset($subNode->args[0])) {
return \false;
}
if (!$subNode->args[0] instanceof \PhpParser\Node\Arg) {
return \false;
}
return $this->nodeComparator->areNodesEqual($subNode->args[0], $expr);
});
}
return \false;

View File

@ -63,7 +63,7 @@ class SomeClass
{
public function run($obj)
{
is_resource($obj);
is_resource($obj) || $obj instanceof \finfo;
}
}
CODE_SAMPLE

View File

@ -16,11 +16,11 @@ final class VersionResolver
/**
* @var string
*/
public const PACKAGE_VERSION = '4815cd96435238908581d54a6d4dc80478750ee4';
public const PACKAGE_VERSION = '85c3848e8ba6a4e4a7e3d29abce4995e3254ac55';
/**
* @var string
*/
public const RELEASE_DATE = '2021-11-09 02:25:53';
public const RELEASE_DATE = '2021-11-09 03:17:38';
public static function resolvePackageVersion() : string
{
$process = new \RectorPrefix20211108\Symfony\Component\Process\Process(['git', 'log', '--pretty="%H"', '-n1', 'HEAD'], __DIR__);

2
vendor/autoload.php vendored
View File

@ -4,4 +4,4 @@
require_once __DIR__ . '/composer/autoload_real.php';
return ComposerAutoloaderInit5d5a9001b8f794ae8f9e14e7645e0a25::getLoader();
return ComposerAutoloaderInitd5caf5315756425f2b3dfbc9d7f90dc1::getLoader();

View File

@ -2,7 +2,7 @@
// autoload_real.php @generated by Composer
class ComposerAutoloaderInit5d5a9001b8f794ae8f9e14e7645e0a25
class ComposerAutoloaderInitd5caf5315756425f2b3dfbc9d7f90dc1
{
private static $loader;
@ -22,15 +22,15 @@ class ComposerAutoloaderInit5d5a9001b8f794ae8f9e14e7645e0a25
return self::$loader;
}
spl_autoload_register(array('ComposerAutoloaderInit5d5a9001b8f794ae8f9e14e7645e0a25', 'loadClassLoader'), true, true);
spl_autoload_register(array('ComposerAutoloaderInitd5caf5315756425f2b3dfbc9d7f90dc1', 'loadClassLoader'), true, true);
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
spl_autoload_unregister(array('ComposerAutoloaderInit5d5a9001b8f794ae8f9e14e7645e0a25', 'loadClassLoader'));
spl_autoload_unregister(array('ComposerAutoloaderInitd5caf5315756425f2b3dfbc9d7f90dc1', 'loadClassLoader'));
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
if ($useStaticLoader) {
require __DIR__ . '/autoload_static.php';
call_user_func(\Composer\Autoload\ComposerStaticInit5d5a9001b8f794ae8f9e14e7645e0a25::getInitializer($loader));
call_user_func(\Composer\Autoload\ComposerStaticInitd5caf5315756425f2b3dfbc9d7f90dc1::getInitializer($loader));
} else {
$classMap = require __DIR__ . '/autoload_classmap.php';
if ($classMap) {
@ -42,19 +42,19 @@ class ComposerAutoloaderInit5d5a9001b8f794ae8f9e14e7645e0a25
$loader->register(true);
if ($useStaticLoader) {
$includeFiles = Composer\Autoload\ComposerStaticInit5d5a9001b8f794ae8f9e14e7645e0a25::$files;
$includeFiles = Composer\Autoload\ComposerStaticInitd5caf5315756425f2b3dfbc9d7f90dc1::$files;
} else {
$includeFiles = require __DIR__ . '/autoload_files.php';
}
foreach ($includeFiles as $fileIdentifier => $file) {
composerRequire5d5a9001b8f794ae8f9e14e7645e0a25($fileIdentifier, $file);
composerRequired5caf5315756425f2b3dfbc9d7f90dc1($fileIdentifier, $file);
}
return $loader;
}
}
function composerRequire5d5a9001b8f794ae8f9e14e7645e0a25($fileIdentifier, $file)
function composerRequired5caf5315756425f2b3dfbc9d7f90dc1($fileIdentifier, $file)
{
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
require $file;

View File

@ -4,7 +4,7 @@
namespace Composer\Autoload;
class ComposerStaticInit5d5a9001b8f794ae8f9e14e7645e0a25
class ComposerStaticInitd5caf5315756425f2b3dfbc9d7f90dc1
{
public static $files = array (
'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php',
@ -3530,9 +3530,9 @@ class ComposerStaticInit5d5a9001b8f794ae8f9e14e7645e0a25
public static function getInitializer(ClassLoader $loader)
{
return \Closure::bind(function () use ($loader) {
$loader->prefixLengthsPsr4 = ComposerStaticInit5d5a9001b8f794ae8f9e14e7645e0a25::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInit5d5a9001b8f794ae8f9e14e7645e0a25::$prefixDirsPsr4;
$loader->classMap = ComposerStaticInit5d5a9001b8f794ae8f9e14e7645e0a25::$classMap;
$loader->prefixLengthsPsr4 = ComposerStaticInitd5caf5315756425f2b3dfbc9d7f90dc1::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInitd5caf5315756425f2b3dfbc9d7f90dc1::$prefixDirsPsr4;
$loader->classMap = ComposerStaticInitd5caf5315756425f2b3dfbc9d7f90dc1::$classMap;
}, null, ClassLoader::class);
}

View File

@ -9,8 +9,8 @@ $loader = require_once __DIR__.'/autoload.php';
if (!class_exists('AutoloadIncluder', false) && !interface_exists('AutoloadIncluder', false) && !trait_exists('AutoloadIncluder', false)) {
spl_autoload_call('RectorPrefix20211108\AutoloadIncluder');
}
if (!class_exists('ComposerAutoloaderInit5d5a9001b8f794ae8f9e14e7645e0a25', false) && !interface_exists('ComposerAutoloaderInit5d5a9001b8f794ae8f9e14e7645e0a25', false) && !trait_exists('ComposerAutoloaderInit5d5a9001b8f794ae8f9e14e7645e0a25', false)) {
spl_autoload_call('RectorPrefix20211108\ComposerAutoloaderInit5d5a9001b8f794ae8f9e14e7645e0a25');
if (!class_exists('ComposerAutoloaderInitd5caf5315756425f2b3dfbc9d7f90dc1', false) && !interface_exists('ComposerAutoloaderInitd5caf5315756425f2b3dfbc9d7f90dc1', false) && !trait_exists('ComposerAutoloaderInitd5caf5315756425f2b3dfbc9d7f90dc1', false)) {
spl_autoload_call('RectorPrefix20211108\ComposerAutoloaderInitd5caf5315756425f2b3dfbc9d7f90dc1');
}
if (!class_exists('Helmich\TypoScriptParser\Parser\AST\Statement', false) && !interface_exists('Helmich\TypoScriptParser\Parser\AST\Statement', false) && !trait_exists('Helmich\TypoScriptParser\Parser\AST\Statement', false)) {
spl_autoload_call('RectorPrefix20211108\Helmich\TypoScriptParser\Parser\AST\Statement');
@ -3306,9 +3306,9 @@ if (!function_exists('print_node')) {
return \RectorPrefix20211108\print_node(...func_get_args());
}
}
if (!function_exists('composerRequire5d5a9001b8f794ae8f9e14e7645e0a25')) {
function composerRequire5d5a9001b8f794ae8f9e14e7645e0a25() {
return \RectorPrefix20211108\composerRequire5d5a9001b8f794ae8f9e14e7645e0a25(...func_get_args());
if (!function_exists('composerRequired5caf5315756425f2b3dfbc9d7f90dc1')) {
function composerRequired5caf5315756425f2b3dfbc9d7f90dc1() {
return \RectorPrefix20211108\composerRequired5caf5315756425f2b3dfbc9d7f90dc1(...func_get_args());
}
}
if (!function_exists('parseArgs')) {