Commit 837e602
Generic/ForLoopWithTestFunctionCall: fix E_DEPRECATED error
This commit fixes an issue in the sniff that could result in the following E_DEPRECATED
error when running PHP 8.3:
```
Decrement on type null has no effect, this will change in the next major version of PHP
src/Standards/Generic/Sniffs/CodeAnalysis/ForLoopWithTestFunctionCall.php:69
```
This sniff relies on finding the position of the open and closing
parentheses for a given `for` loop. However, the problem was that there was
no defensive code for cases when the closing parenthesis is missing. The
sniff would still work when running PHP >= 8.2, but on PHP 8.3 it would
throw the deprecated message above.
This would happen because since there is no closing parenthesis `$end` is set to null,
and $next <= $end always evaluates to false
(https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/84acf4e56f110db8e75cb9a575c5727df637643c/src/Standards/Generic/Sniffs/CodeAnalysis/ForLoopWithTestFunctionCallSniff.php#L73).
The issue was fixed by bailing early if the closing parenthesis is
missing. A test with a `for` loop without the closing parenthesis was added.1 parent 6e61c85 commit 837e602
File tree
2 files changed
+7
-1
lines changed- src/Standards/Generic
- Sniffs/CodeAnalysis
- Tests/CodeAnalysis
2 files changed
+7
-1
lines changedLines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
61 | 61 | | |
62 | 62 | | |
63 | 63 | | |
64 | | - | |
| 64 | + | |
65 | 65 | | |
66 | 66 | | |
67 | 67 | | |
| |||
Lines changed: 6 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
0 commit comments