Skip to content

Commit

Permalink
[CodeQuality] Handle all if,elseif,else no bracket on CompleteMissing…
Browse files Browse the repository at this point in the history
…IfElseBracketRector (#5129)
  • Loading branch information
samsonasik committed Oct 6, 2023
1 parent 12184ca commit 0c9fac5
Show file tree
Hide file tree
Showing 4 changed files with 95 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
<?php

namespace Rector\Tests\CodeQuality\Rector\If_\CompleteMissingIfElseBracketRector\Fixture;

class AllNoBracket
{
public function run($value)
{
if ($value)
return 1;
elseif (rand(0, 1))
return 2;
else
return 3;
}
}

?>
-----
<?php

namespace Rector\Tests\CodeQuality\Rector\If_\CompleteMissingIfElseBracketRector\Fixture;

class AllNoBracket
{
public function run($value)
{
if ($value) {
return 1;
} elseif (rand(0, 1)) {
return 2;
} else {
return 3;
}
}
}

?>
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
<?php

namespace Rector\Tests\CodeQuality\Rector\If_\CompleteMissingIfElseBracketRector\Fixture;

class MissingBracketOnElseIfAndElse
{
public function run($value)
{
if ($value) {
return 1;
} elseif (rand(0, 1))
return 2;
else
return 3;
}
}

?>
-----
<?php

namespace Rector\Tests\CodeQuality\Rector\If_\CompleteMissingIfElseBracketRector\Fixture;

class MissingBracketOnElseIfAndElse
{
public function run($value)
{
if ($value) {
return 1;
} elseif (rand(0, 1)) {
return 2;
}
else {
return 3;
}
}
}

?>
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?php

namespace Rector\Tests\CodeQuality\Rector\If_\CompleteMissingIfElseBracketRector\Fixture;

class SkipDirectSemicolon
{
public function run($value)
{
if ($value);

echo 'something';
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,11 @@ public function refactor(Node $node): ?Node
private function isIfConditionFollowedByOpeningCurlyBracket(If_|ElseIf_|Else_ $if, array $oldTokens): bool
{
for ($i = $if->getStartTokenPos(); $i < $if->getEndTokenPos(); ++$i) {
if ($oldTokens[$i] !== ')') {
if (! isset($oldTokens[$i + 1])) {
break;
}

if ($oldTokens[$i] !== ')' && ! is_array($oldTokens[$i+1])) {
if ($oldTokens[$i] === ';') {
// all good
return true;
Expand Down

0 comments on commit 0c9fac5

Please sign in to comment.