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

Breadcrumb

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

function EarlyExitSniff::findEarlyExitInScope

3 calls to EarlyExitSniff::findEarlyExitInScope()
EarlyExitSniff::isEarlyExitInScope in vendor/slevomat/coding-standard/SlevomatCodingStandard/Sniffs/ControlStructures/EarlyExitSniff.php
EarlyExitSniff::processElse in vendor/slevomat/coding-standard/SlevomatCodingStandard/Sniffs/ControlStructures/EarlyExitSniff.php
EarlyExitSniff::processElseIf in vendor/slevomat/coding-standard/SlevomatCodingStandard/Sniffs/ControlStructures/EarlyExitSniff.php

File

vendor/slevomat/coding-standard/SlevomatCodingStandard/Sniffs/ControlStructures/EarlyExitSniff.php, line 391

Class

EarlyExitSniff

Namespace

SlevomatCodingStandard\Sniffs\ControlStructures

Code

private function findEarlyExitInScope(File $phpcsFile, int $startPointer, int $endPointer) : ?int {
    $tokens = $phpcsFile->getTokens();
    $ifPointers = TokenHelper::findNextAll($phpcsFile, T_IF, $startPointer + 1, $endPointer);
    foreach ($ifPointers as $ifPointer) {
        if ($tokens[$ifPointer]['level'] - 1 !== $tokens[$startPointer]['level']) {
            continue;
        }
        $conditionPointers = $this->getAllConditionsPointers($phpcsFile, $ifPointer);
        foreach ($conditionPointers as $conditionPointer) {
            if ($this->findEarlyExitInScope($phpcsFile, $tokens[$conditionPointer]['scope_opener'], $tokens[$conditionPointer]['scope_closer']) === null) {
                return null;
            }
        }
    }
    $lastSemicolonInScopePointer = TokenHelper::findPreviousEffective($phpcsFile, $endPointer - 1, $startPointer);
    return $tokens[$lastSemicolonInScopePointer]['code'] === T_SEMICOLON ? TokenHelper::findPreviousLocal($phpcsFile, TokenHelper::$earlyExitTokenCodes, $lastSemicolonInScopePointer - 1, $startPointer) : null;
}
RSS feed
Powered by Drupal