Commit bfff5aa
authored
Fix phpcbf conflict on anonymous class bodies in ConsistentIndent (#68)
PhpCollective.WhiteSpace.ConsistentIndent and the bundled
Generic.WhiteSpace.ScopeIndent disagreed on the expected indent of an
anonymous class body when the class is passed as an argument to a
multi-line function call, e.g.:
return new Service(
new class ($payload) extends Base {
public function foo(): void {}
},
);
The class scope opens inside an unclosed parenthesis, so the body carries
one continuation indent level. getExpectedIndent() only counts scope
conditions and misses it, so ConsistentIndent dedented the body while
ScopeIndent re-indented it. phpcbf then oscillated until it hit the loop
limit and reported "FAILED TO FIX" (exit 7), leaving the file unfixable.
Defer to ScopeIndent for anonymous class bodies, the same way closures
and arrays are already skipped, by adding an isInsideAnonClass() guard.1 parent f4a80d6 commit bfff5aa
3 files changed
Lines changed: 69 additions & 0 deletions
File tree
- PhpCollective/Sniffs/WhiteSpace
- tests/_data/ConsistentIndent
Lines changed: 35 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
77 | 77 | | |
78 | 78 | | |
79 | 79 | | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
80 | 83 | | |
81 | 84 | | |
82 | 85 | | |
| |||
482 | 485 | | |
483 | 486 | | |
484 | 487 | | |
| 488 | + | |
| 489 | + | |
| 490 | + | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
| 497 | + | |
| 498 | + | |
| 499 | + | |
| 500 | + | |
| 501 | + | |
| 502 | + | |
| 503 | + | |
| 504 | + | |
| 505 | + | |
| 506 | + | |
| 507 | + | |
| 508 | + | |
| 509 | + | |
| 510 | + | |
| 511 | + | |
| 512 | + | |
| 513 | + | |
| 514 | + | |
| 515 | + | |
| 516 | + | |
| 517 | + | |
| 518 | + | |
| 519 | + | |
485 | 520 | | |
486 | 521 | | |
487 | 522 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
108 | 108 | | |
109 | 109 | | |
110 | 110 | | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
111 | 128 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
108 | 108 | | |
109 | 109 | | |
110 | 110 | | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
111 | 128 | | |
0 commit comments