Describe the bug
While working on #482, I found two issues in the Generic.ControlStructures.InlineControlStructure sniff when fixing some do-while statements that contain syntax errors.
Code sample
Code sample 1:
<?php
// missing semicolon and nothing but empty tokens after the while closing parenthesis
foreach ($array as $item)
do {
echo $i;
$i++;
} while ($i < 5)
Code sample 2:
<?php
// missing semicolon after while condition and non-empty tokens after it
foreach ($array as $item)
do {
echo $i;
$i++;
} while ($i < 5)
if ($test)
echo 'test';
To reproduce
Steps to reproduce the behavior:
- Create a file called
test.php with one of the code samples above.
- Run
phpcbf --standard=Generic --sniffs=Generic.ControlStructures.InlineControlStructure test.php
- Check the modified files.
Modified code sample 1 (note the semicolon and closing curly bracket added after the PHP opening tag):
<?php
;
}
// missing semicolon and nothing but empty tokens after the while closing parenthesis
foreach ($array as $item) {
do {
echo $i;
$i++;
} while ($i < 5)
Modified code sample 2 (note the curly bracket added after the while closing parenthesis and after the if statement):
<?php
// missing semicolon after while condition and non-empty tokens after it
foreach ($array as $item) {
do {
echo $i;
$i++;
} while ($i < 5) {
if ($test) {
echo 'test';
}
}
}
Expected behavior
I would expect PHPCS to detect the syntax error in both cases (missing semicolon after while closing parenthesis) and to bail instead of attempting to fix the code sample, introducing even more problems.
Versions (please complete the following information)
|
|
| Operating System |
Ubuntu 23.10 |
| PHP version |
8.3 |
| PHP_CodeSniffer version |
master |
| Standard |
Generic |
| Install type |
git clone |
Please confirm
Describe the bug
While working on #482, I found two issues in the Generic.ControlStructures.InlineControlStructure sniff when fixing some do-while statements that contain syntax errors.
Code sample
Code sample 1:
Code sample 2:
To reproduce
Steps to reproduce the behavior:
test.phpwith one of the code samples above.phpcbf --standard=Generic --sniffs=Generic.ControlStructures.InlineControlStructure test.phpModified code sample 1 (note the semicolon and closing curly bracket added after the PHP opening tag):
Modified code sample 2 (note the curly bracket added after the while closing parenthesis and after the if statement):
Expected behavior
I would expect PHPCS to detect the syntax error in both cases (missing semicolon after while closing parenthesis) and to bail instead of attempting to fix the code sample, introducing even more problems.
Versions (please complete the following information)
Please confirm
masterbranch of PHP_CodeSniffer.