From 0ca40e0b2090676fea460a4cde23c0688810795e Mon Sep 17 00:00:00 2001 From: Mark Scherer Date: Thu, 6 Aug 2026 15:38:56 +0200 Subject: [PATCH] Fix remaining falsy index guards and cache the unary lookup NoIsNull still skipped a call that opens a file. findPrevious() returns index 0 for the open tag, and `if (!$possibleCastIndex)` treats that as not found, so `findPrevious(T_WHITESPACE, ($stackPtr - 1), null, true); - if (!$possibleCastIndex) { + if ($possibleCastIndex === false) { return; } @@ -156,7 +156,7 @@ protected function leadRequiresBrackets(File $phpcsFile, int $index): bool $tokens = $phpcsFile->getTokens(); $previous = $phpcsFile->findPrevious(T_WHITESPACE, ($index - 1), null, true); - if (!$previous) { + if ($previous === false) { return false; } @@ -247,7 +247,7 @@ protected function hasLeadingComparison(File $phpcsFile, int $stackPtr): bool { $previous = $phpcsFile->findPrevious(T_WHITESPACE, ($stackPtr - 1), null, true); - if (!$previous) { + if ($previous === false) { return false; } diff --git a/PhpCollective/Sniffs/WhiteSpace/ImplicitCastSpacingSniff.php b/PhpCollective/Sniffs/WhiteSpace/ImplicitCastSpacingSniff.php index 32d1b74..37496d6 100644 --- a/PhpCollective/Sniffs/WhiteSpace/ImplicitCastSpacingSniff.php +++ b/PhpCollective/Sniffs/WhiteSpace/ImplicitCastSpacingSniff.php @@ -88,35 +88,39 @@ protected function isUnaryOperator(File $phpcsFile, int $stackPtr): bool return true; } - $unaryPrefixes = Tokens::$operators - + Tokens::$assignmentTokens - + Tokens::$comparisonTokens - + Tokens::$booleanOperators - + Tokens::$castTokens - + [ - T_OPEN_PARENTHESIS => T_OPEN_PARENTHESIS, - T_OPEN_SQUARE_BRACKET => T_OPEN_SQUARE_BRACKET, - T_OPEN_SHORT_ARRAY => T_OPEN_SHORT_ARRAY, - T_OPEN_CURLY_BRACKET => T_OPEN_CURLY_BRACKET, - T_COMMA => T_COMMA, - T_SEMICOLON => T_SEMICOLON, - T_COLON => T_COLON, - T_DOUBLE_ARROW => T_DOUBLE_ARROW, - T_INLINE_THEN => T_INLINE_THEN, - T_INLINE_ELSE => T_INLINE_ELSE, - T_RETURN => T_RETURN, - T_ECHO => T_ECHO, - T_PRINT => T_PRINT, - T_CASE => T_CASE, - T_BOOLEAN_NOT => T_BOOLEAN_NOT, - T_YIELD => T_YIELD, - T_YIELD_FROM => T_YIELD_FROM, - T_THROW => T_THROW, - T_FN_ARROW => T_FN_ARROW, - T_MATCH_ARROW => T_MATCH_ARROW, - T_OPEN_TAG => T_OPEN_TAG, - T_OPEN_TAG_WITH_ECHO => T_OPEN_TAG_WITH_ECHO, - ]; + static $unaryPrefixes = null; + + if ($unaryPrefixes === null) { + $unaryPrefixes = Tokens::$operators + + Tokens::$assignmentTokens + + Tokens::$comparisonTokens + + Tokens::$booleanOperators + + Tokens::$castTokens + + [ + T_OPEN_PARENTHESIS => T_OPEN_PARENTHESIS, + T_OPEN_SQUARE_BRACKET => T_OPEN_SQUARE_BRACKET, + T_OPEN_SHORT_ARRAY => T_OPEN_SHORT_ARRAY, + T_OPEN_CURLY_BRACKET => T_OPEN_CURLY_BRACKET, + T_COMMA => T_COMMA, + T_SEMICOLON => T_SEMICOLON, + T_COLON => T_COLON, + T_DOUBLE_ARROW => T_DOUBLE_ARROW, + T_INLINE_THEN => T_INLINE_THEN, + T_INLINE_ELSE => T_INLINE_ELSE, + T_RETURN => T_RETURN, + T_ECHO => T_ECHO, + T_PRINT => T_PRINT, + T_CASE => T_CASE, + T_BOOLEAN_NOT => T_BOOLEAN_NOT, + T_YIELD => T_YIELD, + T_YIELD_FROM => T_YIELD_FROM, + T_THROW => T_THROW, + T_FN_ARROW => T_FN_ARROW, + T_MATCH_ARROW => T_MATCH_ARROW, + T_OPEN_TAG => T_OPEN_TAG, + T_OPEN_TAG_WITH_ECHO => T_OPEN_TAG_WITH_ECHO, + ]; + } return isset($unaryPrefixes[$tokens[$previousIndex]['code']]); }