Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. TraitUseSpacingSniff.php

function TraitUseSpacingSniff::checkLinesAfterLastUse

1 call to TraitUseSpacingSniff::checkLinesAfterLastUse()
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 156

Class

TraitUseSpacingSniff

Namespace

SlevomatCodingStandard\Sniffs\Classes

Code

private function checkLinesAfterLastUse(File $phpcsFile, int $lastUsePointer) : void {
    $tokens = $phpcsFile->getTokens();
    
    /** @var int $lastUseEndPointer */
    $lastUseEndPointer = TokenHelper::findNextLocal($phpcsFile, [
        T_SEMICOLON,
        T_OPEN_CURLY_BRACKET,
    ], $lastUsePointer + 1);
    if ($tokens[$lastUseEndPointer]['code'] === T_OPEN_CURLY_BRACKET) {
        $lastUseEndPointer = $tokens[$lastUseEndPointer]['bracket_closer'];
    }
    $pointerAfterLastUse = TokenHelper::findNextEffective($phpcsFile, $lastUseEndPointer + 1);
    $isAtTheEndOfClass = $tokens[$pointerAfterLastUse]['code'] === T_CLOSE_CURLY_BRACKET;
    $whitespaceEnd = TokenHelper::findNextNonWhitespace($phpcsFile, $lastUseEndPointer + 1) - 1;
    if ($lastUseEndPointer !== $whitespaceEnd && $tokens[$whitespaceEnd]['content'] !== $phpcsFile->eolChar) {
        $lastEolPointer = TokenHelper::findPreviousContent($phpcsFile, T_WHITESPACE, $phpcsFile->eolChar, $whitespaceEnd - 1, $lastUseEndPointer);
        $whitespaceEnd = $lastEolPointer ?? $lastUseEndPointer;
    }
    $whitespaceAfterLastUse = TokenHelper::getContent($phpcsFile, $lastUseEndPointer + 1, $whitespaceEnd);
    $requiredLinesCountAfterLastUse = $isAtTheEndOfClass ? $this->linesCountAfterLastUseWhenLastInClass : $this->linesCountAfterLastUse;
    $actualLinesCountAfterLastUse = substr_count($whitespaceAfterLastUse, $phpcsFile->eolChar) - 1;
    if ($actualLinesCountAfterLastUse === $requiredLinesCountAfterLastUse) {
        return;
    }
    $fix = $phpcsFile->addFixableError(sprintf('Expected %d line%s after last use statement, found %d.', $requiredLinesCountAfterLastUse, $requiredLinesCountAfterLastUse === 1 ? '' : 's', $actualLinesCountAfterLastUse), $lastUsePointer, self::CODE_INCORRECT_LINES_COUNT_AFTER_LAST_USE);
    if (!$fix) {
        return;
    }
    $phpcsFile->fixer
        ->beginChangeset();
    FixerHelper::removeBetweenIncluding($phpcsFile, $lastUseEndPointer + 1, $whitespaceEnd);
    for ($i = 0; $i <= $requiredLinesCountAfterLastUse; $i++) {
        $phpcsFile->fixer
            ->addNewline($lastUseEndPointer);
    }
    $phpcsFile->fixer
        ->endChangeset();
}

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal