|
10 | 10 | namespace WordPressVIPMinimum\Sniffs\Security; |
11 | 11 |
|
12 | 12 | use PHP_CodeSniffer\Util\Tokens; |
| 13 | +use PHPCSUtils\Tokens\Collections; |
| 14 | +use PHPCSUtils\Utils\Arrays; |
13 | 15 | use WordPressCS\WordPress\AbstractFunctionParameterSniff; |
14 | 16 |
|
15 | 17 | /** |
@@ -55,15 +57,20 @@ public function process_parameters( $stackPtr, $group_name, $matched_content, $p |
55 | 57 | $next_start_ptr = $openBracket + 1; |
56 | 58 | for ( $i = 0; $i < 3; $i++ ) { |
57 | 59 | $param_ptr = $this->phpcsFile->findNext( array_merge( Tokens::$emptyTokens, [ T_COMMA ] ), $next_start_ptr, null, true ); |
| 60 | + if ( $param_ptr === false ) { |
| 61 | + // Live coding or parse error. Ignore. |
| 62 | + return; |
| 63 | + } |
58 | 64 |
|
59 | | - if ( $this->tokens[ $param_ptr ]['code'] === T_ARRAY ) { |
60 | | - $openBracket = $this->phpcsFile->findNext( Tokens::$emptyTokens, $param_ptr + 1, null, true ); |
61 | | - if ( $this->tokens[ $openBracket ]['code'] !== T_OPEN_PARENTHESIS ) { |
| 65 | + if ( isset( Collections::arrayOpenTokensBC()[ $this->tokens[ $param_ptr ]['code'] ] ) ) { |
| 66 | + $arrayOpenClose = Arrays::getOpenClose( $this->phpcsFile, $param_ptr ); |
| 67 | + if ( $arrayOpenClose === false ) { |
| 68 | + // Short list, parse error or live coding, bow out. |
62 | 69 | return; |
63 | 70 | } |
64 | 71 |
|
65 | | - // Find the closing bracket. |
66 | | - $closeBracket = $this->tokens[ $openBracket ]['parenthesis_closer']; |
| 72 | + $openBracket = $arrayOpenClose['opener']; |
| 73 | + $closeBracket = $arrayOpenClose['closer']; |
67 | 74 |
|
68 | 75 | $array_item_ptr = $this->phpcsFile->findNext( array_merge( Tokens::$emptyTokens, [ T_COMMA ] ), $openBracket + 1, $closeBracket, true ); |
69 | 76 | while ( $array_item_ptr !== false ) { |
|
0 commit comments