*/ public function register() { return [\T_SWITCH]; } /** * Processes this test, when one of its tokens is encountered. * * @since 7.0.0 * * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. * @param int $stackPtr The position of the current token * in the stack passed in $tokens. * * @return void */ public function process(File $phpcsFile, $stackPtr) { if (ScannedCode::shouldRunOnOrAbove('7.0') === false) { return; } $tokens = $phpcsFile->getTokens(); if (isset($tokens[$stackPtr]['scope_closer']) === false) { return; } $defaultToken = $stackPtr; $defaultCount = 0; $targetLevel = $tokens[$stackPtr]['level'] + 1; while ($defaultCount < 2 && ($defaultToken = $phpcsFile->findNext([\T_DEFAULT], $defaultToken + 1, $tokens[$stackPtr]['scope_closer'])) !== false ) { // Same level or one below (= two default cases after each other). if ($tokens[$defaultToken]['level'] === $targetLevel || $tokens[$defaultToken]['level'] === ($targetLevel + 1) ) { ++$defaultCount; } } if ($defaultCount > 1) { $phpcsFile->addError( 'Switch statements can not have multiple default blocks since PHP 7.0', $stackPtr, 'Found' ); } } }