Updated Rector to commit 9939ced45eb3479a1d8b2b9339512398118b92d9

9939ced45e [CodeQuality] Skip never type on default switch on ExplicitReturnNullRector (#5808)
This commit is contained in:
Tomas Votruba 2024-04-08 09:20:15 +00:00
parent 6fb3352189
commit 53fb366ec6
4 changed files with 17 additions and 15 deletions

View File

@ -20,7 +20,6 @@ use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory;
use Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTypeChanger;
use Rector\NodeTypeResolver\PHPStan\Type\TypeFactory;
use Rector\Rector\AbstractRector;
use Rector\TypeDeclaration\NodeAnalyzer\NeverFuncCallAnalyzer;
use Rector\TypeDeclaration\TypeInferer\ReturnTypeInferer;
use Rector\TypeDeclaration\TypeInferer\SilentVoidResolver;
use Rector\ValueObject\MethodName;
@ -51,23 +50,17 @@ final class ExplicitReturnNullRector extends AbstractRector
* @var \Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTypeChanger
*/
private $phpDocTypeChanger;
/**
* @readonly
* @var \Rector\TypeDeclaration\NodeAnalyzer\NeverFuncCallAnalyzer
*/
private $neverFuncCallAnalyzer;
/**
* @readonly
* @var \Rector\TypeDeclaration\TypeInferer\ReturnTypeInferer
*/
private $returnTypeInferer;
public function __construct(SilentVoidResolver $silentVoidResolver, PhpDocInfoFactory $phpDocInfoFactory, TypeFactory $typeFactory, PhpDocTypeChanger $phpDocTypeChanger, NeverFuncCallAnalyzer $neverFuncCallAnalyzer, ReturnTypeInferer $returnTypeInferer)
public function __construct(SilentVoidResolver $silentVoidResolver, PhpDocInfoFactory $phpDocInfoFactory, TypeFactory $typeFactory, PhpDocTypeChanger $phpDocTypeChanger, ReturnTypeInferer $returnTypeInferer)
{
$this->silentVoidResolver = $silentVoidResolver;
$this->phpDocInfoFactory = $phpDocInfoFactory;
$this->typeFactory = $typeFactory;
$this->phpDocTypeChanger = $phpDocTypeChanger;
$this->neverFuncCallAnalyzer = $neverFuncCallAnalyzer;
$this->returnTypeInferer = $returnTypeInferer;
}
public function getRuleDefinition() : RuleDefinition
@ -139,7 +132,7 @@ CODE_SAMPLE
}
return null;
});
if (!$this->silentVoidResolver->hasSilentVoid($node) || $this->neverFuncCallAnalyzer->hasNeverFuncCall($node)) {
if (!$this->silentVoidResolver->hasSilentVoid($node)) {
if ($hasChanged) {
$this->transformDocUnionVoidToUnionNull($node);
return $node;

View File

@ -4,6 +4,7 @@ declare (strict_types=1);
namespace Rector\TypeDeclaration\NodeAnalyzer;
use PhpParser\Node\Expr\Closure;
use PhpParser\Node\FunctionLike;
use PhpParser\Node\Stmt;
use PhpParser\Node\Stmt\ClassMethod;
use PhpParser\Node\Stmt\Expression;
@ -22,12 +23,13 @@ final class NeverFuncCallAnalyzer
$this->nodeTypeResolver = $nodeTypeResolver;
}
/**
* @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Expr\Closure|\PhpParser\Node\Stmt\Function_ $functionLike
* @param ClassMethod|Closure|Function_|Stmt[] $functionLike
*/
public function hasNeverFuncCall($functionLike) : bool
{
$hasNeverType = \false;
foreach ((array) $functionLike->stmts as $stmt) {
$stmts = $functionLike instanceof FunctionLike ? (array) $functionLike->stmts : $functionLike;
foreach ($stmts as $stmt) {
if ($stmt instanceof Expression) {
$stmt = $stmt->expr;
}

View File

@ -30,6 +30,7 @@ use PhpParser\Node\Stmt\TryCatch;
use PHPStan\Reflection\ClassReflection;
use Rector\PhpParser\Node\BetterNodeFinder;
use Rector\Reflection\ReflectionResolver;
use Rector\TypeDeclaration\NodeAnalyzer\NeverFuncCallAnalyzer;
final class SilentVoidResolver
{
/**
@ -42,10 +43,16 @@ final class SilentVoidResolver
* @var \Rector\Reflection\ReflectionResolver
*/
private $reflectionResolver;
public function __construct(BetterNodeFinder $betterNodeFinder, ReflectionResolver $reflectionResolver)
/**
* @readonly
* @var \Rector\TypeDeclaration\NodeAnalyzer\NeverFuncCallAnalyzer
*/
private $neverFuncCallAnalyzer;
public function __construct(BetterNodeFinder $betterNodeFinder, ReflectionResolver $reflectionResolver, NeverFuncCallAnalyzer $neverFuncCallAnalyzer)
{
$this->betterNodeFinder = $betterNodeFinder;
$this->reflectionResolver = $reflectionResolver;
$this->neverFuncCallAnalyzer = $neverFuncCallAnalyzer;
}
/**
* @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Expr\Closure|\PhpParser\Node\Stmt\Function_ $functionLike
@ -98,7 +105,7 @@ final class SilentVoidResolver
return \true;
}
}
return \false;
return $this->neverFuncCallAnalyzer->hasNeverFuncCall($stmts);
}
private function isDoWithAlwaysReturnOrExit(Do_ $do) : bool
{

View File

@ -19,12 +19,12 @@ final class VersionResolver
* @api
* @var string
*/
public const PACKAGE_VERSION = '690fe892750028e239a01f1b13cd252359994522';
public const PACKAGE_VERSION = '9939ced45eb3479a1d8b2b9339512398118b92d9';
/**
* @api
* @var string
*/
public const RELEASE_DATE = '2024-04-07 16:13:24';
public const RELEASE_DATE = '2024-04-08 16:17:37';
/**
* @var int
*/