Skip to content

Commit c4f7853

Browse files
committed
Feat: Reconfigure TrailingCommaInMultilineFixer in accordance with PER2.0 (part of #94)
1 parent 652527e commit c4f7853

File tree

3 files changed

+57
-6
lines changed

3 files changed

+57
-6
lines changed

Diff for: ecs.php

+6-6
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,6 @@
148148
use SlevomatCodingStandard\Sniffs\ControlStructures\RequireNullSafeObjectOperatorSniff;
149149
use SlevomatCodingStandard\Sniffs\Exceptions\ReferenceThrowableOnlySniff;
150150
use SlevomatCodingStandard\Sniffs\Functions\RequireTrailingCommaInCallSniff;
151-
use SlevomatCodingStandard\Sniffs\Functions\RequireTrailingCommaInDeclarationSniff;
152151
use SlevomatCodingStandard\Sniffs\TypeHints\ParameterTypeHintSniff;
153152
use SlevomatCodingStandard\Sniffs\TypeHints\PropertyTypeHintSniff;
154153
use SlevomatCodingStandard\Sniffs\TypeHints\ReturnTypeHintSniff;
@@ -233,8 +232,6 @@
233232
SingleLineEmptyBodyFixer::class, // Defined in PER 2.0
234233
// Values separated by a comma on a single line should not have a trailing comma.
235234
NoTrailingCommaInSinglelineFixer::class,
236-
// Multi-line arrays, arguments list and parameters list must have a trailing comma
237-
TrailingCommaInMultilineFixer::class,
238235
// Arrays should be formatted like function/method arguments
239236
TrimArraySpacesFixer::class,
240237
// In array declaration, there MUST be a whitespace after each comma
@@ -420,10 +417,8 @@
420417
ParameterTypeHintSniff::class,
421418
ReturnTypeHintSniff::class,
422419

423-
// Multi-line arguments list in function/method declaration must have a trailing comma
424-
RequireTrailingCommaInDeclarationSniff::class,
425420
// Multi-line arguments list in function/method call must have a trailing comma
426-
RequireTrailingCommaInCallSniff::class,
421+
RequireTrailingCommaInCallSniff::class, // TODO: will be redundant after https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/pull/7989 is merged and released
427422

428423
// Use `null-safe` operator `?->` where possible
429424
RequireNullSafeObjectOperatorSniff::class,
@@ -550,6 +545,11 @@
550545
FunctionDeclarationFixer::class,
551546
['closure_fn_spacing' => 'none'], // Defined in PER 2.0
552547
)
548+
// Multi-line arrays, arguments list and parameters list must have a trailing comma
549+
->withConfiguredRule(
550+
TrailingCommaInMultilineFixer::class,
551+
['after_heredoc' => true, 'elements' => ['arguments', 'arrays', 'match', 'parameters']], // Defined in PER 2.0
552+
)
553553
->withSkip([
554554
// We allow empty catch statements (but they must have comment - see EmptyCatchCommentSniff)
555555
EmptyStatementSniff::class . '.DetectedCatch' => null,

Diff for: tests/Integration/Fixtures/Basic.correct.php.inc

+25
Original file line numberDiff line numberDiff line change
@@ -108,4 +108,29 @@ class Basic
108108
public function emptyFunction2(
109109
$arg,
110110
): void {} // SingleLineEmptyBodyFixer
111+
112+
// TrailingCommaInMultilineFixer
113+
public function multiline(
114+
$arg1,
115+
$arg2,
116+
$arg3,
117+
): void {
118+
// TrailingCommaInMultilineFixer
119+
$isSet = isset(
120+
$arg1,
121+
$arg2,
122+
$arg3,
123+
);
124+
125+
$sprintf = sprintf(
126+
'%s%s',
127+
'bar',
128+
'baz',
129+
);
130+
131+
foo(
132+
1,
133+
2,
134+
);
135+
}
111136
}

Diff for: tests/Integration/Fixtures/Basic.wrong.php.inc

+26
Original file line numberDiff line numberDiff line change
@@ -107,4 +107,30 @@ class Basic
107107
$arg
108108
): void {
109109
} // SingleLineEmptyBodyFixer
110+
111+
// TrailingCommaInMultilineFixer
112+
public function multiline(
113+
$arg1,
114+
$arg2,
115+
$arg3
116+
): void
117+
{
118+
// TrailingCommaInMultilineFixer
119+
$isSet = isset(
120+
$arg1,
121+
$arg2,
122+
$arg3
123+
);
124+
125+
$sprintf = sprintf(
126+
'%s%s',
127+
'bar',
128+
'baz'
129+
);
130+
131+
foo(
132+
1,
133+
2
134+
);
135+
}
110136
}

0 commit comments

Comments
 (0)