function TraitUseSpacingSniff::checkLinesBetweenUses
*
Parameters
list<int> $usePointers:
1 call to TraitUseSpacingSniff::checkLinesBetweenUses()
- TraitUseSpacingSniff::process in vendor/
slevomat/ coding-standard/ SlevomatCodingStandard/ Sniffs/ Classes/ TraitUseSpacingSniff.php - * @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint *
File
-
vendor/
slevomat/ coding-standard/ SlevomatCodingStandard/ Sniffs/ Classes/ TraitUseSpacingSniff.php, line 217
Class
Namespace
SlevomatCodingStandard\Sniffs\ClassesCode
private function checkLinesBetweenUses(File $phpcsFile, array $usePointers) : void {
if (count($usePointers) === 1) {
return;
}
$tokens = $phpcsFile->getTokens();
$previousUsePointer = null;
foreach ($usePointers as $usePointer) {
if ($previousUsePointer === null) {
$previousUsePointer = $usePointer;
continue;
}
/** @var int $previousUseEndPointer */
$previousUseEndPointer = TokenHelper::findNextLocal($phpcsFile, [
T_SEMICOLON,
T_OPEN_CURLY_BRACKET,
], $previousUsePointer + 1);
if ($tokens[$previousUseEndPointer]['code'] === T_OPEN_CURLY_BRACKET) {
/** @var int $previousUseEndPointer */
$previousUseEndPointer = $tokens[$previousUseEndPointer]['bracket_closer'];
}
$useStartPointer = $usePointer;
$pointerBeforeUse = TokenHelper::findPreviousNonWhitespace($phpcsFile, $usePointer - 1);
if (in_array($tokens[$pointerBeforeUse]['code'], Tokens::$commentTokens, true)) {
$useStartPointer = TokenHelper::findNext($phpcsFile, Tokens::$commentTokens, TokenHelper::findPreviousEffective($phpcsFile, $pointerBeforeUse - 1) + 1);
}
$actualLinesCountAfterPreviousUse = $tokens[$useStartPointer]['line'] - $tokens[$previousUseEndPointer]['line'] - 1;
if ($actualLinesCountAfterPreviousUse === $this->linesCountBetweenUses) {
$previousUsePointer = $usePointer;
continue;
}
$errorParameters = [
sprintf('Expected %d line%s between same types of use statement, found %d.', $this->linesCountBetweenUses, $this->linesCountBetweenUses === 1 ? '' : 's', $actualLinesCountAfterPreviousUse),
$usePointer,
self::CODE_INCORRECT_LINES_COUNT_BETWEEN_USES,
];
$pointerBeforeUse = TokenHelper::findPreviousEffective($phpcsFile, $usePointer - 1);
if ($previousUseEndPointer !== $pointerBeforeUse) {
$phpcsFile->addError(...$errorParameters);
$previousUsePointer = $usePointer;
continue;
}
$fix = $phpcsFile->addFixableError(...$errorParameters);
if (!$fix) {
$previousUsePointer = $usePointer;
continue;
}
$pointerBeforeIndentation = TokenHelper::findPreviousContent($phpcsFile, T_WHITESPACE, $phpcsFile->eolChar, $usePointer, $previousUseEndPointer);
$phpcsFile->fixer
->beginChangeset();
if ($pointerBeforeIndentation !== null) {
FixerHelper::removeBetweenIncluding($phpcsFile, $previousUseEndPointer + 1, $pointerBeforeIndentation);
}
for ($i = 0; $i <= $this->linesCountBetweenUses; $i++) {
$phpcsFile->fixer
->addNewline($previousUseEndPointer);
}
$phpcsFile->fixer
->endChangeset();
$previousUsePointer = $usePointer;
}
}