|
@@ -52,14 +52,7 @@ final class NoAlternativeSyntaxFixer extends AbstractFixer
|
|
|
*/
|
|
|
public function isCandidate(Tokens $tokens)
|
|
|
{
|
|
|
- return $tokens->isAnyTokenKindsFound(
|
|
|
- [
|
|
|
- T_ENDIF,
|
|
|
- T_ENDWHILE,
|
|
|
- T_ENDFOREACH,
|
|
|
- T_ENDFOR,
|
|
|
- ]
|
|
|
- );
|
|
|
+ return $tokens->hasAlternativeSyntax();
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -108,42 +101,47 @@ final class NoAlternativeSyntaxFixer extends AbstractFixer
|
|
|
*/
|
|
|
private function fixOpenCloseControls($index, Token $token, Tokens $tokens)
|
|
|
{
|
|
|
- if ($token->isGivenKind([T_IF, T_FOREACH, T_WHILE, T_FOR])) {
|
|
|
+ if ($token->isGivenKind([T_IF, T_FOREACH, T_WHILE, T_FOR, T_SWITCH, T_DECLARE])) {
|
|
|
$openIndex = $tokens->getNextTokenOfKind($index, ['(']);
|
|
|
$closeIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS_BRACE, $openIndex);
|
|
|
- $afterParenthesisIndex = $tokens->getNextNonWhitespace($closeIndex);
|
|
|
+ $afterParenthesisIndex = $tokens->getNextMeaningfulToken($closeIndex);
|
|
|
$afterParenthesis = $tokens[$afterParenthesisIndex];
|
|
|
|
|
|
if (!$afterParenthesis->equals(':')) {
|
|
|
return;
|
|
|
}
|
|
|
+
|
|
|
$items = [];
|
|
|
+
|
|
|
if (!$tokens[$afterParenthesisIndex - 1]->isWhitespace()) {
|
|
|
$items[] = new Token([T_WHITESPACE, ' ']);
|
|
|
}
|
|
|
+
|
|
|
$items[] = new Token('{');
|
|
|
|
|
|
if (!$tokens[$afterParenthesisIndex + 1]->isWhitespace()) {
|
|
|
$items[] = new Token([T_WHITESPACE, ' ']);
|
|
|
}
|
|
|
+
|
|
|
$tokens->clearAt($afterParenthesisIndex);
|
|
|
$tokens->insertAt($afterParenthesisIndex, $items);
|
|
|
}
|
|
|
|
|
|
- if (!$token->isGivenKind([T_ENDIF, T_ENDFOREACH, T_ENDWHILE, T_ENDFOR])) {
|
|
|
+ if (!$token->isGivenKind([T_ENDIF, T_ENDFOREACH, T_ENDWHILE, T_ENDFOR, T_ENDSWITCH, T_ENDDECLARE])) {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
$nextTokenIndex = $tokens->getNextMeaningfulToken($index);
|
|
|
$nextToken = $tokens[$nextTokenIndex];
|
|
|
$tokens[$index] = new Token('}');
|
|
|
+
|
|
|
if ($nextToken->equals(';')) {
|
|
|
$tokens->clearAt($nextTokenIndex);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * Handle the else:.
|
|
|
+ * Handle the else: cases.
|
|
|
*
|
|
|
* @param int $index the index of the token being processed
|
|
|
* @param Token $token the token being processed
|
|
@@ -157,6 +155,7 @@ final class NoAlternativeSyntaxFixer extends AbstractFixer
|
|
|
|
|
|
$tokenAfterElseIndex = $tokens->getNextMeaningfulToken($index);
|
|
|
$tokenAfterElse = $tokens[$tokenAfterElseIndex];
|
|
|
+
|
|
|
if (!$tokenAfterElse->equals(':')) {
|
|
|
return;
|
|
|
}
|
|
@@ -176,9 +175,11 @@ final class NoAlternativeSyntaxFixer extends AbstractFixer
|
|
|
if (!$token->isGivenKind(T_ELSEIF)) {
|
|
|
return;
|
|
|
}
|
|
|
+
|
|
|
$parenthesisEndIndex = $this->findParenthesisEnd($tokens, $index);
|
|
|
$tokenAfterParenthesisIndex = $tokens->getNextMeaningfulToken($parenthesisEndIndex);
|
|
|
$tokenAfterParenthesis = $tokens[$tokenAfterParenthesisIndex];
|
|
|
+
|
|
|
if (!$tokenAfterParenthesis->equals(':')) {
|
|
|
return;
|
|
|
}
|
|
@@ -187,7 +188,7 @@ final class NoAlternativeSyntaxFixer extends AbstractFixer
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * Add opening and closing braces to the else: and elseif: .
|
|
|
+ * Add opening and closing braces to the else: and elseif: cases.
|
|
|
*
|
|
|
* @param Tokens $tokens the tokens collection
|
|
|
* @param Token $token the current token
|
|
@@ -201,9 +202,11 @@ final class NoAlternativeSyntaxFixer extends AbstractFixer
|
|
|
new Token([T_WHITESPACE, ' ']),
|
|
|
$token,
|
|
|
];
|
|
|
+
|
|
|
if (!$tokens[$index + 1]->isWhitespace()) {
|
|
|
$items[] = new Token([T_WHITESPACE, ' ']);
|
|
|
}
|
|
|
+
|
|
|
$tokens->clearAt($index);
|
|
|
$tokens->insertAt(
|
|
|
$index,
|
|
@@ -214,6 +217,7 @@ final class NoAlternativeSyntaxFixer extends AbstractFixer
|
|
|
$colonIndex += \count($items);
|
|
|
|
|
|
$items = [new Token('{')];
|
|
|
+
|
|
|
if (!$tokens[$colonIndex + 1]->isWhitespace()) {
|
|
|
$items[] = new Token([T_WHITESPACE, ' ']);
|
|
|
}
|