Skip to content

Commit dc3a19c

Browse files
authored
[CodeQuality] Skip ArrayDimFetch with BitwiseXor on CombinedAssignRector (#7590)
1 parent 52cb427 commit dc3a19c

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Rector\Tests\CodeQuality\Rector\Assign\CombinedAssignRector\Fixture;
6+
7+
class skipXorArrayDimFetch
8+
{
9+
public function run()
10+
{
11+
$string = 'Hello world';
12+
$string[5] = $string[5] ^ '\x06';
13+
echo $string, "\n";
14+
}
15+
}
16+
17+
?>

rules/CodeQuality/Rector/Assign/CombinedAssignRector.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,10 @@
55
namespace Rector\CodeQuality\Rector\Assign;
66

77
use PhpParser\Node;
8+
use PhpParser\Node\Expr\ArrayDimFetch;
89
use PhpParser\Node\Expr\Assign;
910
use PhpParser\Node\Expr\BinaryOp;
11+
use PhpParser\Node\Expr\BinaryOp\BitwiseXor;
1012
use Rector\PhpParser\Node\AssignAndBinaryMap;
1113
use Rector\Rector\AbstractRector;
1214
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
@@ -54,6 +56,12 @@ public function refactor(Node $node): ?Node
5456
return null;
5557
}
5658

59+
if ($binaryNode->left instanceof ArrayDimFetch &&
60+
$node->expr instanceof BitwiseXor
61+
) {
62+
return null;
63+
}
64+
5765
$assignClass = $this->assignAndBinaryMap->getAlternative($binaryNode);
5866
if ($assignClass === null) {
5967
return null;

0 commit comments

Comments
 (0)