From bb94db03188b90e144fe91c7f4baaa00dd64ffa4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kuba=20Wer=C5=82os?= Date: Fri, 4 Nov 2022 18:11:42 +0100 Subject: [PATCH] bug: TrailingCommaInMultilineFixer - do not add trailing comma when there is no break line after last element (#6677) --- ...tilineWhitespaceAroundDoubleArrowFixer.php | 2 +- .../TrailingCommaInMultilineFixer.php | 16 ++++++---------- tests/AutoReview/FixerFactoryTest.php | 1 - .../TrailingCommaInMultilineFixerTest.php | 19 ++++++++++++------- ...ble_arrow,trailing_comma_in_multiline.test | 13 ------------- 5 files changed, 19 insertions(+), 32 deletions(-) delete mode 100644 tests/Fixtures/Integration/priority/no_multiline_whitespace_around_double_arrow,trailing_comma_in_multiline.test diff --git a/src/Fixer/ArrayNotation/NoMultilineWhitespaceAroundDoubleArrowFixer.php b/src/Fixer/ArrayNotation/NoMultilineWhitespaceAroundDoubleArrowFixer.php index f9583cbf408..a8e98aac003 100644 --- a/src/Fixer/ArrayNotation/NoMultilineWhitespaceAroundDoubleArrowFixer.php +++ b/src/Fixer/ArrayNotation/NoMultilineWhitespaceAroundDoubleArrowFixer.php @@ -42,7 +42,7 @@ public function getDefinition(): FixerDefinitionInterface /** * {@inheritdoc} * - * Must run before BinaryOperatorSpacesFixer, MethodArgumentSpaceFixer, TrailingCommaInMultilineFixer. + * Must run before BinaryOperatorSpacesFixer, MethodArgumentSpaceFixer. */ public function getPriority(): int { diff --git a/src/Fixer/ControlStructure/TrailingCommaInMultilineFixer.php b/src/Fixer/ControlStructure/TrailingCommaInMultilineFixer.php index 5a49a9238ce..bf01228cf02 100644 --- a/src/Fixer/ControlStructure/TrailingCommaInMultilineFixer.php +++ b/src/Fixer/ControlStructure/TrailingCommaInMultilineFixer.php @@ -86,16 +86,6 @@ public function getDefinition(): FixerDefinitionInterface ); } - /** - * {@inheritdoc} - * - * Must run after NoMultilineWhitespaceAroundDoubleArrowFixer. - */ - public function getPriority(): int - { - return 0; - } - /** * {@inheritdoc} */ @@ -201,6 +191,9 @@ private function fixBlock(Tokens $tokens, int $startIndex): void $endIndex = $tokens->findBlockEnd($blockType['type'], $startIndex); $beforeEndIndex = $tokens->getPrevMeaningfulToken($endIndex); + if (!$tokens->isPartialCodeMultiline($beforeEndIndex, $endIndex)) { + return; + } $beforeEndToken = $tokens[$beforeEndIndex]; // if there is some item between braces then add `,` after it @@ -242,6 +235,9 @@ private function fixMatch(Tokens $tokens, int $index): void } $previousIndex = $tokens->getPrevMeaningfulToken($closeIndex); + if (!$tokens->isPartialCodeMultiline($previousIndex, $closeIndex)) { + return; + } if (!$tokens[$previousIndex]->equals(',')) { $tokens->insertAt($previousIndex + 1, new Token(',')); diff --git a/tests/AutoReview/FixerFactoryTest.php b/tests/AutoReview/FixerFactoryTest.php index 4691cdf03e5..2a380a2bb69 100644 --- a/tests/AutoReview/FixerFactoryTest.php +++ b/tests/AutoReview/FixerFactoryTest.php @@ -560,7 +560,6 @@ private static function getFixersPriorityGraph(): array 'no_multiline_whitespace_around_double_arrow' => [ 'binary_operator_spaces', 'method_argument_space', - 'trailing_comma_in_multiline', ], 'no_php4_constructor' => [ 'ordered_class_elements', diff --git a/tests/Fixer/ControlStructure/TrailingCommaInMultilineFixerTest.php b/tests/Fixer/ControlStructure/TrailingCommaInMultilineFixerTest.php index 0d783ed3549..8ffe2b642c2 100644 --- a/tests/Fixer/ControlStructure/TrailingCommaInMultilineFixerTest.php +++ b/tests/Fixer/ControlStructure/TrailingCommaInMultilineFixerTest.php @@ -80,19 +80,15 @@ public static function provideFixCases(): array [" [TrailingCommaInMultilineFixer::ELEMENTS_ARRAYS]], ], [ - " [TrailingCommaInMultilineFixer::ELEMENTS_ARGUMENTS]], ], [ @@ -440,13 +436,13 @@ function a() ['elements' => [TrailingCommaInMultilineFixer::ELEMENTS_ARGUMENTS]], ], [ - " [TrailingCommaInMultilineFixer::ELEMENTS_ARGUMENTS]], ], [ - " [TrailingCommaInMultilineFixer::ELEMENTS_ARGUMENTS]], ], [ @@ -653,5 +649,14 @@ public static function provideFix80Cases(): iterable ', ['elements' => ['match']], ]; + + yield 'match with last comma in the same line as closing brace' => [ + ' 0, + 2 => 1 }; + ', + null, + ['elements' => ['match']], + ]; } } diff --git a/tests/Fixtures/Integration/priority/no_multiline_whitespace_around_double_arrow,trailing_comma_in_multiline.test b/tests/Fixtures/Integration/priority/no_multiline_whitespace_around_double_arrow,trailing_comma_in_multiline.test deleted file mode 100644 index 91e13f02f31..00000000000 --- a/tests/Fixtures/Integration/priority/no_multiline_whitespace_around_double_arrow,trailing_comma_in_multiline.test +++ /dev/null @@ -1,13 +0,0 @@ ---TEST-- -Integration of fixers: no_multiline_whitespace_around_double_arrow,trailing_comma_in_multiline. ---RULESET-- -{"no_multiline_whitespace_around_double_arrow": true, "trailing_comma_in_multiline": true} ---EXPECT-- - 'a'); - ---INPUT-- - - -'a');