mirror of
https://github.com/rectorphp/rector.git
synced 2024-06-01 00:40:52 +00:00
Updated Rector to commit 9939ced45eb3479a1d8b2b9339512398118b92d9
9939ced45e
[CodeQuality] Skip never type on default switch on ExplicitReturnNullRector (#5808)
This commit is contained in:
parent
6fb3352189
commit
53fb366ec6
|
@ -20,7 +20,6 @@ use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory;
|
||||||
use Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTypeChanger;
|
use Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTypeChanger;
|
||||||
use Rector\NodeTypeResolver\PHPStan\Type\TypeFactory;
|
use Rector\NodeTypeResolver\PHPStan\Type\TypeFactory;
|
||||||
use Rector\Rector\AbstractRector;
|
use Rector\Rector\AbstractRector;
|
||||||
use Rector\TypeDeclaration\NodeAnalyzer\NeverFuncCallAnalyzer;
|
|
||||||
use Rector\TypeDeclaration\TypeInferer\ReturnTypeInferer;
|
use Rector\TypeDeclaration\TypeInferer\ReturnTypeInferer;
|
||||||
use Rector\TypeDeclaration\TypeInferer\SilentVoidResolver;
|
use Rector\TypeDeclaration\TypeInferer\SilentVoidResolver;
|
||||||
use Rector\ValueObject\MethodName;
|
use Rector\ValueObject\MethodName;
|
||||||
|
@ -51,23 +50,17 @@ final class ExplicitReturnNullRector extends AbstractRector
|
||||||
* @var \Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTypeChanger
|
* @var \Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTypeChanger
|
||||||
*/
|
*/
|
||||||
private $phpDocTypeChanger;
|
private $phpDocTypeChanger;
|
||||||
/**
|
|
||||||
* @readonly
|
|
||||||
* @var \Rector\TypeDeclaration\NodeAnalyzer\NeverFuncCallAnalyzer
|
|
||||||
*/
|
|
||||||
private $neverFuncCallAnalyzer;
|
|
||||||
/**
|
/**
|
||||||
* @readonly
|
* @readonly
|
||||||
* @var \Rector\TypeDeclaration\TypeInferer\ReturnTypeInferer
|
* @var \Rector\TypeDeclaration\TypeInferer\ReturnTypeInferer
|
||||||
*/
|
*/
|
||||||
private $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->silentVoidResolver = $silentVoidResolver;
|
||||||
$this->phpDocInfoFactory = $phpDocInfoFactory;
|
$this->phpDocInfoFactory = $phpDocInfoFactory;
|
||||||
$this->typeFactory = $typeFactory;
|
$this->typeFactory = $typeFactory;
|
||||||
$this->phpDocTypeChanger = $phpDocTypeChanger;
|
$this->phpDocTypeChanger = $phpDocTypeChanger;
|
||||||
$this->neverFuncCallAnalyzer = $neverFuncCallAnalyzer;
|
|
||||||
$this->returnTypeInferer = $returnTypeInferer;
|
$this->returnTypeInferer = $returnTypeInferer;
|
||||||
}
|
}
|
||||||
public function getRuleDefinition() : RuleDefinition
|
public function getRuleDefinition() : RuleDefinition
|
||||||
|
@ -139,7 +132,7 @@ CODE_SAMPLE
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
});
|
});
|
||||||
if (!$this->silentVoidResolver->hasSilentVoid($node) || $this->neverFuncCallAnalyzer->hasNeverFuncCall($node)) {
|
if (!$this->silentVoidResolver->hasSilentVoid($node)) {
|
||||||
if ($hasChanged) {
|
if ($hasChanged) {
|
||||||
$this->transformDocUnionVoidToUnionNull($node);
|
$this->transformDocUnionVoidToUnionNull($node);
|
||||||
return $node;
|
return $node;
|
||||||
|
|
|
@ -4,6 +4,7 @@ declare (strict_types=1);
|
||||||
namespace Rector\TypeDeclaration\NodeAnalyzer;
|
namespace Rector\TypeDeclaration\NodeAnalyzer;
|
||||||
|
|
||||||
use PhpParser\Node\Expr\Closure;
|
use PhpParser\Node\Expr\Closure;
|
||||||
|
use PhpParser\Node\FunctionLike;
|
||||||
use PhpParser\Node\Stmt;
|
use PhpParser\Node\Stmt;
|
||||||
use PhpParser\Node\Stmt\ClassMethod;
|
use PhpParser\Node\Stmt\ClassMethod;
|
||||||
use PhpParser\Node\Stmt\Expression;
|
use PhpParser\Node\Stmt\Expression;
|
||||||
|
@ -22,12 +23,13 @@ final class NeverFuncCallAnalyzer
|
||||||
$this->nodeTypeResolver = $nodeTypeResolver;
|
$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
|
public function hasNeverFuncCall($functionLike) : bool
|
||||||
{
|
{
|
||||||
$hasNeverType = \false;
|
$hasNeverType = \false;
|
||||||
foreach ((array) $functionLike->stmts as $stmt) {
|
$stmts = $functionLike instanceof FunctionLike ? (array) $functionLike->stmts : $functionLike;
|
||||||
|
foreach ($stmts as $stmt) {
|
||||||
if ($stmt instanceof Expression) {
|
if ($stmt instanceof Expression) {
|
||||||
$stmt = $stmt->expr;
|
$stmt = $stmt->expr;
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,6 +30,7 @@ use PhpParser\Node\Stmt\TryCatch;
|
||||||
use PHPStan\Reflection\ClassReflection;
|
use PHPStan\Reflection\ClassReflection;
|
||||||
use Rector\PhpParser\Node\BetterNodeFinder;
|
use Rector\PhpParser\Node\BetterNodeFinder;
|
||||||
use Rector\Reflection\ReflectionResolver;
|
use Rector\Reflection\ReflectionResolver;
|
||||||
|
use Rector\TypeDeclaration\NodeAnalyzer\NeverFuncCallAnalyzer;
|
||||||
final class SilentVoidResolver
|
final class SilentVoidResolver
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
@ -42,10 +43,16 @@ final class SilentVoidResolver
|
||||||
* @var \Rector\Reflection\ReflectionResolver
|
* @var \Rector\Reflection\ReflectionResolver
|
||||||
*/
|
*/
|
||||||
private $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->betterNodeFinder = $betterNodeFinder;
|
||||||
$this->reflectionResolver = $reflectionResolver;
|
$this->reflectionResolver = $reflectionResolver;
|
||||||
|
$this->neverFuncCallAnalyzer = $neverFuncCallAnalyzer;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Expr\Closure|\PhpParser\Node\Stmt\Function_ $functionLike
|
* @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Expr\Closure|\PhpParser\Node\Stmt\Function_ $functionLike
|
||||||
|
@ -98,7 +105,7 @@ final class SilentVoidResolver
|
||||||
return \true;
|
return \true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return \false;
|
return $this->neverFuncCallAnalyzer->hasNeverFuncCall($stmts);
|
||||||
}
|
}
|
||||||
private function isDoWithAlwaysReturnOrExit(Do_ $do) : bool
|
private function isDoWithAlwaysReturnOrExit(Do_ $do) : bool
|
||||||
{
|
{
|
||||||
|
|
|
@ -19,12 +19,12 @@ final class VersionResolver
|
||||||
* @api
|
* @api
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
public const PACKAGE_VERSION = '690fe892750028e239a01f1b13cd252359994522';
|
public const PACKAGE_VERSION = '9939ced45eb3479a1d8b2b9339512398118b92d9';
|
||||||
/**
|
/**
|
||||||
* @api
|
* @api
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
public const RELEASE_DATE = '2024-04-07 16:13:24';
|
public const RELEASE_DATE = '2024-04-08 16:17:37';
|
||||||
/**
|
/**
|
||||||
* @var int
|
* @var int
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue
Block a user