*/ public function register() { return [\T_INTERFACE]; } /** * Processes this test, when one of its tokens is encountered. * * @since 10.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::shouldRunOnOrBelow('8.3') === false) { return; } $properties = ObjectDeclarations::getDeclaredProperties($phpcsFile, $stackPtr); if (empty($properties)) { // There are no declared properties. return; } $skipTo = $stackPtr; foreach ($properties as $name => $ptr) { if ($skipTo > $ptr) { // Don't throw the same error multiple times for multi-property declarations. continue; } $phpcsFile->addError( 'Declaring properties in interfaces is not supported in PHP 8.3 or earlier.', $ptr, 'Found' ); $endOfStatement = $phpcsFile->findNext([\T_SEMICOLON, \T_CLOSE_TAG, \T_OPEN_CURLY_BRACKET], ($ptr + 1)); if ($endOfStatement !== false) { // Don't throw the same error multiple times for multi-property declarations. $skipTo = ($endOfStatement + 1); } } } }