Updated Rector to commit 3d71ae36b00e22fb5430e1812af95182c0e58904

3d71ae36b0 [TypeDeclaration] Skip re-assign with call and use as arg on StrictArrayParamDimFetchRector (#5434)
This commit is contained in:
Tomas Votruba 2024-01-05 13:43:19 +00:00
parent b433dedda4
commit 2b45fbe814
2 changed files with 33 additions and 4 deletions

View File

@ -6,8 +6,10 @@ namespace Rector\TypeDeclaration\Rector\ClassMethod;
use PhpParser\Node;
use PhpParser\Node\Expr;
use PhpParser\Node\Expr\ArrayDimFetch;
use PhpParser\Node\Expr\Assign;
use PhpParser\Node\Expr\AssignOp\Coalesce as AssignOpCoalesce;
use PhpParser\Node\Expr\BinaryOp\Coalesce;
use PhpParser\Node\Expr\CallLike;
use PhpParser\Node\Expr\Cast\Array_;
use PhpParser\Node\Expr\Closure;
use PhpParser\Node\Expr\Empty_;
@ -179,7 +181,34 @@ CODE_SAMPLE
if ($nodeToCheck instanceof Variable && $this->isName($nodeToCheck, $paramName)) {
return \true;
}
return $this->isEmptyOrEchoedOrCasted($node, $paramName);
if ($this->isEmptyOrEchoedOrCasted($node, $paramName)) {
return \true;
}
return $this->isReassignAndUseAsArg($node, $paramName);
}
private function isReassignAndUseAsArg(Node $node, string $paramName) : bool
{
if (!$node instanceof Assign) {
return \false;
}
if (!$node->var instanceof Variable) {
return \false;
}
if (!$this->isName($node->var, $paramName)) {
return \false;
}
if (!$node->expr instanceof CallLike) {
return \false;
}
if ($node->expr->isFirstClassCallable()) {
return \false;
}
foreach ($node->expr->getArgs() as $arg) {
if ($arg->value instanceof Variable && $this->isName($arg->value, $paramName)) {
return \true;
}
}
return \false;
}
private function isEmptyOrEchoedOrCasted(Node $node, string $paramName) : bool
{
@ -189,7 +218,7 @@ CODE_SAMPLE
if ($this->isEchoed($node, $paramName)) {
return \true;
}
return $node instanceof Array_ && $node->expr instanceof Variable && $node->expr->name === $paramName;
return $node instanceof Array_ && $node->expr instanceof Variable && $this->isName($node->expr, $paramName);
}
private function isMethodCallOrArrayDimFetch(string $paramName, ?Node $node) : bool
{

View File

@ -19,12 +19,12 @@ final class VersionResolver
* @api
* @var string
*/
public const PACKAGE_VERSION = 'd4f6b91f922bd52289d923aff07691d07e455cb1';
public const PACKAGE_VERSION = '3d71ae36b00e22fb5430e1812af95182c0e58904';
/**
* @api
* @var string
*/
public const RELEASE_DATE = '2024-01-05 13:11:18';
public const RELEASE_DATE = '2024-01-05 20:40:58';
/**
* @var int
*/