Skip to content

Commit b62e40e

Browse files
committed
BlockControlStructureSpacingSniff: Fixed false positive
1 parent 6de71d4 commit b62e40e

File tree

2 files changed

+17
-4
lines changed

2 files changed

+17
-4
lines changed

SlevomatCodingStandard/Sniffs/ControlStructures/AbstractControlStructureSpacing.php

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -377,18 +377,21 @@ private function findControlStructureEnd(File $phpcsFile, int $controlStructureP
377377

378378
if (in_array($tokens[$controlStructurePointer]['code'], [T_CASE, T_DEFAULT], true)) {
379379
$switchPointer = TokenHelper::findPrevious($phpcsFile, T_SWITCH, $controlStructurePointer - 1);
380-
$pointerAfterControlStructureEnd = TokenHelper::findNext(
380+
381+
$pointers = TokenHelper::findNextAll(
381382
$phpcsFile,
382383
[T_CASE, T_DEFAULT],
383384
$controlStructurePointer + 1,
384385
$tokens[$switchPointer]['scope_closer']
385386
);
386387

387-
if ($pointerAfterControlStructureEnd === null) {
388-
return TokenHelper::findPreviousExcluding($phpcsFile, T_WHITESPACE, $tokens[$switchPointer]['scope_closer'] - 1);
388+
foreach ($pointers as $pointer) {
389+
if (TokenHelper::findPrevious($phpcsFile, T_SWITCH, $pointer - 1) === $switchPointer) {
390+
return TokenHelper::findPreviousExcluding($phpcsFile, T_WHITESPACE, $pointer - 1);
391+
}
389392
}
390393

391-
return TokenHelper::findPreviousExcluding($phpcsFile, T_WHITESPACE, $pointerAfterControlStructureEnd - 1);
394+
return TokenHelper::findPreviousExcluding($phpcsFile, T_WHITESPACE, $tokens[$switchPointer]['scope_closer'] - 1);
392395
}
393396

394397
$nextPointer = TokenHelper::findNext(

tests/Sniffs/ControlStructures/data/blockControlStructureSpacingWithDefaultSettingsNoErrors.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,16 @@ function ($foo) {
9090
}
9191
};
9292

93+
function () {
94+
switch (true) {
95+
default:
96+
switch (true) {
97+
default:
98+
break;
99+
}
100+
}
101+
};
102+
93103
switch ($foo) {
94104
case 'bar':
95105

0 commit comments

Comments
 (0)