diff --git a/src/Standards/Squiz/Sniffs/Arrays/ArrayDeclarationSniff.php b/src/Standards/Squiz/Sniffs/Arrays/ArrayDeclarationSniff.php index 9cd419822d..05861c91ff 100644 --- a/src/Standards/Squiz/Sniffs/Arrays/ArrayDeclarationSniff.php +++ b/src/Standards/Squiz/Sniffs/Arrays/ArrayDeclarationSniff.php @@ -378,6 +378,7 @@ public function processMultiLineArray($phpcsFile, $stackPtr, $arrayStart, $array if ($tokens[$nextToken]['code'] === T_ARRAY || $tokens[$nextToken]['code'] === T_OPEN_SHORT_ARRAY + || $tokens[$nextToken]['code'] === T_STATIC || $tokens[$nextToken]['code'] === T_CLOSURE || $tokens[$nextToken]['code'] === T_FN || $tokens[$nextToken]['code'] === T_MATCH @@ -388,6 +389,10 @@ public function processMultiLineArray($phpcsFile, $stackPtr, $arrayStart, $array $lastToken = $nextToken; } + if ($tokens[$nextToken]['code'] === T_STATIC) { + $nextToken = $phpcsFile->findNext(Tokens::$emptyTokens, ($nextToken + 1), null, true); + } + if ($tokens[$nextToken]['code'] === T_ARRAY) { $nextToken = $tokens[$tokens[$nextToken]['parenthesis_opener']]['parenthesis_closer']; } else if ($tokens[$nextToken]['code'] === T_OPEN_SHORT_ARRAY) { @@ -651,12 +656,6 @@ public function processMultiLineArray($phpcsFile, $stackPtr, $arrayStart, $array ]; $ignoreTokens += Tokens::$castTokens; - if ($tokens[$valuePointer]['code'] === T_CLOSURE - || $tokens[$valuePointer]['code'] === T_FN - ) { - $ignoreTokens += [T_STATIC => T_STATIC]; - } - $previous = $phpcsFile->findPrevious($ignoreTokens, ($valuePointer - 1), ($arrayStart + 1), true); if ($previous === false) { $previous = $stackPtr; diff --git a/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.1.inc b/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.1.inc index 5b539a372a..098a7c9d18 100644 --- a/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.1.inc +++ b/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.1.inc @@ -535,3 +535,10 @@ $x = array( 'a', 'b', ); + +$x = array( + 1, static fn (float $item): float => match ($item) { + 2.0 => 3.0, + default => $item + }, + ); diff --git a/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.1.inc.fixed b/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.1.inc.fixed index 5ebf715024..a1da4ca58b 100644 --- a/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.1.inc.fixed +++ b/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.1.inc.fixed @@ -571,3 +571,11 @@ $x = array( 'a', 'b', ); + +$x = array( + 1, + static fn (float $item): float => match ($item) { + 2.0 => 3.0, + default => $item + }, + ); diff --git a/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.2.inc b/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.2.inc index 7bcc5e044e..1781dfd602 100644 --- a/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.2.inc +++ b/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.2.inc @@ -524,3 +524,10 @@ $x = [ 'a', 'b', ]; + +$x = [ + 1, static fn (float $item): float => match ($item) { + 2.0 => 3.0, + default => $item + }, + ]; diff --git a/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.2.inc.fixed b/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.2.inc.fixed index d156357c93..d8a8631516 100644 --- a/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.2.inc.fixed +++ b/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.2.inc.fixed @@ -558,3 +558,11 @@ $x = [ 'a', 'b', ]; + +$x = [ + 1, + static fn (float $item): float => match ($item) { + 2.0 => 3.0, + default => $item + }, + ]; diff --git a/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.php b/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.php index 6ec80af373..858be0b061 100644 --- a/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.php +++ b/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.php @@ -134,6 +134,7 @@ public function getErrorList($testFile='') 523 => 1, 530 => 1, 537 => 1, + 540 => 1, ]; case 'ArrayDeclarationUnitTest.2.inc': return [ @@ -225,6 +226,7 @@ public function getErrorList($testFile='') 512 => 1, 519 => 1, 526 => 1, + 529 => 1, ]; default: return [];