Skip to content

Generic/InlineControlStructure: small bug when fixing a control structure without body #599

Closed as not planned
@rodrigoprimo

Description

@rodrigoprimo

Describe the bug

The Generic.ControlStructures.InlineControlStructure sniff removes a newline from the code when adding braces to an inline control structure without body and with a trailing comment.

Code sample

if ($emptyBody); // comment

$unrelatedCode = 1;

To reproduce

Steps to reproduce the behavior:

  1. Create a file called test.php with the code sample above.
  2. Run phpcbf --standard=Generic --sniffs=Generic.ControlStructures.InlineControlStructure test.php
  3. Check the modified file

Expected behavior

I would expect the modified file to be:

if ($emptyBody) { 
// comment
}

$unrelatedCode = 1;

But instead it is:

if ($emptyBody) { 
// comment
}
$unrelatedCode = 1;

Note there is no newline between the if and the variable assignment.

Versions (please complete the following information)

Operating System Ubuntu 24.04
PHP version 8.3
PHP_CodeSniffer version master
Standard Generic
Install type git clone

Additional context

I found this while working on finalizing the items discussed in #482 (review), specifically the sections about commits 6 and 7. I can work on a PR to fix this small issue. Since @jrfnl mentioned the current behavior of the sniff regarding how to handle inline control structures without body, I'm not planning to change it anymore as I did in commit 6 or remove part of the fixer code as I did in commit 7.

Please confirm

  • I have searched the issue list and am not opening a duplicate issue.
  • I have read the Contribution Guidelines and this is not a support question.
  • I confirm that this bug is a bug in PHP_CodeSniffer and not in one of the external standards.
  • I have verified the issue still exists in the master branch of PHP_CodeSniffer.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions