Skip to content

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

Open
@leonidasmi

Description

@leonidasmi

Duplicated from here, as requested.

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:

  • I have searched the issue list and am not opening a duplicate issue.
  • 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