Skip to content

Generic.WhiteSpace.ScopeIndent false positive with nested match-es #110

@andrey-yantsen

Description

@andrey-yantsen

Describe the bug

The ScopeIndent sniff suggests a quite strange indentation when processing multi-nested match-statements

// It's a copy of my bug report from the old repo (squizlabs/PHP_CodeSniffer#3875)
// Thank you, Juliette, for an amazing initiative in keeping the project going!

Code sample

<?php echo match (1) { 0 => match (2) { 2 => match (3) { 3 => 3, default => -1, }, }, 1 => match (2) { 1 => match (3) { 3 => 3, default => -1, }, 2 => match (3) { 3 => 3, default => -1, }, }, };

How that code will look if formatted as suggested

<?php echo match (1) { 0 => match (2) { 2 => match (3) { 3 => 3, default => -1, }, }, 1 => match (2) { 1 => match (3) { 3 => 3, default => -1, }, 2 => match (3) { 3 => 3, default => -1, }, }, };

Custom ruleset

N/A — reproducible with PSR12

To reproduce

Steps to reproduce the behavior:

  1. Create a file called test.php with the code sample above
  2. Run phpcs -s --standard=psr12 test.php
  3. See errors displayed
------------------------------------------------------------------------------------------------------------------------------ FOUND 4 ERRORS AFFECTING 4 LINES ------------------------------------------------------------------------------------------------------------------------------ 15 | ERROR | [x] Line indented incorrectly; expected at least 12 spaces, found 8 | | (Generic.WhiteSpace.ScopeIndent.Incorrect) 16 | ERROR | [x] Line indented incorrectly; expected at least 16 spaces, found 12 | | (Generic.WhiteSpace.ScopeIndent.Incorrect) 17 | ERROR | [x] Line indented incorrectly; expected at least 16 spaces, found 12 | | (Generic.WhiteSpace.ScopeIndent.Incorrect) 18 | ERROR | [x] Line indented incorrectly; expected 12 spaces, found 8 (Generic.WhiteSpace.ScopeIndent.IncorrectExact) ------------------------------------------------------------------------------------------------------------------------------ PHPCBF CAN FIX THE 4 MARKED SNIFF VIOLATIONS AUTOMATICALLY ------------------------------------------------------------------------------------------------------------------------------ 

Expected behavior

No indentation errors.

Versions (please complete the following information)

Operating System macOS 12.5
PHP version 8.0
PHP_CodeSniffer version 3.9.0
Standard PSR2
Install type Local composer

Additional context

none

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

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions