Skip to content

Commit 0111ddf

Browse files
committed
Updated Rector to commit 60689ed3991175d516d7731d8bcfea4e9e62dbb7
rectorphp/rector-src@60689ed Use ValueResolver where applicable (#7013)
1 parent e21c061 commit 0111ddf

5 files changed

Lines changed: 48 additions & 80 deletions

File tree

rules/Php84/Rector/Foreach_/ForeachToArrayAllRector.php

Lines changed: 11 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,17 @@
44
namespace Rector\Php84\Rector\Foreach_;
55

66
use PhpParser\Node;
7-
use PhpParser\Node\Expr;
87
use PhpParser\Node\Expr\ArrowFunction;
98
use PhpParser\Node\Expr\Assign;
109
use PhpParser\Node\Expr\BooleanNot;
11-
use PhpParser\Node\Expr\ConstFetch;
1210
use PhpParser\Node\Expr\Variable;
1311
use PhpParser\Node\Param;
1412
use PhpParser\Node\Stmt\Break_;
1513
use PhpParser\Node\Stmt\Expression;
1614
use PhpParser\Node\Stmt\Foreach_;
1715
use PhpParser\Node\Stmt\If_;
1816
use Rector\Contract\PhpParser\Node\StmtsAwareInterface;
17+
use Rector\PhpParser\Node\Value\ValueResolver;
1918
use Rector\Rector\AbstractRector;
2019
use Rector\ValueObject\PhpVersionFeature;
2120
use Rector\VersionBonding\Contract\MinPhpVersionInterface;
@@ -26,6 +25,14 @@
2625
*/
2726
final class ForeachToArrayAllRector extends AbstractRector implements MinPhpVersionInterface
2827
{
28+
/**
29+
* @readonly
30+
*/
31+
private ValueResolver $valueResolver;
32+
public function __construct(ValueResolver $valueResolver)
33+
{
34+
$this->valueResolver = $valueResolver;
35+
}
2936
public function getRuleDefinition() : RuleDefinition
3037
{
3138
return new RuleDefinition('Replace foreach with boolean assignment and break with array_all', [new CodeSample(<<<'CODE_SAMPLE'
@@ -70,7 +77,7 @@ public function refactor(Node $node) : ?Node
7077
}
7178
$foreach = $stmt;
7279
$prevAssign = $prevStmt->expr;
73-
if (!$this->isTrue($prevAssign->expr)) {
80+
if (!$this->valueResolver->isTrue($prevAssign->expr)) {
7481
continue;
7582
}
7683
if (!$prevAssign->var instanceof Variable) {
@@ -82,12 +89,6 @@ public function refactor(Node $node) : ?Node
8289
}
8390
/** @var If_ $firstNodeInsideForeach */
8491
$firstNodeInsideForeach = $foreach->stmts[0];
85-
/** @var Expression $assignmentStmt */
86-
$assignmentStmt = $firstNodeInsideForeach->stmts[0];
87-
/** @var Assign $assignment */
88-
$assignment = $assignmentStmt->expr;
89-
/** @var Break_ $breakStmt */
90-
$breakStmt = $firstNodeInsideForeach->stmts[1];
9192
$condition = $firstNodeInsideForeach->cond;
9293
$valueParam = $foreach->valueVar;
9394
if (!$valueParam instanceof Variable) {
@@ -128,20 +129,6 @@ private function isValidForeachStructure(Foreach_ $foreach, Variable $assignedVa
128129
if (!$this->nodeComparator->areNodesEqual($assignment->var, $assignedVariable)) {
129130
return \false;
130131
}
131-
return $this->isFalse($assignment->expr);
132-
}
133-
private function isFalse(Expr $expr) : bool
134-
{
135-
if (!$expr instanceof ConstFetch) {
136-
return \false;
137-
}
138-
return $this->isName($expr->name, 'false');
139-
}
140-
private function isTrue(Expr $expr) : bool
141-
{
142-
if (!$expr instanceof ConstFetch) {
143-
return \false;
144-
}
145-
return $this->isName($expr->name, 'true');
132+
return $this->valueResolver->isFalse($assignment->expr);
146133
}
147134
}

rules/Php84/Rector/Foreach_/ForeachToArrayAnyRector.php

Lines changed: 11 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,16 @@
44
namespace Rector\Php84\Rector\Foreach_;
55

66
use PhpParser\Node;
7-
use PhpParser\Node\Expr;
87
use PhpParser\Node\Expr\ArrowFunction;
98
use PhpParser\Node\Expr\Assign;
10-
use PhpParser\Node\Expr\ConstFetch;
119
use PhpParser\Node\Expr\Variable;
1210
use PhpParser\Node\Param;
1311
use PhpParser\Node\Stmt\Break_;
1412
use PhpParser\Node\Stmt\Expression;
1513
use PhpParser\Node\Stmt\Foreach_;
1614
use PhpParser\Node\Stmt\If_;
1715
use Rector\Contract\PhpParser\Node\StmtsAwareInterface;
16+
use Rector\PhpParser\Node\Value\ValueResolver;
1817
use Rector\Rector\AbstractRector;
1918
use Rector\ValueObject\PhpVersionFeature;
2019
use Rector\VersionBonding\Contract\MinPhpVersionInterface;
@@ -25,6 +24,14 @@
2524
*/
2625
final class ForeachToArrayAnyRector extends AbstractRector implements MinPhpVersionInterface
2726
{
27+
/**
28+
* @readonly
29+
*/
30+
private ValueResolver $valueResolver;
31+
public function __construct(ValueResolver $valueResolver)
32+
{
33+
$this->valueResolver = $valueResolver;
34+
}
2835
public function getRuleDefinition() : RuleDefinition
2936
{
3037
return new RuleDefinition('Replace foreach with boolean assignment and break with array_any', [new CodeSample(<<<'CODE_SAMPLE'
@@ -69,7 +76,7 @@ public function refactor(Node $node) : ?Node
6976
}
7077
$foreach = $stmt;
7178
$prevAssign = $prevStmt->expr;
72-
if (!$this->isFalse($prevAssign->expr)) {
79+
if (!$this->valueResolver->isFalse($prevAssign->expr)) {
7380
continue;
7481
}
7582
if (!$prevAssign->var instanceof Variable) {
@@ -81,12 +88,6 @@ public function refactor(Node $node) : ?Node
8188
}
8289
/** @var If_ $firstNodeInsideForeach */
8390
$firstNodeInsideForeach = $foreach->stmts[0];
84-
/** @var Expression $assignmentStmt */
85-
$assignmentStmt = $firstNodeInsideForeach->stmts[0];
86-
/** @var Assign $assignment */
87-
$assignment = $assignmentStmt->expr;
88-
/** @var Break_ $breakStmt */
89-
$breakStmt = $firstNodeInsideForeach->stmts[1];
9091
$condition = $firstNodeInsideForeach->cond;
9192
$valueParam = $foreach->valueVar;
9293
if (!$valueParam instanceof Variable) {
@@ -126,20 +127,6 @@ private function isValidForeachStructure(Foreach_ $foreach, Variable $assignedVa
126127
if (!$this->nodeComparator->areNodesEqual($assignment->var, $assignedVariable)) {
127128
return \false;
128129
}
129-
return $this->isTrue($assignment->expr);
130-
}
131-
private function isFalse(Expr $expr) : bool
132-
{
133-
if (!$expr instanceof ConstFetch) {
134-
return \false;
135-
}
136-
return $this->isName($expr->name, 'false');
137-
}
138-
private function isTrue(Expr $expr) : bool
139-
{
140-
if (!$expr instanceof ConstFetch) {
141-
return \false;
142-
}
143-
return $this->isName($expr->name, 'true');
130+
return $this->valueResolver->isTrue($assignment->expr);
144131
}
145132
}

rules/Php84/Rector/Foreach_/ForeachToArrayFindKeyRector.php

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,16 @@
44
namespace Rector\Php84\Rector\Foreach_;
55

66
use PhpParser\Node;
7-
use PhpParser\Node\Expr;
87
use PhpParser\Node\Expr\ArrowFunction;
98
use PhpParser\Node\Expr\Assign;
10-
use PhpParser\Node\Expr\ConstFetch;
119
use PhpParser\Node\Expr\Variable;
1210
use PhpParser\Node\Param;
1311
use PhpParser\Node\Stmt\Break_;
1412
use PhpParser\Node\Stmt\Expression;
1513
use PhpParser\Node\Stmt\Foreach_;
1614
use PhpParser\Node\Stmt\If_;
1715
use Rector\Contract\PhpParser\Node\StmtsAwareInterface;
16+
use Rector\PhpParser\Node\Value\ValueResolver;
1817
use Rector\Rector\AbstractRector;
1918
use Rector\ValueObject\PhpVersionFeature;
2019
use Rector\VersionBonding\Contract\MinPhpVersionInterface;
@@ -25,6 +24,14 @@
2524
*/
2625
final class ForeachToArrayFindKeyRector extends AbstractRector implements MinPhpVersionInterface
2726
{
27+
/**
28+
* @readonly
29+
*/
30+
private ValueResolver $valueResolver;
31+
public function __construct(ValueResolver $valueResolver)
32+
{
33+
$this->valueResolver = $valueResolver;
34+
}
2835
public function getRuleDefinition() : RuleDefinition
2936
{
3037
return new RuleDefinition('Replace foreach with assignment and break with array_find_key', [new CodeSample(<<<'CODE_SAMPLE'
@@ -73,7 +80,7 @@ public function refactor(Node $node) : ?Node
7380
}
7481
$foreach = $stmt;
7582
$prevAssign = $prevStmt->expr;
76-
if (!$this->isNull($prevAssign->expr)) {
83+
if (!$this->valueResolver->isNull($prevAssign->expr)) {
7784
continue;
7885
}
7986
if (!$prevAssign->var instanceof Variable) {
@@ -85,12 +92,6 @@ public function refactor(Node $node) : ?Node
8592
}
8693
/** @var If_ $firstNodeInsideForeach */
8794
$firstNodeInsideForeach = $foreach->stmts[0];
88-
/** @var Expression $assignmentStmt */
89-
$assignmentStmt = $firstNodeInsideForeach->stmts[0];
90-
/** @var Assign $assignment */
91-
$assignment = $assignmentStmt->expr;
92-
/** @var Break_ $breakStmt */
93-
$breakStmt = $firstNodeInsideForeach->stmts[1];
9495
$condition = $firstNodeInsideForeach->cond;
9596
$valueParam = $foreach->valueVar;
9697
if (!$valueParam instanceof Variable) {
@@ -127,13 +128,9 @@ private function isValidForeachStructure(Foreach_ $foreach, Variable $assignedVa
127128
return \false;
128129
}
129130
$assignment = $assignmentStmt->expr;
130-
return !(!$this->nodeComparator->areNodesEqual($assignment->var, $assignedVariable) || !$this->nodeComparator->areNodesEqual($assignment->expr, $foreach->keyVar));
131-
}
132-
private function isNull(Expr $expr) : bool
133-
{
134-
if (!$expr instanceof ConstFetch) {
131+
if (!$this->nodeComparator->areNodesEqual($assignment->var, $assignedVariable)) {
135132
return \false;
136133
}
137-
return $this->isName($expr->name, 'null');
134+
return $this->nodeComparator->areNodesEqual($assignment->expr, $foreach->keyVar);
138135
}
139136
}

rules/Php84/Rector/Foreach_/ForeachToArrayFindRector.php

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,16 @@
44
namespace Rector\Php84\Rector\Foreach_;
55

66
use PhpParser\Node;
7-
use PhpParser\Node\Expr;
87
use PhpParser\Node\Expr\ArrowFunction;
98
use PhpParser\Node\Expr\Assign;
10-
use PhpParser\Node\Expr\ConstFetch;
119
use PhpParser\Node\Expr\Variable;
1210
use PhpParser\Node\Param;
1311
use PhpParser\Node\Stmt\Break_;
1412
use PhpParser\Node\Stmt\Expression;
1513
use PhpParser\Node\Stmt\Foreach_;
1614
use PhpParser\Node\Stmt\If_;
1715
use Rector\Contract\PhpParser\Node\StmtsAwareInterface;
16+
use Rector\PhpParser\Node\Value\ValueResolver;
1817
use Rector\Rector\AbstractRector;
1918
use Rector\ValueObject\PhpVersionFeature;
2019
use Rector\VersionBonding\Contract\MinPhpVersionInterface;
@@ -25,6 +24,14 @@
2524
*/
2625
final class ForeachToArrayFindRector extends AbstractRector implements MinPhpVersionInterface
2726
{
27+
/**
28+
* @readonly
29+
*/
30+
private ValueResolver $valueResolver;
31+
public function __construct(ValueResolver $valueResolver)
32+
{
33+
$this->valueResolver = $valueResolver;
34+
}
2835
public function getRuleDefinition() : RuleDefinition
2936
{
3037
return new RuleDefinition('Replace foreach with assignment and break with array_find', [new CodeSample(<<<'CODE_SAMPLE'
@@ -69,7 +76,7 @@ public function refactor(Node $node) : ?Node
6976
}
7077
$foreach = $stmt;
7178
$prevAssign = $prevStmt->expr;
72-
if (!$this->isNull($prevAssign->expr)) {
79+
if (!$this->valueResolver->isNull($prevAssign->expr)) {
7380
continue;
7481
}
7582
if (!$prevAssign->var instanceof Variable) {
@@ -81,12 +88,6 @@ public function refactor(Node $node) : ?Node
8188
}
8289
/** @var If_ $firstNodeInsideForeach */
8390
$firstNodeInsideForeach = $foreach->stmts[0];
84-
/** @var Expression $assignmentStmt */
85-
$assignmentStmt = $firstNodeInsideForeach->stmts[0];
86-
/** @var Assign $assignment */
87-
$assignment = $assignmentStmt->expr;
88-
/** @var Break_ $breakStmt */
89-
$breakStmt = $firstNodeInsideForeach->stmts[1];
9091
$condition = $firstNodeInsideForeach->cond;
9192
$valueParam = $foreach->valueVar;
9293
if (!$valueParam instanceof Variable) {
@@ -123,13 +124,9 @@ private function isValidForeachStructure(Foreach_ $foreach, Variable $assignedVa
123124
return \false;
124125
}
125126
$assignment = $assignmentStmt->expr;
126-
return !(!$this->nodeComparator->areNodesEqual($assignment->var, $assignedVariable) || !$this->nodeComparator->areNodesEqual($assignment->expr, $foreach->valueVar));
127-
}
128-
private function isNull(Expr $expr) : bool
129-
{
130-
if (!$expr instanceof ConstFetch) {
127+
if (!$this->nodeComparator->areNodesEqual($assignment->var, $assignedVariable)) {
131128
return \false;
132129
}
133-
return $this->isName($expr->name, 'null');
130+
return $this->nodeComparator->areNodesEqual($assignment->expr, $foreach->valueVar);
134131
}
135132
}

src/Application/VersionResolver.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@ final class VersionResolver
1919
* @api
2020
* @var string
2121
*/
22-
public const PACKAGE_VERSION = '274fabbe8b57529523a57517a4700df811abe871';
22+
public const PACKAGE_VERSION = '60689ed3991175d516d7731d8bcfea4e9e62dbb7';
2323
/**
2424
* @api
2525
* @var string
2626
*/
27-
public const RELEASE_DATE = '2025-06-22 00:41:27';
27+
public const RELEASE_DATE = '2025-06-22 09:16:07';
2828
/**
2929
* @var int
3030
*/

0 commit comments

Comments
 (0)