diff --git a/src/Standards/PSR1/Sniffs/Files/SideEffectsSniff.php b/src/Standards/PSR1/Sniffs/Files/SideEffectsSniff.php index 7ddcdf5267..12508fad4c 100644 --- a/src/Standards/PSR1/Sniffs/Files/SideEffectsSniff.php +++ b/src/Standards/PSR1/Sniffs/Files/SideEffectsSniff.php @@ -151,6 +151,12 @@ private function searchForConflict($phpcsFile, $start, $end, $tokens) ) { if (isset($tokens[$i]['scope_opener']) === true) { $i = $tokens[$i]['scope_closer']; + if ($tokens[$i]['code'] === T_ENDDECLARE) { + $semicolon = $phpcsFile->findNext(Tokens::$emptyTokens, ($i + 1), null, true); + if ($semicolon !== false && $tokens[$semicolon]['code'] === T_SEMICOLON) { + $i = $semicolon; + } + } } else { $semicolon = $phpcsFile->findNext(T_SEMICOLON, ($i + 1)); if ($semicolon !== false) { diff --git a/src/Standards/PSR1/Tests/Files/SideEffectsUnitTest.1.inc b/src/Standards/PSR1/Tests/Files/SideEffectsUnitTest.1.inc index e78824cd13..fdfd9b0985 100644 --- a/src/Standards/PSR1/Tests/Files/SideEffectsUnitTest.1.inc +++ b/src/Standards/PSR1/Tests/Files/SideEffectsUnitTest.1.inc @@ -10,9 +10,13 @@ use SomethingElse; declare(ticks=1); declare(ticks=1) { - // Code. + echo $i; } +declare(ticks=1) : + echo $i; +enddeclare; + define("MAXSIZE", 100); if (defined('MINSIZE') === false) { define("MINSIZE", 10); diff --git a/src/Tokenizers/PHP.php b/src/Tokenizers/PHP.php index 94eae962f6..31c81af66f 100644 --- a/src/Tokenizers/PHP.php +++ b/src/Tokenizers/PHP.php @@ -160,8 +160,14 @@ class PHP extends Tokenizer 'with' => [], ], T_DECLARE => [ - 'start' => [T_OPEN_CURLY_BRACKET => T_OPEN_CURLY_BRACKET], - 'end' => [T_CLOSE_CURLY_BRACKET => T_CLOSE_CURLY_BRACKET], + 'start' => [ + T_OPEN_CURLY_BRACKET => T_OPEN_CURLY_BRACKET, + T_COLON => T_COLON, + ], + 'end' => [ + T_CLOSE_CURLY_BRACKET => T_CLOSE_CURLY_BRACKET, + T_ENDDECLARE => T_ENDDECLARE, + ], 'strict' => false, 'shared' => false, 'with' => [],