Skip to content

PEAR FunctionCallSignature checks wrong indent when first token on line is part of a multi-line string #813

@phlopsi

Description

@phlopsi

I have tested this with the current master branch (last commit: ab7e490)

I have 2 examples showing what the sniffer/fixer is doing wrong. The first example is actually fine according to PSR-2, as far as I know.

test_0.php:

<?php if (true) { $test = '  ' . function_0( $argument_0 ); }
$ phpcs --standard=PSR2 test_0.php FILE: C:\[...]\test_0.php ---------------------------------------------------------------------- FOUND 2 ERRORS AFFECTING 2 LINES ---------------------------------------------------------------------- 5 | ERROR | [x] Multi-line function call not indented correctly; | | expected 7 spaces but found 8 6 | ERROR | [x] Multi-line function call not indented correctly; | | expected 3 spaces but found 4 ---------------------------------------------------------------------- PHPCBF CAN FIX THE 2 MARKED SNIFF VIOLATIONS AUTOMATICALLY ---------------------------------------------------------------------- 

Result after "fixing":

<?php if (true) { $test = ' ' . function_0( $argument_0 ); } 

As you can see, it indents according to the closing single quote instead of the indentation from the variable $test, anything after that is correctly formatted, though.

The second example goes a bit farther than the first one and leads to an endless fixing loop, not fixing anything in that file, in the end.

test_1.php

<?php if (true) { if (true) { $test = '  ' . function_0( $argument_0 ); } }
$ phpcs --standard=PSR2 test_1.php FILE: C:\[...]\test_1.php ---------------------------------------------------------------------- FOUND 2 ERRORS AFFECTING 2 LINES ---------------------------------------------------------------------- 6 | ERROR | [x] Multi-line function call not indented correctly; | | expected 7 spaces but found 12 7 | ERROR | [x] Multi-line function call not indented correctly; | | expected 3 spaces but found 8 ---------------------------------------------------------------------- PHPCBF CAN FIX THE 2 MARKED SNIFF VIOLATIONS AUTOMATICALLY ---------------------------------------------------------------------- 
$ phpcbf --no-patch --standard=PSR2 test_1.php Changing into directory C:\[...] Processing test_1.php [PHP => 43 tokens in 9 lines]... DONE in 5ms (2 fixable violations) => Fixing file: 1/2 violations remaining [made 50 passes]... ERROR in 123ms Fixed 0 files 

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions