PHPCSStandards / PHP_CodeSniffer

PHP_CodeSniffer tokenizes PHP files and detects violations of a defined set of coding standards.
BSD 3-Clause "New" or "Revised" License
937 stars 56 forks source link

Fix conflict within PSR12.ControlStructures.ControlStructureSpacing #581

Closed fredden closed 1 month ago

fredden commented 3 months ago

Description

While looking into a fixer conflict for the PSR12 standard regarding the src/Standards/Squiz/Tests/ControlStructures/ForLoopDeclarationUnitTest.1.inc file, it was noted that the fixer for PSR12.ControlStructures.ControlStructureSpacing was conflicting with itself.

For multi-line control structures, the first line of code must be on the next line after the control structure. This sniff correctly identified such cases. When the first line of code was on the same line as the control structure, the sniff correctly fixed this by adding a newline between these. However, when there were multiple blank lines between these, the fixer would continue adding new newlines.

This change fixes this bug by first removing all white-space before adding the one expected newline. Includes test.

Suggested changelog entry

PSR12.ControlStructures.ControlStructureSpacing: correctly handle multiple empty newlines between the start of a multi-line control structure and the next line of code.

Related issues/external references

152

Types of changes

PR checklist