mirror of
https://github.com/rectorphp/rector.git
synced 2024-06-26 04:42:36 +00:00
Updated Rector to commit caf08c4efa0c3351a9d899e568ded816bacd1993
caf08c4efa
Skip `__construct()` in BoolReturnTypeFromStrictScalarReturnsRector (#5133)
This commit is contained in:
parent
d232b29090
commit
649f0f5ffb
|
@ -26,16 +26,19 @@ use PHPStan\Reflection\ReflectionProvider;
|
||||||
use PHPStan\Type\BooleanType;
|
use PHPStan\Type\BooleanType;
|
||||||
use Rector\Core\PhpParser\Node\BetterNodeFinder;
|
use Rector\Core\PhpParser\Node\BetterNodeFinder;
|
||||||
use Rector\Core\PhpParser\Node\Value\ValueResolver;
|
use Rector\Core\PhpParser\Node\Value\ValueResolver;
|
||||||
use Rector\Core\Rector\AbstractRector;
|
use PHPStan\Analyser\Scope;
|
||||||
|
use Rector\Core\Rector\AbstractScopeAwareRector;
|
||||||
|
use Rector\Core\ValueObject\MethodName;
|
||||||
use Rector\Core\ValueObject\PhpVersionFeature;
|
use Rector\Core\ValueObject\PhpVersionFeature;
|
||||||
use Rector\TypeDeclaration\NodeAnalyzer\ReturnAnalyzer;
|
use Rector\TypeDeclaration\NodeAnalyzer\ReturnAnalyzer;
|
||||||
|
use Rector\VendorLocker\NodeVendorLocker\ClassMethodReturnTypeOverrideGuard;
|
||||||
use Rector\VersionBonding\Contract\MinPhpVersionInterface;
|
use Rector\VersionBonding\Contract\MinPhpVersionInterface;
|
||||||
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
|
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
|
||||||
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
|
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
|
||||||
/**
|
/**
|
||||||
* @see \Rector\Tests\TypeDeclaration\Rector\ClassMethod\BoolReturnTypeFromStrictScalarReturnsRector\BoolReturnTypeFromStrictScalarReturnsRectorTest
|
* @see \Rector\Tests\TypeDeclaration\Rector\ClassMethod\BoolReturnTypeFromStrictScalarReturnsRector\BoolReturnTypeFromStrictScalarReturnsRectorTest
|
||||||
*/
|
*/
|
||||||
final class BoolReturnTypeFromStrictScalarReturnsRector extends AbstractRector implements MinPhpVersionInterface
|
final class BoolReturnTypeFromStrictScalarReturnsRector extends AbstractScopeAwareRector implements MinPhpVersionInterface
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @readonly
|
* @readonly
|
||||||
|
@ -57,12 +60,18 @@ final class BoolReturnTypeFromStrictScalarReturnsRector extends AbstractRector i
|
||||||
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder
|
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder
|
||||||
*/
|
*/
|
||||||
private $betterNodeFinder;
|
private $betterNodeFinder;
|
||||||
public function __construct(ReturnAnalyzer $returnAnalyzer, ReflectionProvider $reflectionProvider, ValueResolver $valueResolver, BetterNodeFinder $betterNodeFinder)
|
/**
|
||||||
|
* @readonly
|
||||||
|
* @var \Rector\VendorLocker\NodeVendorLocker\ClassMethodReturnTypeOverrideGuard
|
||||||
|
*/
|
||||||
|
private $classMethodReturnTypeOverrideGuard;
|
||||||
|
public function __construct(ReturnAnalyzer $returnAnalyzer, ReflectionProvider $reflectionProvider, ValueResolver $valueResolver, BetterNodeFinder $betterNodeFinder, ClassMethodReturnTypeOverrideGuard $classMethodReturnTypeOverrideGuard)
|
||||||
{
|
{
|
||||||
$this->returnAnalyzer = $returnAnalyzer;
|
$this->returnAnalyzer = $returnAnalyzer;
|
||||||
$this->reflectionProvider = $reflectionProvider;
|
$this->reflectionProvider = $reflectionProvider;
|
||||||
$this->valueResolver = $valueResolver;
|
$this->valueResolver = $valueResolver;
|
||||||
$this->betterNodeFinder = $betterNodeFinder;
|
$this->betterNodeFinder = $betterNodeFinder;
|
||||||
|
$this->classMethodReturnTypeOverrideGuard = $classMethodReturnTypeOverrideGuard;
|
||||||
}
|
}
|
||||||
public function getRuleDefinition() : RuleDefinition
|
public function getRuleDefinition() : RuleDefinition
|
||||||
{
|
{
|
||||||
|
@ -104,9 +113,9 @@ CODE_SAMPLE
|
||||||
/**
|
/**
|
||||||
* @param ClassMethod|Function_|Closure $node
|
* @param ClassMethod|Function_|Closure $node
|
||||||
*/
|
*/
|
||||||
public function refactor(Node $node) : ?Node
|
public function refactorWithScope(Node $node, Scope $scope) : ?Node
|
||||||
{
|
{
|
||||||
if ($node->returnType instanceof Node) {
|
if ($this->shouldSkip($node, $scope)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
$returns = $this->betterNodeFinder->findInstancesOfInFunctionLikeScoped($node, Return_::class);
|
$returns = $this->betterNodeFinder->findInstancesOfInFunctionLikeScoped($node, Return_::class);
|
||||||
|
@ -116,6 +125,19 @@ CODE_SAMPLE
|
||||||
$node->returnType = new Identifier('bool');
|
$node->returnType = new Identifier('bool');
|
||||||
return $node;
|
return $node;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* @param ClassMethod|Function_|Closure $node
|
||||||
|
*/
|
||||||
|
private function shouldSkip(Node $node, Scope $scope) : bool
|
||||||
|
{
|
||||||
|
if ($node->returnType instanceof Node) {
|
||||||
|
return \true;
|
||||||
|
}
|
||||||
|
if ($node instanceof ClassMethod && $this->classMethodReturnTypeOverrideGuard->shouldSkipClassMethod($node, $scope)) {
|
||||||
|
return \true;
|
||||||
|
}
|
||||||
|
return \false;
|
||||||
|
}
|
||||||
public function provideMinPhpVersion() : int
|
public function provideMinPhpVersion() : int
|
||||||
{
|
{
|
||||||
return PhpVersionFeature::SCALAR_TYPES;
|
return PhpVersionFeature::SCALAR_TYPES;
|
||||||
|
|
|
@ -19,12 +19,12 @@ final class VersionResolver
|
||||||
* @api
|
* @api
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
public const PACKAGE_VERSION = '8179073d77b744e70404ec57a02ac730a877516a';
|
public const PACKAGE_VERSION = 'caf08c4efa0c3351a9d899e568ded816bacd1993';
|
||||||
/**
|
/**
|
||||||
* @api
|
* @api
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
public const RELEASE_DATE = '2023-10-06 15:48:02';
|
public const RELEASE_DATE = '2023-10-06 16:30:14';
|
||||||
/**
|
/**
|
||||||
* @var int
|
* @var int
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue
Block a user