Skip to content

Commit 3365738

Browse files
committed
PHP 8.3 | Generic/ScopeIndent: bug fix - missing defensive coding
As of PHP 8.3, PHP will throw a `Warning: Decrement on type bool has no effect, this will change in the next major version of PHP` notice. A test run with PHP 8.3 showed this deprecation notice being thrown in the `Generic.WhiteSpace.ScopeIndent` sniff. Investigation of the notice showed that this was actually a bug due to too little defensive coding. The sniff tries to skip over multi-line/multi-token text strings, but the `findNext()` will return `false` for a single-line/single-token text string, which would lead to `$i` being reset to `0`. This commit fixes this by only changing `$i` when the return from the call to `findNext()` is not `false`. Ref: https://wiki.php.net/rfc/saner-inc-dec-operators
1 parent b0d171b commit 3365738

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

src/Standards/Generic/Sniffs/WhiteSpace/ScopeIndentSniff.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1090,8 +1090,11 @@ public function process(File $phpcsFile, $stackPtr)
10901090
if ($tokens[$i]['code'] === T_CONSTANT_ENCAPSED_STRING
10911091
|| $tokens[$i]['code'] === T_DOUBLE_QUOTED_STRING
10921092
) {
1093-
$i = $phpcsFile->findNext($tokens[$i]['code'], ($i + 1), null, true);
1094-
$i--;
1093+
$nextNonTextString = $phpcsFile->findNext($tokens[$i]['code'], ($i + 1), null, true);
1094+
if ($nextNonTextString !== false) {
1095+
$i = ($nextNonTextString - 1);
1096+
}
1097+
10951098
continue;
10961099
}
10971100

0 commit comments

Comments
 (0)