From fff9d825827f355ba38c463c98344b50e1cae056 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Bundyra?= Date: Mon, 4 Mar 2024 20:56:18 +0000 Subject: [PATCH] Follow-up #369 - Squiz.Arrays.ArrayDeclaration for static --- .../Squiz/Sniffs/Arrays/ArrayDeclarationSniff.php | 15 ++++++++++----- .../Tests/Arrays/ArrayDeclarationUnitTest.1.inc | 5 +++++ .../Arrays/ArrayDeclarationUnitTest.1.inc.fixed | 7 +++++++ .../Tests/Arrays/ArrayDeclarationUnitTest.2.inc | 5 +++++ .../Arrays/ArrayDeclarationUnitTest.2.inc.fixed | 7 +++++++ .../Tests/Arrays/ArrayDeclarationUnitTest.php | 2 ++ 6 files changed, 36 insertions(+), 5 deletions(-) diff --git a/src/Standards/Squiz/Sniffs/Arrays/ArrayDeclarationSniff.php b/src/Standards/Squiz/Sniffs/Arrays/ArrayDeclarationSniff.php index 05861c91ff..89cd7bd57f 100644 --- a/src/Standards/Squiz/Sniffs/Arrays/ArrayDeclarationSniff.php +++ b/src/Standards/Squiz/Sniffs/Arrays/ArrayDeclarationSniff.php @@ -378,7 +378,6 @@ 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 @@ -389,10 +388,6 @@ 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) { @@ -656,6 +651,16 @@ public function processMultiLineArray($phpcsFile, $stackPtr, $arrayStart, $array ]; $ignoreTokens += Tokens::$castTokens; + if ($tokens[$valuePointer]['code'] === T_CLOSURE + || $tokens[$valuePointer]['code'] === T_FN + ) { + // Check if the closure is static, if it is, override the value pointer as indices before skip static. + $staticPointer = $phpcsFile->findPrevious($ignoreTokens, ($valuePointer - 1), ($arrayStart + 1), true); + if ($staticPointer !== false && $tokens[$staticPointer]['code'] === T_STATIC) { + $valuePointer = $staticPointer; + } + } + $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 098a7c9d18..cdbfff6c33 100644 --- a/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.1.inc +++ b/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.1.inc @@ -542,3 +542,8 @@ $x = array( default => $item }, ); + +$x = array( + 1, static::helloWorld(), $class instanceof static, + 2, + ); diff --git a/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.1.inc.fixed b/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.1.inc.fixed index a1da4ca58b..6f8fe216a3 100644 --- a/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.1.inc.fixed +++ b/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.1.inc.fixed @@ -579,3 +579,10 @@ $x = array( default => $item }, ); + +$x = array( + 1, + static::helloWorld(), + $class instanceof static, + 2, + ); diff --git a/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.2.inc b/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.2.inc index 1781dfd602..90b026f023 100644 --- a/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.2.inc +++ b/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.2.inc @@ -531,3 +531,8 @@ $x = [ default => $item }, ]; + +$x = [ + 1, static::helloWorld(), $class instanceof static, + 2, + ]; diff --git a/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.2.inc.fixed b/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.2.inc.fixed index d8a8631516..533be16a65 100644 --- a/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.2.inc.fixed +++ b/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.2.inc.fixed @@ -566,3 +566,10 @@ $x = [ default => $item }, ]; + +$x = [ + 1, + static::helloWorld(), + $class instanceof static, + 2, + ]; diff --git a/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.php b/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.php index 858be0b061..b34044b2d2 100644 --- a/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.php +++ b/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.php @@ -135,6 +135,7 @@ public function getErrorList($testFile='') 530 => 1, 537 => 1, 540 => 1, + 547 => 2, ]; case 'ArrayDeclarationUnitTest.2.inc': return [ @@ -227,6 +228,7 @@ public function getErrorList($testFile='') 519 => 1, 526 => 1, 529 => 1, + 536 => 2, ]; default: return [];