PHP_CodeSniffer icon indicating copy to clipboard operation
PHP_CodeSniffer copied to clipboard

Auto fix of Squiz.Formatting.OperatorBracket.MissingBrackets is incorrect when working with ?? operator

Open leonidasmi opened this issue 2 years ago • 0 comments

Describe the bug

The autofixer fixes the Squiz.Formatting.OperatorBracket.MissingBrackets in a specific case with the ?? operator by malrforming the existing logic:

Instead of bracketing the whole statement, it brackets part of it, thus changing the behavior of the affecting line

Code sample

'test' => $foo->prop ?? 'test_' . $bar,

becomes

'test' => ($foo->prop ?? 'test_') . $bar,

although it should have become

'test' => ($foo->prop ?? 'test_' . $bar),

if I'm not completely mistaken

To reproduce

Steps to reproduce the behavior:

  1. Create a file called test.php with the code sample above
  2. Run the autofixer
  3. Verify that you get changed behavior in the changed code.

Versions (please complete the following information)

Operating System Windows 10]
PHP version 7.4.3
PHP_CodeSniffer version [e.g., 3.5.5, master]
Standard Squiz]

Additional context

Add any other context about the problem here.

Please confirm:

  • [x] I have searched the issue list and am not opening a duplicate issue.
  • [x] I confirm that this bug is a bug in PHP_CodeSniffer and not in one of the external standards.
  • [x] I have verified the issue still exists in the master branch of PHP_CodeSniffer.

leonidasmi avatar Nov 25 '23 12:11 leonidasmi