Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit fe85a5d

Browse files
authored
fix: BracesPositionFixer - do not create two consecutive whitespace tokens (#8496)
1 parent 7da98b6 commit fe85a5d

2 files changed

Lines changed: 30 additions & 4 deletions

File tree

src/Fixer/Basic/BracesPositionFixer.php

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -362,13 +362,21 @@ protected function applyFix(\SplFileInfo $file, Tokens $tokens): void
362362
}
363363
}
364364

365-
for (; $openBraceIndex !== $moveBraceToIndex; $openBraceIndex += $delta) {
365+
for ($i = $openBraceIndex; $i !== $moveBraceToIndex; $i += $delta) {
366366
/** @var Token $siblingToken */
367-
$siblingToken = $tokens[$openBraceIndex + $delta];
368-
$tokens[$openBraceIndex] = $siblingToken;
367+
$siblingToken = $tokens[$i + $delta];
368+
$tokens[$i] = $siblingToken;
369369
}
370370

371-
$tokens[$openBraceIndex] = $movedToken;
371+
$tokens[$i] = $movedToken;
372+
373+
if ($tokens[$openBraceIndex]->isWhitespace() && $tokens[$openBraceIndex + 1]->isWhitespace()) {
374+
$tokens[$openBraceIndex] = new Token([
375+
T_WHITESPACE,
376+
$tokens[$openBraceIndex]->getContent().$tokens[$openBraceIndex + 1]->getContent(),
377+
]);
378+
$tokens->clearAt($openBraceIndex + 1);
379+
}
372380

373381
$openBraceIndex = $moveBraceToIndex;
374382
}

tests/Fixer/Basic/BracesPositionFixerTest.php

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -741,6 +741,24 @@ public function example(){ // example
741741
}
742742
',
743743
];
744+
745+
yield [
746+
<<<'PHP'
747+
<?php
748+
if ($x) {//
749+
750+
f();
751+
}
752+
PHP,
753+
<<<'PHP'
754+
<?php
755+
if ($x)//
756+
{
757+
758+
f();
759+
}
760+
PHP,
761+
];
744762
}
745763

746764
/**

0 commit comments

Comments
 (0)